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
|