From d1ecf2b46aa0c95bb15b4c25b7337ba3247610a9 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Mon, 25 May 2026 23:47:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: kertpoli/lua-coder-qwen25-3b-gguf Source: Original Platform --- .gitattributes | 36 ++++++++++++++ README.md | 119 ++++++++++++++++++++++++++++++++++++++++++++ lua-coder-q8_0.gguf | 3 ++ 3 files changed, 158 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 lua-coder-q8_0.gguf diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9c1240a --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +lua-coder-q8_0.gguf filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..55ac7df --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +--- +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) diff --git a/lua-coder-q8_0.gguf b/lua-coder-q8_0.gguf new file mode 100644 index 0000000..5b5fb7b --- /dev/null +++ b/lua-coder-q8_0.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90f68384ec1601ad4b70866873fa257e0f031747b320ab992dd7c125be03bcc8 +size 3285475712