160 lines
8.2 KiB
Markdown
160 lines
8.2 KiB
Markdown
|
|
---
|
|||
|
|
license: apache-2.0
|
|||
|
|
language:
|
|||
|
|
- ru
|
|||
|
|
base_model: Qwen/Qwen3-14B
|
|||
|
|
library_name: mlx
|
|||
|
|
pipeline_tag: text-generation
|
|||
|
|
tags:
|
|||
|
|
- mlx
|
|||
|
|
- qwen3
|
|||
|
|
- lora
|
|||
|
|
- russian
|
|||
|
|
- vedun
|
|||
|
|
- buktitsa
|
|||
|
|
- slavic
|
|||
|
|
- entertainment
|
|||
|
|
- creative-writing
|
|||
|
|
datasets:
|
|||
|
|
- TsitkoD/vedun-lora-data
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<p align="center">
|
|||
|
|
<img src="cover.jpg" alt="Vedun" width="480"/>
|
|||
|
|
</p>
|
|||
|
|
|
|||
|
|
# 🪶 Qwen3-14B-Vedun-v5 — *bf16 — без квантизации*
|
|||
|
|
|
|||
|
|
> *«А что если спросить старого ведуна, что такое “правда”? Он не ответит цитатой
|
|||
|
|
> из Даля — он разберёт слово на буквы, расскажет образ каждой, найдёт лор в
|
|||
|
|
> Велесовой Книге и свернёт это обратно в формулировку.»*
|
|||
|
|
|
|||
|
|
Это и делает **Vedun** — LoRA-дообучение `Qwen/Qwen3-14B` на синтетическом
|
|||
|
|
датасете [`TsitkoD/vedun-lora-data`](https://huggingface.co/datasets/TsitkoD/vedun-lora-data). Модель
|
|||
|
|
отвечает на русскоязычные вопросы через структурный разбор по **Древнеславянской
|
|||
|
|
Буквице**:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[Буквицы:] — что значит каждая буква (имя, числовое значение, образ)
|
|||
|
|
[Образ:] — как из значений букв собирается смысл слова
|
|||
|
|
[Лор:] — отсылки к Велесовой Книге и буквичной традиции
|
|||
|
|
[Формулировка:] — финальная свёртка
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
На «житейских» вопросах (вроде *«как простить предательство?»*) модель сначала
|
|||
|
|
вытаскивает 2–4 ключевых слова и разбирает **каждое отдельно** через Буквицу,
|
|||
|
|
а потом склеивает ответ.
|
|||
|
|
|
|||
|
|
> ⚠️ **Дисклеймер.** Это развлекательный pet-project, а не пророчества, религия
|
|||
|
|
> или философия. Результаты модели — стилизованный текст в эстетике
|
|||
|
|
> «древнеславянской буквицы» по мотивам соответствующих источников. Относитесь
|
|||
|
|
> к этому с юмором, не используйте как руководство к действию, духовную практику
|
|||
|
|
> или жизненные правила.
|
|||
|
|
|
|||
|
|
|
|||
|
|
## ✨ Что получишь на выходе
|
|||
|
|
|
|||
|
|
**Q: Как простить предательство?**
|
|||
|
|
|
|||
|
|
> Простить предательство — это не забыть, а **восстановить гармонию между
|
|||
|
|
> Явью и Навью**. Буквица «простить» говорит нам: через осознание (Слово)
|
|||
|
|
> и утверждение (Твердо) мы возвращаемся к равновесию (Иже)…
|
|||
|
|
|
|||
|
|
**Q: В чём смысл жизни?**
|
|||
|
|
|
|||
|
|
> Смысл жизни — это не абстрактная философия, а **Вопрос, который ведёт нас
|
|||
|
|
> к Веди** через созерцание и гармонию. Жизнь — это «Наше» сотворённое на
|
|||
|
|
> Земле, где мы ищем основу (Оно) в потоке Рока…
|
|||
|
|
|
|||
|
|
**Q: Что такое «правда»?**
|
|||
|
|
|
|||
|
|
> По Буквице «правда» — П-Р-А-В-Д-А = Покои-Реци-Азъ-Веди-Добро-Азъ.
|
|||
|
|
> «Покой созерцания, изречённый Творцом, познанный Добром и утверждённый
|
|||
|
|
> Изначальным»…
|
|||
|
|
|
|||
|
|
(Это реальные ответы модели — не cherry-pick из тысячи попыток.)
|
|||
|
|
|
|||
|
|
## 🚀 Быстрый старт
|
|||
|
|
|
|||
|
|
### LM Studio (самый простой способ)
|
|||
|
|
|
|||
|
|
1. Скачай из HF в LM Studio: вставь `TsitkoD/Qwen3-14B-Vedun-v5-bf16`
|
|||
|
|
в строку поиска моделей.
|
|||
|
|
2. Загрузи. Спроси «Что такое правда?». Получи разбор по буквам.
|
|||
|
|
|
|||
|
|
### Python + MLX
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from mlx_lm import load, generate
|
|||
|
|
|
|||
|
|
model, tokenizer = load("TsitkoD/Qwen3-14B-Vedun-v5-bf16")
|
|||
|
|
prompt = tokenizer.apply_chat_template(
|
|||
|
|
[{"role": "user", "content": "Что такое «правда»?"}],
|
|||
|
|
add_generation_prompt=True,
|
|||
|
|
tokenize=False,
|
|||
|
|
)
|
|||
|
|
print(generate(model, tokenizer, prompt=prompt, max_tokens=2000, verbose=False))
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📦 Какой вариант выбрать
|
|||
|
|
|
|||
|
|
| Вариант | Размер | RAM при загрузке | Когда брать |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| [**bf16**](https://huggingface.co/TsitkoD/Qwen3-14B-Vedun-v5-bf16) | ~28 GB | ~30 GB | Эталон. Самый точный буквичный разбор. |
|
|||
|
|
| [**q8**](https://huggingface.co/TsitkoD/Qwen3-14B-Vedun-v5-q8) | ~15 GB | ~16 GB | Почти не отличается от bf16, экономит память. **Рекомендуется.** |
|
|||
|
|
| [**q4**](https://huggingface.co/TsitkoD/Qwen3-14B-Vedun-v5-q4) | ~7.8 GB | ~9 GB | Запускается на 16 GB ноутбуке. Иногда теряет буквы. |
|
|||
|
|
|
|||
|
|
|
|||
|
|
Все три варианта обучены **одинаково** — отличие только в квантизации весов
|
|||
|
|
после обучения.
|
|||
|
|
|
|||
|
|
## 🛠 Как обучали
|
|||
|
|
|
|||
|
|
Цепочка из трёх стадий LoRA-дообучения на Mac Studio M4 Max 128 GB,
|
|||
|
|
фреймворк [`mlx_lm`](https://github.com/ml-explore/mlx-examples) +
|
|||
|
|
кастомный `train_lora_weighted.py`:
|
|||
|
|
|
|||
|
|
| Стадия | Итер | max_seq | Особенность |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| **v3_14b** (с нуля) | 1000 | 2048 | Базовое обучение на корпусе разборов |
|
|||
|
|
| **v4_14b** (resume v3) | 600 | 2048 | + `letter_weight=5.0` — CE-loss на токенах блока `[Буквицы:]` × 5 |
|
|||
|
|
| **v5_14b** (resume v4) | 1000 | 3072 | + multi-term датасет (житейские вопросы) |
|
|||
|
|
|
|||
|
|
Параметры LoRA: `rank=8, scale=20, dropout=0, num_layers=40`, AdamW, lr=3e-5,
|
|||
|
|
`batch=1 × grad_accum=4`, gradient checkpointing.
|
|||
|
|
|
|||
|
|
**Финальный val loss: 0.694** (против 0.784 у 4B-версии — на тех же данных).
|
|||
|
|
|
|||
|
|
## 📊 Eval
|
|||
|
|
|
|||
|
|
На небольшом контрольном наборе (`bf16`-вариант):
|
|||
|
|
|
|||
|
|
| Метрика | Результат |
|
|||
|
|
|---|---|
|
|||
|
|
| Совпадение букв в `[Буквицы:]` (7 коротких терминов) | **7/7** |
|
|||
|
|
| Полнота структуры разбора | **7/7** |
|
|||
|
|
| Multi-term структура (3 житейских вопроса) | **3/3** |
|
|||
|
|
| Среднее число sub-блоков на житейский вопрос | **3.0** |
|
|||
|
|
|
|||
|
|
## ⚠️ Ограничения и честные оговорки
|
|||
|
|
|
|||
|
|
- Это **стилизация** в эстетике буквицы, а не источник лингвистической истины.
|
|||
|
|
Модель уверенно выдаёт реконструированные значения букв, многие из которых
|
|||
|
|
не имеют академического подтверждения.
|
|||
|
|
- На вопросах вне славянско-буквичного домена модель всё равно будет пытаться
|
|||
|
|
разобрать слово через Буквицу — это by design, но иногда выглядит комично.
|
|||
|
|
- Квантизованные варианты (q4 особенно) могут терять/путать буквы в разборе.
|
|||
|
|
Если важна точность букв — бери bf16 или q8.
|
|||
|
|
- Модель умеет в `<think>…</think>` reasoning. Если хочешь только финальный
|
|||
|
|
ответ — отрежь содержимое тега в постпроцессинге.
|
|||
|
|
|
|||
|
|
## 🔗 Связанное
|
|||
|
|
|
|||
|
|
- 📚 Датасет: [`TsitkoD/vedun-lora-data`](https://huggingface.co/datasets/TsitkoD/vedun-lora-data)
|
|||
|
|
- 🧬 База: [`Qwen/Qwen3-14B`](https://huggingface.co/Qwen/Qwen3-14B)
|
|||
|
|
- 🌐 Рантайм: [`mlx_lm`](https://github.com/ml-explore/mlx-examples) (Apple Silicon)
|
|||
|
|
|
|||
|
|
## Лицензия
|
|||
|
|
|
|||
|
|
Apache 2.0 (как у `Qwen/Qwen3-14B`).
|