162 lines
5.5 KiB
Markdown
162 lines
5.5 KiB
Markdown
---
|
||
library_name: transformers
|
||
license: apache-2.0
|
||
base_model: Qwen/Qwen2.5-Coder-3B-Instruct
|
||
pipeline_tag: text-generation
|
||
inference: true
|
||
tags:
|
||
- code
|
||
- code-analysis
|
||
- qwen
|
||
- qwen2
|
||
- text-generation
|
||
- transformers
|
||
- fine-tuned
|
||
widget:
|
||
- 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"
|
||
example_title: "Анализ кода - сумма списка"
|
||
- 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"
|
||
example_title: "Анализ кода - факториал"
|
||
---
|
||
|
||
# Code Analyzer Model
|
||
|
||
Fine-tuned версия модели Qwen2.5-Coder-3B-Instruct для анализа кода студента на основе условия задачи (for Machine Learning tasks).
|
||
|
||
## Описание модели
|
||
|
||
Эта модель предназнаечена для анализа кода студента. Модель принимает:
|
||
- **Условие задачи** (текстовое описание)
|
||
- **Код решения студента** (Python код)
|
||
|
||
И возвращает детальный анализ в формате JSON, включающий:
|
||
- Оценку правильности решения
|
||
- Анализ соответствия требованиям задачи
|
||
- Оценку качества кода
|
||
- Сильные и слабые стороны решения
|
||
- Рекомендации по улучшению
|
||
- Детальный анализ с обоснованием
|
||
|
||
Модель основана на Qwen2.5-Coder-3B-Instruct и дообучена с использованием LoRA (Low-Rank Adaptation).
|
||
|
||
## Быстрый старт
|
||
|
||
### Вариант 1: Использование локально (Python)
|
||
|
||
**Установка зависимостей:**
|
||
```bash
|
||
pip install transformers torch
|
||
```
|
||
|
||
**Простой пример использования:**
|
||
```python
|
||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
import torch
|
||
import json
|
||
|
||
model_name = "Vilyam888/Code_analyze.1.0"
|
||
|
||
# Загрузка модели
|
||
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
|
||
model = AutoModelForCausalLM.from_pretrained(
|
||
model_name,
|
||
torch_dtype=torch.bfloat16,
|
||
device_map="auto",
|
||
trust_remote_code=True
|
||
)
|
||
|
||
# Условие задачи
|
||
task = "Напишите функцию, которая принимает список чисел и возвращает сумму всех элементов."
|
||
|
||
# Код студента
|
||
code = """def sum_list(numbers):
|
||
total = 0
|
||
for num in numbers:
|
||
total += num
|
||
return total"""
|
||
|
||
# Форматирование входа
|
||
input_text = f"Задача:\n{task}\n\nРешение (код):\n```python\n{code}\n```"
|
||
prompt = f"{input_text}\n\nОтвет:\n"
|
||
|
||
# Генерация анализа
|
||
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
||
with torch.no_grad():
|
||
outputs = model.generate(
|
||
**inputs,
|
||
max_new_tokens=1024,
|
||
temperature=0.7,
|
||
top_p=0.8,
|
||
top_k=20,
|
||
repetition_penalty=1.05,
|
||
do_sample=True
|
||
)
|
||
|
||
# Декодирование и парсинг JSON
|
||
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
||
result = response.split("Ответ:")[-1].strip()
|
||
analysis = json.loads(result)
|
||
|
||
print(json.dumps(analysis, ensure_ascii=False, indent=2))
|
||
```
|
||
|
||
**Или используйте готовые скрипты из репозитория:**
|
||
|
||
Простой пример (минимальный код):
|
||
```bash
|
||
python scripts/quick_start_example.py
|
||
```
|
||
|
||
Полный пример с интерактивным режимом:
|
||
```bash
|
||
python scripts/use_model_example.py
|
||
```
|
||
|
||
|
||
## Детали обучения
|
||
|
||
- **Базовая модель:** Qwen/Qwen2.5-Coder-3B-Instruct
|
||
- **Метод обучения:** LoRA (Low-Rank Adaptation)
|
||
- **Параметры LoRA:**
|
||
- `r`: 16
|
||
- `lora_alpha`: 32
|
||
- `lora_dropout`: 0.05
|
||
- **Фреймворк:** TRL (Transformer Reinforcement Learning)
|
||
- **Формат данных:** JSONL с полями `input` и `output`
|
||
|
||
## Ограничения
|
||
|
||
- Модель обучена на русском языке для анализа кода
|
||
- Может генерировать неточные или неполные ответы
|
||
- Требует GPU для эффективной работы
|
||
|
||
## Использование через API
|
||
|
||
Модель можно использовать через несколько способов:
|
||
|
||
### 1. Через transformers (Python)
|
||
```python
|
||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
```
|
||
|
||
### 2. Через Hugging Face Inference API
|
||
```python
|
||
import requests
|
||
API_URL = "https://api-inference.huggingface.co/models/Vilyam888/Code_analyze.1.0"
|
||
```
|
||
|
||
### 3. Через Gradio Space API
|
||
Если создан Gradio Space, можно использовать его API endpoint.
|
||
|
||
### 4. Интеграция в Backend проект
|
||
Примеры для FastAPI, Flask, Django, Node.js и других фреймворков.
|
||
|
||
|
||
## Лицензия
|
||
|
||
Apache 2.0
|
||
|
||
## Авторы
|
||
|
||
Fine-tuned by Vilyam888
|