Loading…
Loading…
NanoMind2-25M — небольшая русскоязычная causal language model, обученная с нуля. Это экспериментальная base-модель: она умеет продолжать текст, но не является полноценным instruct/chat-ассистентом.
Мне 15 лет, и это, вероятно, моя последняя более-менее серьёзная модель. Я начал выгорать от долгого обучения, экспериментов, ошибок и постоянной борьбы с ограниченными ресурсами.
Сделать полноценную instruct-модель у меня не получилось: не хватило ни качественных диалоговых данных, ни вычислительных ресурсов, ни времени на длинный цикл fine-tuning и отладку. Ресурсов на обучение новой, более крупной модели тоже почти нет.
Поэтому NanoMind2-25M я выкладываю скорее как итог эксперимента и открытую базу для дальнейших экспериментов, чем как готовый продукт.
NanoMind2-25M использует гибридную архитектуру NanoMindGRU:
Идея архитектуры: получить дешёвую и быструю модель, в которой GRU обеспечивает эффективность, а редкие attention-слои добавляют способность к точному recall.
| Параметр | Значение |
|---|---|
| Параметров | ~24,991,104 |
| Размер словаря | 20,480 |
| Скрытая размерность | 384 |
| Слоёв | 10 |
| Голов attention | 6 |
| Attention-слоёв | 3 из 10 |
| FFN multiplier | 2 |
| Контекст | 512 токенов |
| Тип весов | bfloat16 |
| tied embeddings | Да |
Модель обучалась на русском текстовом корпусе в формате токенизированного data.bin.
Основные параметры обучения:
За одну эпоху модель обработала около 583M токенов, то есть примерно 23 токена на параметр. Это близко к распространённому compute-optimal ориентиру около 20 токенов на параметр.
Итоговые метрики после одной эпохи:
| Метрика | Значение |
|---|---|
| Train loss | 3.7594 |
| Train perplexity | 42.92 |
| Validation loss | 3.6108 |
| Validation perplexity | 37.00 |
Это base-модель, а не chat- или instruct-модель:
Попытка сделать из неё стабильную instruct-модель не увенчалась успехом: небольшого chat-датасета и ограниченных ресурсов оказалось недостаточно для устойчивого диалогового поведения.
config.json
model.safetensors
tokenizer.json
chat.py
README.md
Установите зависимости:
pip install torch safetensors tokenizers
Положите рядом файлы:
chat.py
config.json
model.safetensors
tokenizer.json
Затем запустите:
python chat.py
Пример:
Вы: Привет
NanoMind: ...
Скрипт использует sampling с защитой от повторов:
Модель выложена как экспериментальный артефакт. Используйте её ответственно: не полагайтесь на её факты, не используйте для важных решений и обязательно проверяйте сгенерированный текст.
Если вы хотите продолжить проект — можете дообучить модель, улучшить датасет, добавить настоящие специальные токены или обучить более крупную версию.