Vilyam888 commited on
Commit
9a86355
·
verified ·
1 Parent(s): 7eec37b

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +126 -93
README.md CHANGED
@@ -15,30 +15,31 @@ tags:
15
 
16
  # Broken_Code_Generation1.0
17
 
18
- `Broken_Code_Generation1.0` - это смерженная дообученная версия `Qwen/Qwen2.5-Coder-3B-Instruct`.
19
 
20
- Модель предназначена для генерации **ML bugfix-задач** в **строгом JSON-формате**, похожем на формат датасета, на котором она дообучалась.
21
 
22
- Если простыми словами: ты подаешь модели **3 тега** и **уровень сложности**, а на выходе получаешь **одну готовую задачу по программированию** с контекстом, тестами, требованиями, ограничениями и сломанным кодом, который нужно исправить.
23
 
24
  Built with Qwen.
25
 
26
- ## Что модель принимает на вход
27
 
28
- На вход подается:
29
 
30
  - ровно 3 тега
31
- - один уровень сложности: `easy`, `medium` или `hard`
32
 
33
- На выходе модель должна вернуть:
34
 
35
- - один JSON-объект в формате датасета
36
  - без Markdown
37
- - без лишних пояснений
 
38
 
39
- ## Формат ответа
40
 
41
- Ожидается JSON-объект со следующими полями:
42
 
43
  - `id`
44
  - `title`
@@ -53,66 +54,40 @@ Built with Qwen.
53
  - `constraints`
54
  - `broken_code`
55
 
56
- ## Для чего подходит модель
57
 
58
- - генерация синтетических ML bugfix-задач
59
- - подготовка примеров для обучения и оценки
60
- - сборка учебных датасетов по программированию
61
- - проверка качества структурированной генерации
62
- - работа в связке с `Code Analyze`, когда нужно сначала проанализировать код, а затем сгенерировать задачу или сценарий исправления в том же стиле
63
 
64
- ## Совместимость с Code Analyze
65
-
66
- Эту модель можно использовать вместе с `Code Analyze`.
67
-
68
- Практически это выглядит так:
69
-
70
- - `Code Analyze` разбирает код, находит проблемный участок или формирует краткое описание ошибки
71
- - затем эта модель по тегам и сложности генерирует структурированную ML bugfix-задачу в JSON-формате
72
- - такой сценарий удобен для учебных пайплайнов, генерации примеров и полуавтоматической подготовки задач
73
-
74
- ## Понятный пример инференса
75
-
76
- Самый простой способ запустить модель в этом проекте:
77
-
78
- ```powershell
79
- .\.venv\Scripts\python.exe .\HF_Release\infer_merged_model.py --tag1 TabularData --tag2 Statistics --tag3 DataPreprocessing --difficulty medium
80
- ```
81
-
82
- Что делает эта команда:
83
-
84
- - загружает смерженную модель
85
- - передает ей 3 тега и сложность `medium`
86
- - сохраняет готовый JSON в `HF_Release/inference_output/generated_task.json`
87
- - сохраняет сырой текст ответа в `HF_Release/inference_output/raw_output.txt`
88
-
89
- Если хочешь другой пример, можно запускать так:
90
-
91
- ```powershell
92
- .\.venv\Scripts\python.exe .\HF_Release\infer_merged_model.py --tag1 Classification --tag2 Evaluation --tag3 Metrics --difficulty hard
93
- ```
94
-
95
- ### Что можно менять
96
-
97
- - `--tag1`, `--tag2`, `--tag3` - любые 3 нужных тега
98
- - `--difficulty` - `easy`, `medium` или `hard`
99
-
100
- Если используешь модель вместе с `Code Analyze`, обычно удобно:
101
-
102
- - сначала получить краткий анализ или описание проблемы
103
- - потом выбрать 3 подходящих тега
104
- - затем вызвать генерацию задачи с нужной сложностью
105
 
106
- ### Если нужен запуск через Python и `transformers`
107
 
108
- Ниже более прямой пример без вспомогательного скрипта:
109
 
110
  ```python
111
  import json
112
- import torch
113
  from transformers import AutoModelForCausalLM, AutoTokenizer
 
 
 
114
 
115
- model_path = "Vilyam888/Broken_Code_Generation1.0"
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  SYSTEM_PROMPT = (
118
  "Ты генерируешь новую ML bugfix-задачу строго в формате объектов из датасета. "
@@ -154,23 +129,6 @@ messages = [
154
  },
155
  ]
156
 
157
- tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
158
- if tokenizer.pad_token is None:
159
- tokenizer.pad_token = tokenizer.eos_token
160
- tokenizer.padding_side = "left"
161
-
162
- dtype = torch.bfloat16 if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else (
163
- torch.float16 if torch.cuda.is_available() else torch.float32
164
- )
165
-
166
- model = AutoModelForCausalLM.from_pretrained(
167
- model_path,
168
- torch_dtype=dtype,
169
- device_map="auto",
170
- trust_remote_code=True,
171
- )
172
- model.eval()
173
-
174
  prompt = tokenizer.apply_chat_template(
175
  messages,
176
  tokenize=False,
@@ -195,28 +153,102 @@ completion = tokenizer.decode(completion_tokens, skip_special_tokens=True).strip
195
  print(completion)
196
  ```
197
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  ## Как лучше формулировать запрос
199
 
200
- Модель обычно работает лучше, если:
201
 
202
  - давать ровно 3 тега
203
  - явно указывать сложность
204
- - просить ровно один JSON-объект
205
- - отдельно уточнять, что не нужно добавлять Markdown и комментарии
 
 
 
 
 
 
 
 
 
206
 
207
  ## Кратко об обучении
208
 
209
  - Базовая модель: `Qwen/Qwen2.5-Coder-3B-Instruct`
210
  - Метод дообучения: `QLoRA`
211
- - Тип итоговой модели: merged-модель после вливания LoRA-адаптера в базовую
212
- - Целевая задача: структурированная генерация ML bugfix-задач
213
-
214
- ## Ограничения
215
-
216
- - модель все еще может иногда выдавать неполный или невалидный JSON
217
- - качество заметно зависит от формулировки промпта
218
- - возможны повторы по стилю и структуре задач
219
- - перед использованием в датасете, бенчмарке или учебном продукте генерации стоит просматривать вручную
220
 
221
  ## Что лежит в репозитории
222
 
@@ -232,14 +264,15 @@ print(completion)
232
 
233
  Этот репозиторий является производной работой от `Qwen/Qwen2.5-Coder-3B-Instruct`.
234
 
235
- Базовая модель распространяется по лицензии `Qwen RESEARCH LICENSE AGREEMENT`. Hugging Face лицензия `license: other`.
236
 
237
  Важно:
238
 
239
  - лицензия Qwen ориентирована на research / non-commercial использование
240
- - для коммерческого использования нужно отдельно внимательно проверить условия исходной лицензии
241
  - при распространении нужно сохранять `LICENSE` и `NOTICE`
242
 
243
  ## Атрибуция
244
 
245
  Improved using Qwen.
 
 
15
 
16
  # Broken_Code_Generation1.0
17
 
18
+ `Broken_Code_Generation1.0` - это модель для генерации задач по программированию в стиле ML bugfix.
19
 
20
+ Если совсем просто: ты задаешь **3 тега** и **сложность**, а модель возвращает **одну готовую задачу** в JSON-формате: с названием, контекстом, тестами, требованиями, ограничениями и сломанным кодом, который нужно исправить.
21
 
22
+ Модель основана на `Qwen/Qwen2.5-Coder-3B-Instruct`, была дообучена через `QLoRA`, а затем смержена в полноценную модель для инференса и публикации.
23
 
24
  Built with Qwen.
25
 
26
+ ## Что делает модель
27
 
28
+ Модель принимает:
29
 
30
  - ровно 3 тега
31
+ - одну сложность: `easy`, `medium` или `hard`
32
 
33
+ И возвращает:
34
 
35
+ - один JSON-объект
36
  - без Markdown
37
+ - без дополнительных пояснений
38
+ - в формате, похожем на обучающий датасет
39
 
40
+ ## Что будет в ответе
41
 
42
+ На выходе ожидается JSON с такими полями:
43
 
44
  - `id`
45
  - `title`
 
54
  - `constraints`
55
  - `broken_code`
56
 
57
+ ## Где модель полезна
58
 
59
+ Эта модель подойдет, если тебе нужно:
 
 
 
 
60
 
61
+ - генерировать новые ML bugfix-задачи
62
+ - собирать учебные примеры для студентов
63
+ - делать синтетические данные для обучения и тестирования
64
+ - быстро получать задачи в одном и том же структурированном формате
65
+ - использовать ее вместе с анализом кода
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
+ ## Основное подключение
68
 
69
+ Подключение через `transformers` напрямую:
70
 
71
  ```python
72
  import json
 
73
  from transformers import AutoModelForCausalLM, AutoTokenizer
74
+ import torch
75
+
76
+ model_path = "Vilyam888/Broken_Code_Generation.1.0"
77
 
78
+ tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
79
+ if tokenizer.pad_token is None:
80
+ tokenizer.pad_token = tokenizer.eos_token
81
+ tokenizer.padding_side = "left"
82
+
83
+ model = AutoModelForCausalLM.from_pretrained(
84
+ model_path,
85
+ torch_dtype=torch.bfloat16 if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else (
86
+ torch.float16 if torch.cuda.is_available() else torch.float32
87
+ ),
88
+ device_map="auto",
89
+ trust_remote_code=True,
90
+ )
91
 
92
  SYSTEM_PROMPT = (
93
  "Ты генерируешь новую ML bugfix-задачу строго в формате объектов из датасета. "
 
129
  },
130
  ]
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  prompt = tokenizer.apply_chat_template(
133
  messages,
134
  tokenize=False,
 
153
  print(completion)
154
  ```
155
 
156
+ После этого модели нужно передать:
157
+
158
+ - 3 тега
159
+ - сложность `easy`, `medium` или `hard`
160
+ - промпт с просьбой вернуть один JSON-объект
161
+
162
+ Если нужен более простой запуск именно внутри этого проекта, ниже есть второй вариант через готовый скрипт.
163
+
164
+ Если говорить совсем коротко: для обычного подключения другим людям достаточно `transformers`, `torch` и имени репозитория:
165
+
166
+ - `Vilyam888/Broken_Code_Generation.1.0`
167
+
168
+ ## Основной инференс в проекте
169
+
170
+ Самый простой и понятный способ запуска в этом проекте:
171
+
172
+ ```powershell
173
+ .\.venv\Scripts\python.exe .\HF_Release\infer_merged_model.py --tag1 TabularData --tag2 Statistics --tag3 DataPreprocessing --difficulty medium
174
+ ```
175
+
176
+ Что произойдет после запуска:
177
+
178
+ - загрузится смерженная модель
179
+ - в модель передадутся 3 тега и сложность
180
+ - модель сгенерирует задачу
181
+ - готовый JSON сохранится в `HF_Release/inference_output/generated_task.json`
182
+ - сырой текст ответа сохранится в `HF_Release/inference_output/raw_output.txt`
183
+
184
+ Еще один пример:
185
+
186
+ ```powershell
187
+ .\.venv\Scripts\python.exe .\HF_Release\infer_merged_model.py --tag1 Classification --tag2 Evaluation --tag3 Metrics --difficulty hard
188
+ ```
189
+
190
+ ## Что можно менять
191
+
192
+ В основной команде ты обычно меняешь только это:
193
+
194
+ - `--tag1`, `--tag2`, `--tag3` - любые 3 нужных тега
195
+ - `--difficulty` - `easy`, `medium` или `hard`
196
+
197
+ Например, если хочешь другую генерацию, просто подстав��яешь другие значения в ту же команду.
198
+
199
+ ## Как это работает
200
+
201
+ Внутри все довольно просто:
202
+
203
+ 1. из трех тегов собирается `topic_tags`
204
+ 2. в промпт подставляются теги и сложность
205
+ 3. модель генерирует текст
206
+ 4. из текста извлекается JSON
207
+ 5. JSON сохраняется в итоговый файл
208
+
209
+ То есть в обычной работе тебе не нужно менять код модели. Достаточно менять входные теги и сложность.
210
+
211
+ ## Совместимость с Code Analyze
212
+
213
+ Эта модель хорошо работает в связке с [`Vilyam888/Code_analyze.1.0`](https://huggingface.co/Vilyam888/Code_analyze.1.0).
214
+
215
+ Удобный сценарий такой:
216
+
217
+ 1. `Code_analyze.1.0` анализирует код и определяет тип ошибки
218
+ 2. по этому анализу выбираются подходящие теги
219
+ 3. `Broken_Code_Generation1.0` генерирует новую bugfix-задачу в нужном формате
220
+
221
+ Это удобно для:
222
+
223
+ - учебных пайплайнов
224
+ - генерации новых примеров
225
+ - полуавтоматической подготовки задач
226
+ - систем, где сначала анализируется решение, а потом создается похожая задача на закрепление
227
+
228
  ## Как лучше формулировать запрос
229
 
230
+ Модель обычно отвечает лучше, если:
231
 
232
  - давать ровно 3 тега
233
  - явно указывать сложность
234
+ - просить вернуть ровно один JSON-объект
235
+ - отдельно писать, что не нужно добавлять Markdown и пояснения
236
+
237
+ ## Ограничения
238
+
239
+ Важно помнить:
240
+
241
+ - модель все еще может иногда выдавать неполный JSON
242
+ - качество зависит от промпта и параметров генерации
243
+ - иногда ответы могут быть стилистически похожими друг на друга
244
+ - генерации лучше просматривать вручную перед использованием в важном датасете или продукте
245
 
246
  ## Кратко об обучении
247
 
248
  - Базовая модель: `Qwen/Qwen2.5-Coder-3B-Instruct`
249
  - Метод дообучения: `QLoRA`
250
+ - Итоговая версия: merged-модель после вливания LoRA-адаптера в базовую
251
+ - Целевая задача: генерация структурированных ML bugfix-задач
 
 
 
 
 
 
 
252
 
253
  ## Что лежит в репозитории
254
 
 
264
 
265
  Этот репозиторий является производной работой от `Qwen/Qwen2.5-Coder-3B-Instruct`.
266
 
267
+ Базовая модель распространяется по лицензии `Qwen RESEARCH LICENSE AGREEMENT`. На Hugging Face для этой модели используется `license: other`.
268
 
269
  Важно:
270
 
271
  - лицензия Qwen ориентирована на research / non-commercial использование
272
+ - для коммерческого использования нужно отдельно проверить условия исходной лицензии
273
  - при распространении нужно сохранять `LICENSE` и `NOTICE`
274
 
275
  ## Атрибуция
276
 
277
  Improved using Qwen.
278
+