NanoMind2-25M
NanoMind2-25M — небольшая русскоязычная causal language model, обученная с нуля. Это экспериментальная base-модель: она умеет продолжать текст, но не является полноценным instruct/chat-ассистентом.
- Модель: YanchikDev/NanoMind2-25M
- Архитектура: NanoMindGRU — гибрид GRU и causal attention
- Размер: около 25M параметров
- Контекст: 512 токенов
- Язык: русский
- Тип: base language model
Немного от автора
Мне 15 лет, и это, вероятно, моя последняя более-менее серьёзная модель. Я начал выгорать от долгого обучения, экспериментов, ошибок и постоянной борьбы с ограниченными ресурсами.
Сделать полноценную instruct-модель у меня не получилось: не хватило ни качественных диалоговых данных, ни вычислительных ресурсов, ни времени на длинный цикл fine-tuning и отладку. Ресурсов на обучение новой, более крупной модели тоже почти нет.
Поэтому NanoMind2-25M я выкладываю скорее как итог эксперимента и открытую базу для дальнейших экспериментов, чем как готовый продукт.
Архитектура
NanoMind2-25M использует гибридную архитектуру NanoMindGRU:
- Большинство блоков — GRU-миксеры: они быстро обрабатывают последовательность и сжимают историю.
- Каждый четвёртый блок — causal multi-head attention: он помогает модели точнее обращаться к более далёкому контексту.
- В каждом блоке есть SwiGLU FFN.
- Используются pre-norm, residual connections и RMSNorm.
- Embedding и output head связаны (tied embeddings).
- Контекст — 512 токенов.
Идея архитектуры: получить дешёвую и быструю модель, в которой GRU обеспечивает эффективность, а редкие attention-слои добавляют способность к точному recall.
Характеристики
| Параметр | Значение |
|---|---|
| Параметров | ~24,991,104 |
| Размер словаря | 20,480 |
| Скрытая размерность | 384 |
| Слоёв | 10 |
| Голов attention | 6 |
| Attention-слоёв | 3 из 10 |
| FFN multiplier | 2 |
| Контекст | 512 токенов |
| Тип весов | bfloat16 |
| tied embeddings | Да |
Обучение
Модель обучалась на русском текстовом корпусе в формате токенизированного data.bin.
Основные параметры обучения:
- optimizer: AdamW
- learning rate: 6e-4
- batch size: 32
- sequence length: 512
- weight decay: 0.1
- gradient clipping: 1.0
- LR schedule: cosine annealing
- precision: bfloat16
За одну эпоху модель обработала около 583M токенов, то есть примерно 23 токена на параметр. Это близко к распространённому compute-optimal ориентиру около 20 токенов на параметр.
Итоговые метрики после одной эпохи:
| Метрика | Значение |
|---|---|
| Train loss | 3.7594 |
| Train perplexity | 42.92 |
| Validation loss | 3.6108 |
| Validation perplexity | 37.00 |
Что умеет модель
- Продолжать русский текст.
- Генерировать правдоподобные локальные фразы.
- Иногда воспроизводить стиль вопросов, ответов, новостей или технических обсуждений.
- Работать быстро на потребительских GPU благодаря гибридной GRU-архитектуре.
Чего модель не умеет
Это base-модель, а не chat- или instruct-модель:
- Она не умеет надёжно отвечать на вопросы.
- Она не следует инструкциям.
- Она может генерировать бессмысленные, повторяющиеся или фактически неверные тексты.
- Она не имеет выравнивания по безопасности и может воспроизводить вредные, ошибочные или неприемлемые формулировки из обучающих данных.
- Она плохо удерживает длинный контекст и часто уходит от темы.
- Она не является заменой GPT, LLaMA, Qwen или другим полноценным LLM.
Попытка сделать из неё стабильную 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 с защитой от повторов:
- temperature: 0.7
- top-k: 40
- top-p: 0.95
- repetition penalty: 1.2
- no repeat n-gram: 3
Лицензия и использование
Модель выложена как экспериментальный артефакт. Используйте её ответственно: не полагайтесь на её факты, не используйте для важных решений и обязательно проверяйте сгенерированный текст.
Если вы хотите продолжить проект — можете дообучить модель, улучшить датасет, добавить настоящие специальные токены или обучить более крупную версию.
- Downloads last month
- -