Text Generation
Transformers
Safetensors
qwen2
qwen
qwen2.5-coder
code
fine-tuned
russian
conversational
text-generation-inference
Instructions to use Vilyam888/Broken_Code_Generation.1.0 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Vilyam888/Broken_Code_Generation.1.0 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Vilyam888/Broken_Code_Generation.1.0") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Vilyam888/Broken_Code_Generation.1.0") model = AutoModelForCausalLM.from_pretrained("Vilyam888/Broken_Code_Generation.1.0") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Inference
- Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use Vilyam888/Broken_Code_Generation.1.0 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Vilyam888/Broken_Code_Generation.1.0" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vilyam888/Broken_Code_Generation.1.0", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Vilyam888/Broken_Code_Generation.1.0
- SGLang
How to use Vilyam888/Broken_Code_Generation.1.0 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Vilyam888/Broken_Code_Generation.1.0" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vilyam888/Broken_Code_Generation.1.0", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Vilyam888/Broken_Code_Generation.1.0" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vilyam888/Broken_Code_Generation.1.0", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Vilyam888/Broken_Code_Generation.1.0 with Docker Model Runner:
docker model run hf.co/Vilyam888/Broken_Code_Generation.1.0
File size: 12,329 Bytes
7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 15ff158 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 7eec37b 9a86355 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | ---
license: other
library_name: transformers
pipeline_tag: text-generation
base_model: Qwen/Qwen2.5-Coder-3B-Instruct
tags:
- qwen
- qwen2.5-coder
- transformers
- text-generation
- code
- fine-tuned
- russian
---
# Broken_Code_Generation1.0
`Broken_Code_Generation1.0` - это модель для генерации задач по программированию в стиле ML bugfix.
Если совсем просто: ты задаешь **3 тега** и **сложность**, а модель возвращает **одну готовую задачу** в JSON-формате: с названием, контекстом, тестами, требованиями, ограничениями и сломанным кодом, который нужно исправить.
Модель основана на `Qwen/Qwen2.5-Coder-3B-Instruct`, была дообучена через `QLoRA`, а затем смержена в полноценную модель для инференса и публикации.
Built with Qwen.
## Что делает модель
Модель принимает:
- ровно 3 тега
- одну сложность: `easy`, `medium` или `hard`
И возвращает:
- один JSON-объект
- без Markdown
- без дополнительных пояснений
- в формате, похожем на обучающий датасет
## Что будет в ответе
На выходе ожидается JSON с такими полями:
- `id`
- `title`
- `difficulty`
- `topic_tags`
- `task_context`
- `tests`
- `expected_output`
- `input_example`
- `output_example`
- `requirements`
- `constraints`
- `broken_code`
## Где модель полезна
Эта модель подойдет, если тебе нужно:
- генерировать новые ML bugfix-задачи
- собирать учебные примеры для студентов
- делать синтетические данные для обучения и тестирования
- быстро получать задачи в одном и том же структурированном формате
- использовать ее вместе с анализом кода
## Основное подключение
Подключение через `transformers` напрямую:
```python
import json
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_path = "Vilyam888/Broken_Code_Generation.1.0"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "left"
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.bfloat16 if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else (
torch.float16 if torch.cuda.is_available() else torch.float32
),
device_map="auto",
trust_remote_code=True,
)
SYSTEM_PROMPT = (
"Ты генерируешь новую ML bugfix-задачу строго в формате объектов из датасета. "
"Верни только один JSON-объект без Markdown и без пояснений. "
"Порядок полей должен быть ровно таким: "
"`title`, `difficulty`, `topic_tags`, `task_context`, `tests`, "
"`expected_output`, `input_example`, `output_example`, `requirements`, "
"`constraints`, `broken_code`. "
"`tests`, `requirements` и `constraints` должны быть массивами строк. "
"`broken_code` должен быть одной строкой с полным Python-кодом и символами `\\n`. "
"Не добавляй лишние поля и не обрывай JSON."
)
topic_tags = {
"TabularData": 0.4,
"Statistics": 0.3,
"DataPreprocessing": 0.3,
}
payload = {
"difficulty": "medium",
"topic_tags": topic_tags,
}
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{
"role": "user",
"content": (
"Сгенерируй новую ML bugfix-задачу по параметрам.\n"
"Формат должен совпадать со структурой датасета: "
"все поля обязательны, `tests`/`requirements`/`constraints` - это списки строк, "
"`broken_code` - полная строка кода с ошибками и комментариями `ВОТ ТУТ НУЖНО ИСПРАВИТЬ КОД`.\n"
"Поля должны идти в порядке: "
"title, difficulty, topic_tags, task_context, tests, expected_output, "
"input_example, output_example, requirements, constraints, broken_code.\n"
+ json.dumps(payload, ensure_ascii=False, indent=2)
),
},
]
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
prompt_length = inputs["input_ids"].shape[1]
with torch.no_grad():
output = model.generate(
**inputs,
max_new_tokens=1200,
temperature=0.7,
top_p=0.95,
do_sample=True,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
)
completion_tokens = output[0][prompt_length:]
completion = tokenizer.decode(completion_tokens, skip_special_tokens=True).strip()
print(completion)
```
После этого модели нужно передать:
- 3 тега
- сложность `easy`, `medium` или `hard`
- промпт с просьбой вернуть один JSON-объект
Для этой модели это важно: она обучена не на обычный разговорный чат, а на генерацию задач.
Поэтому хороший запрос для нее выглядит так:
- "Сгенерируй ML bugfix-задачу по таким тегам и такой сложности"
А вот запросы вроде:
- `Who are you?`
- `Hello`
- `Tell me a joke`
для этой модели не являются целевым сценарием и обычно не дают полезного результата.
Если нужен более простой запуск именно внутри этого проекта, ниже есть второй вариант через готовый скрипт.
Если говорить совсем коротко: для обычного подключения другим людям достаточно `transformers`, `torch` и имени репозитория:
- `Vilyam888/Broken_Code_Generation.1.0`
## Основной инференс в проекте
Самый простой и понятный способ запуска в этом проекте:
```powershell
.\.venv\Scripts\python.exe .\HF_Release\infer_merged_model.py --tag1 TabularData --tag2 Statistics --tag3 DataPreprocessing --difficulty medium
```
Что произойдет после запуска:
- загрузится смерженная модель
- в модель передадутся 3 тега и сложность
- модель сгенерирует задачу
- готовый JSON сохранится в `HF_Release/inference_output/generated_task.json`
- сырой текст ответа сохранится в `HF_Release/inference_output/raw_output.txt`
Еще один пример:
```powershell
.\.venv\Scripts\python.exe .\HF_Release\infer_merged_model.py --tag1 Classification --tag2 Evaluation --tag3 Metrics --difficulty hard
```
## Что можно менять
В основной команде ты обычно меняешь только это:
- `--tag1`, `--tag2`, `--tag3` - любые 3 нужных тега
- `--difficulty` - `easy`, `medium` или `hard`
Например, если хочешь другую генерацию, просто подставляешь другие значения в ту же команду.
## Как это работает
Внутри все довольно просто:
1. из трех тегов собирается `topic_tags`
2. в промпт подставляются теги и сложность
3. модель генерирует текст
4. из текста извлекается JSON
5. JSON сохраняется в итоговый файл
То есть в обычной работе тебе не нужно менять код модели. Достаточно менять входные теги и сложность.
## Совместимость с Code Analyze
Эта модель хорошо работает в связке с [`Vilyam888/Code_analyze.1.0`](https://huggingface.co/Vilyam888/Code_analyze.1.0).
Удобный сценарий такой:
1. `Code_analyze.1.0` анализирует код и определяет тип ошибки
2. по этому анализу выбираются подходящие теги
3. `Broken_Code_Generation1.0` генерирует новую bugfix-задачу в нужном формате
Это удобно для:
- учебных пайплайнов
- генерации новых примеров
- полуавтоматической подготовки задач
- систем, где сначала анализируется решение, а потом создается похожая задача на закрепление
## Как лучше формулировать запрос
Модель обычно отвечает лучше, если:
- давать ровно 3 тега
- явно указывать сложность
- просить вернуть ровно один JSON-объект
- отдельно писать, что не нужно добавлять Markdown и пояснения
## Ограничения
Важно помнить:
- модель все еще может иногда выдавать неполный JSON
- качество зависит от промпта и параметров генерации
- иногда ответы могут быть стилистически похожими друг на друга
- генерации лучше просматривать вручную перед использованием в важном датасете или продукте
## Кратко об обучении
- Базовая модель: `Qwen/Qwen2.5-Coder-3B-Instruct`
- Метод дообучения: `QLoRA`
- Итоговая версия: merged-модель после вливания LoRA-адаптера в базовую
- Целевая задача: генерация структурированных ML bugfix-задач
## Что лежит в репозитории
Главные файлы:
- шарды модели: `model-00001-of-00004.safetensors` ... `model-00004-of-00004.safetensors`
- файлы токенизатора
- `chat_template.jinja`
- `config.json`
- `generation_config.json`
## Лицензия
Этот репозиторий является производной работой от `Qwen/Qwen2.5-Coder-3B-Instruct`.
Базовая модель распространяется по лицензии `Qwen RESEARCH LICENSE AGREEMENT`. На Hugging Face для этой модели используется `license: other`.
Важно:
- лицензия Qwen ориентирована на research / non-commercial использование
- для коммерческого использования нужно отдельно проверить условия исходной лицензии
- при распространении нужно сохранять `LICENSE` и `NOTICE`
## Атрибуция
Improved using Qwen.
|