Vilyam888 commited on
Commit
3027781
·
verified ·
1 Parent(s): 3303d39

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +261 -266
README.md CHANGED
@@ -1,266 +1,261 @@
1
- ---
2
- library_name: transformers
3
- license: apache-2.0
4
- base_model: Qwen/Qwen2.5-Coder-3B-Instruct
5
- pipeline_tag: text-generation
6
- inference: true
7
- tags:
8
- - code
9
- - code-analysis
10
- - qwen
11
- - qwen2
12
- - text-generation
13
- - transformers
14
- - fine-tuned
15
- widget:
16
- - text: "Задача:\nНапишите функцию, которая принимает список чисел и возвращает сумму всех элементов.\n\nРешение (код):\n```python\ndef sum_list(numbers):\n total = 0\n for num in numbers:\n total += num\n return total\n```\n\nОтвет:\n"
17
- example_title: "Анализ кода - сумма списка"
18
- - text: "Задача:\nСоздайте функцию для вычисления факториала числа.\n\nРешение (код):\n```python\ndef factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)\n```\n\nОтвет:\n"
19
- example_title: "Анализ кода - факториал"
20
- ---
21
-
22
- # Code Analyzer Model
23
-
24
- Fine-tuned версия модели Qwen2.5-Coder-3B-Instruct для анализа кода студента на основе условия задачи.
25
-
26
- ## Описание модели
27
-
28
- Эта модель была обучена на датасете ITOG для анализа кода студента. Модель принимает:
29
- - **Условие задачи** (текстовое описание)
30
- - **Код решения студента** (Python код)
31
-
32
- И возвращает детальный анализ в формате JSON, включающий:
33
- - Оценку правильности решения
34
- - Анализ соответствия требованиям задачи
35
- - Оценку качества кода
36
- - Сильные и слабые стороны решения
37
- - Рекомендации по улучшению
38
- - Детальный анализ с обоснованием
39
-
40
- Модель основана на Qwen2.5-Coder-3B-Instruct и дообучена с использованием LoRA (Low-Rank Adaptation).
41
-
42
- ## Быстрый старт
43
-
44
- ### Вариант 1: Использование виджета на странице модели
45
-
46
- 1. Перейдите на страницу модели: https://huggingface.co/Vilyam888/Code_analyze.1.0
47
- 2. Прокрутите страницу вниз до раздела **"Hosted inference API"** или **"Widget"**
48
- 3. Введите ваш запрос в текстовое поле виджета
49
- 4. Нажмите "Compute" для получения ответа
50
-
51
- ### Вариант 1.5: Создайте Gradio Space (если Inference API недоступен)
52
-
53
- Если опция "Inference" не отображается в меню "Use this model", создайте интерактивный Gradio Space:
54
-
55
- **Быстрая инструкция:**
56
-
57
- 1. Перейдите на https://huggingface.co/spaces
58
- 2. Нажмите **"Create new Space"**
59
- 3. Заполните форму:
60
- - **Space name**: `code-analyzer-demo` (или любое другое)
61
- - **SDK**: выберите **Gradio**
62
- - **Hardware**: **CPU Basic** (бесплатно)
63
- - **Visibility**: **Public**
64
- 4. Нажмите **"Create Space"**
65
- 5. Загрузите файлы:
66
- - `app.py` (из этой модели)
67
- - `requirements_gradio.txt` → переименуйте в `requirements.txt`
68
- 6. Дождитесь автоматического запуска (2-5 минут)
69
- 7. Готово! Интерфейс будет доступен на странице Space
70
-
71
- **Подробная инструкция:** См. файл `GRADIO_SPACE_INSTRUCTIONS.md` в корне проекта
72
-
73
- ### Вариант 2: Использование локально (Python)
74
-
75
- **Установка зависимостей:**
76
- ```bash
77
- pip install transformers torch
78
- ```
79
-
80
- **Простой пример использования:**
81
- ```python
82
- from transformers import AutoModelForCausalLM, AutoTokenizer
83
- import torch
84
- import json
85
-
86
- model_name = "Vilyam888/Code_analyze.1.0"
87
-
88
- # Загрузка модели
89
- tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
90
- model = AutoModelForCausalLM.from_pretrained(
91
- model_name,
92
- torch_dtype=torch.bfloat16,
93
- device_map="auto",
94
- trust_remote_code=True
95
- )
96
-
97
- # Условие задачи
98
- task = "Напишите функцию, которая принимает список чисел и возвращает сумму всех элементов."
99
-
100
- # Код студента
101
- code = """def sum_list(numbers):
102
- total = 0
103
- for num in numbers:
104
- total += num
105
- return total"""
106
-
107
- # Форматирование входа
108
- input_text = f"Задача:\n{task}\n\nРешение (код):\n```python\n{code}\n```"
109
- prompt = f"{input_text}\n\nОтвет:\n"
110
-
111
- # Генерация анализа
112
- inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
113
- with torch.no_grad():
114
- outputs = model.generate(
115
- **inputs,
116
- max_new_tokens=1024,
117
- temperature=0.7,
118
- top_p=0.8,
119
- top_k=20,
120
- repetition_penalty=1.05,
121
- do_sample=True
122
- )
123
-
124
- # Декодирование и парсинг JSON
125
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
126
- result = response.split("Ответ:")[-1].strip()
127
- analysis = json.loads(result)
128
-
129
- print(json.dumps(analysis, ensure_ascii=False, indent=2))
130
- ```
131
-
132
- **Или используйте готовые скрипты из репозитория:**
133
-
134
- Простой пример (минимальный код):
135
- ```bash
136
- python scripts/quick_start_example.py
137
- ```
138
-
139
- Полный пример с интерактивным режимом:
140
- ```bash
141
- python scripts/use_model_example.py
142
- ```
143
-
144
- ## Использование
145
-
146
- ### С помощью transformers
147
-
148
- ```python
149
- from transformers import AutoModelForCausalLM, AutoTokenizer
150
- import torch
151
-
152
- model_name = "Vilyam888/Code_analyze.1.0"
153
-
154
- tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
155
- model = AutoModelForCausalLM.from_pretrained(
156
- model_name,
157
- torch_dtype=torch.bfloat16,
158
- device_map="auto",
159
- trust_remote_code=True
160
- )
161
-
162
- # Формат запроса
163
- prompt = "Проанализируй этот код:\ndef hello():\n print('Hello, World!')"
164
-
165
- # Форматирование в стиле обучения
166
- text = f"{prompt}\n\nОтвет:\n"
167
-
168
- inputs = tokenizer(text, return_tensors="pt").to(model.device)
169
-
170
- with torch.no_grad():
171
- outputs = model.generate(
172
- **inputs,
173
- max_new_tokens=512,
174
- temperature=0.7,
175
- top_p=0.8,
176
- top_k=20,
177
- repetition_penalty=1.05,
178
- do_sample=True
179
- )
180
-
181
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
182
- print(response)
183
- ```
184
-
185
- ### С помощью pipeline
186
-
187
- ```python
188
- from transformers import pipeline
189
-
190
- model_name = "Vilyam888/Code_analyze.1.0"
191
-
192
- generator = pipeline(
193
- "text-generation",
194
- model=model_name,
195
- tokenizer=model_name,
196
- trust_remote_code=True,
197
- device_map="auto"
198
- )
199
-
200
- prompt = "Объясни, что делает этот код:\ndef factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)"
201
- text = f"{prompt}\n\nОтвет:\n"
202
-
203
- result = generator(
204
- text,
205
- max_new_tokens=512,
206
- temperature=0.7,
207
- top_p=0.8,
208
- top_k=20,
209
- repetition_penalty=1.05,
210
- do_sample=True
211
- )
212
-
213
- print(result[0]["generated_text"])
214
- ```
215
-
216
- ## Детали обучения
217
-
218
- - **Базовая модель:** Qwen/Qwen2.5-Coder-3B-Instruct
219
- - **Метод обучения:** LoRA (Low-Rank Adaptation)
220
- - **Параметры LoRA:**
221
- - `r`: 16
222
- - `lora_alpha`: 32
223
- - `lora_dropout`: 0.05
224
- - **Фреймворк:** TRL (Transformer Reinforcement Learning)
225
- - **Формат данных:** JSONL с полями `input` и `output`
226
-
227
- ## Ограничения
228
-
229
- - Модель обучена на русском языке для анализа кода
230
- - Может генерировать неточные или неполные ответы
231
- - Требует GPU для эффективной работы
232
-
233
- ## Использование через API
234
-
235
- Модель можно использовать через несколько способов:
236
-
237
- ### 1. Через transformers (Python)
238
- ```python
239
- from transformers import AutoModelForCausalLM, AutoTokenizer
240
- # См. полные примеры в API_USAGE.md
241
- ```
242
-
243
- ### 2. Через Hugging Face Inference API
244
- ```python
245
- import requests
246
- API_URL = "https://api-inference.huggingface.co/models/Vilyam888/Code_analyze.1.0"
247
- # См. полные примеры в API_USAGE.md
248
- ```
249
-
250
- ### 3. Через Gradio Space API
251
- Если создан Gradio Space, можно использовать его API endpoint.
252
-
253
- ### 4. Интеграция в Backend проект
254
- Примеры для FastAPI, Flask, Django, Node.js и других фреймворков.
255
-
256
- **Подробная документация:**
257
- - `API_USAGE.md` - использование через Hugging Face API
258
- - `BACKEND_INTEGRATION.md` - интеграция в backend проекты
259
-
260
- ## Лицензия
261
-
262
- Apache 2.0
263
-
264
- ## Авторы
265
-
266
- Fine-tuned by Vilyam888
 
1
+ ---
2
+ library_name: transformers
3
+ license: apache-2.0
4
+ base_model: Qwen/Qwen2.5-Coder-3B-Instruct
5
+ pipeline_tag: text-generation
6
+ inference: true
7
+ tags:
8
+ - code
9
+ - code-analysis
10
+ - qwen
11
+ - qwen2
12
+ - text-generation
13
+ - transformers
14
+ - fine-tuned
15
+ widget:
16
+ - text: "Задача:\nНапишите функцию, которая принимает список чисел и возвращает сумму всех элементов.\n\nРешение (код):\n```python\ndef sum_list(numbers):\n total = 0\n for num in numbers:\n total += num\n return total\n```\n\nОтвет:\n"
17
+ example_title: "Анализ кода - сумма списка"
18
+ - text: "Задача:\nСоздайте функцию для вычисления факториала числа.\n\nРешение (код):\n```python\ndef factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)\n```\n\nОтвет:\n"
19
+ example_title: "Анализ кода - факториал"
20
+ ---
21
+
22
+ # Code Analyzer Model
23
+
24
+ Fine-tuned версия модели Qwen2.5-Coder-3B-Instruct для анализа кода студента на основе условия задачи.
25
+
26
+ ## Описание модели
27
+
28
+ Эта модель предназнаечена для анализа кода студента. Модель принимает:
29
+ - **Условие задачи** (текстовое описание)
30
+ - **Код решения студента** (Python код)
31
+
32
+ И возвращает детальный анализ в формате JSON, включающий:
33
+ - Оценку правильности решения
34
+ - Анализ соответствия требованиям задачи
35
+ - Оценку качества кода
36
+ - Сильные и слабые стороны решения
37
+ - Рекомендации по улучшению
38
+ - Детальный анализ с обоснованием
39
+
40
+ Модель основана на Qwen2.5-Coder-3B-Instruct и дообучена с использованием LoRA (Low-Rank Adaptation).
41
+
42
+ ## Быстрый старт
43
+
44
+ ### Вариант 1: Использование виджета на странице модели
45
+
46
+ 1. Перейдите на страницу модели: https://huggingface.co/Vilyam888/Code_analyze.1.0
47
+ 2. Прокрутите страницу вниз до раздела **"Hosted inference API"** или **"Widget"**
48
+ 3. Введите ваш запрос в текстовое поле виджета
49
+ 4. Нажмите "Compute" для получения ответа
50
+
51
+ ### Вариант 1.5: Создайте Gradio Space (если Inference API недоступен)
52
+
53
+ Если опция "Inference" не отображается в меню "Use this model", создайте интерактивный Gradio Space:
54
+
55
+ **Быстрая инструкция:**
56
+
57
+ 1. Перейдите на https://huggingface.co/spaces
58
+ 2. Нажмите **"Create new Space"**
59
+ 3. Заполните форму:
60
+ - **Space name**: `code-analyzer-demo` (или любое другое)
61
+ - **SDK**: выберите **Gradio**
62
+ - **Hardware**: **CPU Basic** (бесплатно)
63
+ - **Visibility**: **Public**
64
+ 4. Нажмите **"Create Space"**
65
+ 5. Загрузите файлы:
66
+ - `app.py` (из этой модели)
67
+ - `requirements_gradio.txt` → переименуйте в `requirements.txt`
68
+ 6. Дождитесь автоматического запуска (2-5 минут)
69
+ 7. Готово! Интерфейс будет доступен на странице Space
70
+
71
+
72
+
73
+ ### Вариант 2: Использование локально (Python)
74
+
75
+ **Установка зависимостей:**
76
+ ```bash
77
+ pip install transformers torch
78
+ ```
79
+
80
+ **Простой пример использования:**
81
+ ```python
82
+ from transformers import AutoModelForCausalLM, AutoTokenizer
83
+ import torch
84
+ import json
85
+
86
+ model_name = "Vilyam888/Code_analyze.1.0"
87
+
88
+ # Загрузка модели
89
+ tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
90
+ model = AutoModelForCausalLM.from_pretrained(
91
+ model_name,
92
+ torch_dtype=torch.bfloat16,
93
+ device_map="auto",
94
+ trust_remote_code=True
95
+ )
96
+
97
+ # Условие задачи
98
+ task = "Напишите функцию, которая принимает список чисел и возвращает сумму всех элементов."
99
+
100
+ # Код студента
101
+ code = """def sum_list(numbers):
102
+ total = 0
103
+ for num in numbers:
104
+ total += num
105
+ return total"""
106
+
107
+ # Форматирование входа
108
+ input_text = f"Задача:\n{task}\n\nРешение (код):\n```python\n{code}\n```"
109
+ prompt = f"{input_text}\n\nОтвет:\n"
110
+
111
+ # Генерация анализа
112
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
113
+ with torch.no_grad():
114
+ outputs = model.generate(
115
+ **inputs,
116
+ max_new_tokens=1024,
117
+ temperature=0.7,
118
+ top_p=0.8,
119
+ top_k=20,
120
+ repetition_penalty=1.05,
121
+ do_sample=True
122
+ )
123
+
124
+ # Декодирование и парсинг JSON
125
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
126
+ result = response.split("Ответ:")[-1].strip()
127
+ analysis = json.loads(result)
128
+
129
+ print(json.dumps(analysis, ensure_ascii=False, indent=2))
130
+ ```
131
+
132
+ **Или используйте готовые скрипты из репозитория:**
133
+
134
+ Простой пример (минимальный код):
135
+ ```bash
136
+ python scripts/quick_start_example.py
137
+ ```
138
+
139
+ П��лный пример с интерактивным режимом:
140
+ ```bash
141
+ python scripts/use_model_example.py
142
+ ```
143
+
144
+ ## Использование
145
+
146
+ ### С помощью transformers
147
+
148
+ ```python
149
+ from transformers import AutoModelForCausalLM, AutoTokenizer
150
+ import torch
151
+
152
+ model_name = "Vilyam888/Code_analyze.1.0"
153
+
154
+ tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
155
+ model = AutoModelForCausalLM.from_pretrained(
156
+ model_name,
157
+ torch_dtype=torch.bfloat16,
158
+ device_map="auto",
159
+ trust_remote_code=True
160
+ )
161
+
162
+ # Формат запроса
163
+ prompt = "Проанализируй этот код:\ndef hello():\n print('Hello, World!')"
164
+
165
+ # Форматирование в стиле обучения
166
+ text = f"{prompt}\n\nОтвет:\n"
167
+
168
+ inputs = tokenizer(text, return_tensors="pt").to(model.device)
169
+
170
+ with torch.no_grad():
171
+ outputs = model.generate(
172
+ **inputs,
173
+ max_new_tokens=512,
174
+ temperature=0.7,
175
+ top_p=0.8,
176
+ top_k=20,
177
+ repetition_penalty=1.05,
178
+ do_sample=True
179
+ )
180
+
181
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
182
+ print(response)
183
+ ```
184
+
185
+ ### С помощью pipeline
186
+
187
+ ```python
188
+ from transformers import pipeline
189
+
190
+ model_name = "Vilyam888/Code_analyze.1.0"
191
+
192
+ generator = pipeline(
193
+ "text-generation",
194
+ model=model_name,
195
+ tokenizer=model_name,
196
+ trust_remote_code=True,
197
+ device_map="auto"
198
+ )
199
+
200
+ prompt = "Объясни, что делает этот код:\ndef factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)"
201
+ text = f"{prompt}\n\nОтвет:\n"
202
+
203
+ result = generator(
204
+ text,
205
+ max_new_tokens=512,
206
+ temperature=0.7,
207
+ top_p=0.8,
208
+ top_k=20,
209
+ repetition_penalty=1.05,
210
+ do_sample=True
211
+ )
212
+
213
+ print(result[0]["generated_text"])
214
+ ```
215
+
216
+ ## Детали обучения
217
+
218
+ - **Базовая модель:** Qwen/Qwen2.5-Coder-3B-Instruct
219
+ - **Метод обучения:** LoRA (Low-Rank Adaptation)
220
+ - **Параметры LoRA:**
221
+ - `r`: 16
222
+ - `lora_alpha`: 32
223
+ - `lora_dropout`: 0.05
224
+ - **Фреймворк:** TRL (Transformer Reinforcement Learning)
225
+ - **Формат данных:** JSONL с полями `input` и `output`
226
+
227
+ ## Ограничения
228
+
229
+ - Модель обучена на русском языке для анализа кода
230
+ - Может генерировать неточные или неполные ответы
231
+ - Требует GPU для эффективной работы
232
+
233
+ ## Использование через API
234
+
235
+ Модель можно использовать через несколько способов:
236
+
237
+ ### 1. Через transformers (Python)
238
+ ```python
239
+ from transformers import AutoModelForCausalLM, AutoTokenizer
240
+ ```
241
+
242
+ ### 2. Через Hugging Face Inference API
243
+ ```python
244
+ import requests
245
+ API_URL = "https://api-inference.huggingface.co/models/Vilyam888/Code_analyze.1.0"
246
+ ```
247
+
248
+ ### 3. Через Gradio Space API
249
+ Если создан Gradio Space, можно использовать его API endpoint.
250
+
251
+ ### 4. Интеграция в Backend проект
252
+ Примеры для FastAPI, Flask, Django, Node.js и других фреймворков.
253
+
254
+
255
+ ## Лицензия
256
+
257
+ Apache 2.0
258
+
259
+ ## Авторы
260
+
261
+ Fine-tuned by Vilyam888