120 lines
3.8 KiB
Markdown
120 lines
3.8 KiB
Markdown
|
|
---
|
|||
|
|
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)
|