Files
lua-coder-qwen25-3b-gguf/README.md

120 lines
3.8 KiB
Markdown
Raw Normal View History

---
language:
- en
- ru
license: apache-2.0
base_model: Qwen/Qwen2.5-Coder-3B-Instruct
tags:
- lua
- code
- code-review
- gguf
- qwen2
library_name: llama-cpp-python
pipeline_tag: text-generation
---
# Lua Coder — Qwen 2.5 Coder 3B (GGUF)
Модель для написания, ревью и объяснения Lua-кода. Обучена на базе Qwen 2.5 Coder 3B Instruct с использованием QLoRA файнтюнинга.
## Возможности
- **Написание кода** — генерация Lua-функций, модулей, структур данных
- **Код-ревью** — анализ кода с выявлением багов (SQL injection, утечки переменных, проблемы производительности)
- **Агентское поведение** — задаёт 1-2 уточняющих вопроса перед написанием, если задача неоднозначная
- **Объяснение кода** — разбор сложного Lua-кода с пояснениями
## Примеры
**Написание кода:**
```
Запрос: Write a Lua event system with on, off, and emit methods.
Ответ:
local Event = {listeners = {}}
function Event:on(name, fn)
self.listeners[name] = self.listeners[name] or {}
table.insert(self.listeners[name], fn)
end
function Event:emit(name, ...)
for _, fn in ipairs(self.listeners[name] or {}) do fn(...) end
end
return Event
```
**Код-ревью:**
```
Запрос: Review this Lua code (SQL query with string concatenation)
Ответ: SQL Injection — используйте параметризованные запросы. Stale cache — очищайте кэш при ошибке.
```
**Агентское поведение:**
```
Запрос: I need a Lua save system for my game.
Ответ: Before I write the code, I have a couple questions:
1. Are you saving data to a file or a database?
2. Do you need to handle encryption for sensitive information?
```
## Параметры обучения
| Параметр | Значение |
|----------|----------|
| Базовая модель | Qwen 2.5 Coder 3B Instruct |
| Метод | QLoRA (4-bit) |
| LoRA rank | 128 |
| LoRA alpha | 256 |
| Learning rate | 8e-5 |
| Эпох | 3 |
| Оптимизатор | AdamW 8-bit |
| Квантизация GGUF | Q8_0 |
## Оптимизация
Гиперпараметры подобраны с помощью автоматизированного поиска (50 экспериментов). Лучшая конфигурация выбрана по минимальному val_loss.
## Использование
### Ollama
```bash
ollama run hf.co/kertpoli/lua-coder-qwen25-3b-gguf
```
### llama.cpp
```bash
./llama-server -m lua-coder-q8_0.gguf -ngl 99 -c 1024 --port 8091
```
### Python (llama-cpp-python)
```python
from llama_cpp import Llama
llm = Llama(model_path="lua-coder-q8_0.gguf", n_gpu_layers=-1, n_ctx=1024)
result = llm.create_chat_completion(
messages=[{"role": "user", "content": "Write a Lua stack with push and pop"}],
max_tokens=200,
temperature=0.3,
)
print(result["choices"][0]["message"]["content"])
```
## Темы обучения
Модель обучена на примерах из следующих областей:
- Структуры данных (стеки, очереди, деревья)
- Игровые механики (ECS, state machine, collision)
- Утилиты (event system, config loader, object pool)
- Love2D, Roblox, OpenResty, Neovim
- Metatables, coroutines, closures
## Требования
| Формат | Размер | VRAM (GPU) | RAM (CPU) |
|--------|--------|------------|-----------|
| Q8_0 | 3.1 ГБ | 4 ГБ | 4 ГБ |
## Лицензия
Apache 2.0 (наследуется от Qwen 2.5 Coder)