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
-
Safetensors
Model size
32.9M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Collection including YanchikDev/NanoMind2-25M