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
| 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. | |