Крупномасштабная языковая модель для русского языка с оптимизацией под CPU
Qyra AI — это современная языковая модель, разработанная специально для работы с русскоязычными текстами. Проект фокусируется на:
- ✅ Оптимизация под CPU — обучение и инференс на обычных процессорах без GPU
- ✅ Малый размер — от 12 до 60 миллионов параметров
- ✅ Расширяемая архитектура — поддержка инструментов и инструментов вызова
- ✅ Гибкое обучение — претрейнинг и дообучение на собственных данных
| Размер | d_model | n_heads | n_layers | d_ff | ОЗУ (примерно) |
|---|---|---|---|---|---|
| 12M | 384 | 6 | 6 | 1536 | ~2-3 GB |
| 20M | 416 | 8 | 8 | 1664 | ~3-4 GB |
| 35M | 448 | 10 | 8 | 2048 | ~5-6 GB |
| 60M | 512 | 8 | 16 | 2560 | ~8-10 GB |
- GQA (Grouped Query Attention) — эффективное использование памяти
- QK-Norm — стабилизация обучения
- RMSNorm — быстрая нормализация
- SwiGLU — улучшенная активация
- RoPE — Rotary Position Embeddings
- Weight Tying — уменьшение параметров
Qyra-AI/
├── qyra/ # Исходный код модели
├── config.py # Конфигурация архитектуры и обучения
├── train_ru.py # Универсальный скрипт обучения
├── merge_ru_datasets.py # Объединение и обработка датасетов
├── data/
│ ├── raw/ # Исходные данные
│ └── finetune/ # Данные для дообучения
├── checkpoints/ # Чекпоинты модели
├── tokenizer/ # Токенизатор
└── README.md # Эта документация
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
pip install transformers datasets sentencepieceОбъединение датасетов в единый формат:
python merge_ru_datasets.py \
--output data/finetune/chat_merged.jsonl \
--inputs data/chat1.jsonl data/chat2.jsonl \
--min_turns 2 \
--shuffle \
--seed 42Претрейнинг (с нуля):
python train_ru.py \
--mode pretrain \
--model_size 12M \
--data_dir data/raw \
--max_tokens 1B \
--batch_size 4 \
--grad_accum 4Дообучение (fine-tuning):
python train_ru.py \
--mode finetune \
--model_size 12M \
--data data/finetune/chat_merged.jsonl \
--checkpoint checkpoints/best_pretrain.pt \
--epochs 5 \
--batch_size 4Все настройки находятся в config.py:
@dataclass
class ModelConfig:
vocab_size: int = 8000
max_seq_len: int = 256 # Для скорости на CPU
d_model: int = 384
n_heads: int = 6
n_layers: int = 6
d_ff: int = 1536
# ... и другие параметрыbatch_size— размер батча (рекомендуется 2-4 для CPU)grad_accum_steps— шаги накопления градиентаlr— скорость обучения (6e-4 для претрейна, 5e-5 для финайна)max_steps/epochs— лимиты обученияuse_gradient_checkpointing— экономия памяти
Модель использует специальные токены для структурирования диалогов:
| Токен | Назначение |
|---|---|
| `< | system |
| `< | user |
| `< | assistant |
| `< | end |
| `< | tool_start |
| `< | tool_end |
| `< | tool_result |
Текстовые файлы в папке data/raw/. Модель обучается на сыром тексте.
JSONL формат с полем messages:
{
"messages": [
{"role": "user", "content": "Привет!"},
{"role": "assistant", "content": "Привет! Как дела?"}
]
}Поддерживаются также ключи: conversation, dialog, dialogue.
- Доступность — обучение на обычных компьютерах без GPU
- Качество — современные архитектуры (GQA, QK-Norm, RMSNorm)
- Гибкость — поддержка инструментов и инструментов вызова
- Русский язык — оптимизация под кириллицу и русские контексты
- Открытость — весь код и веса открыты
- Увеличение словаря до 32K токенов
- Поддержка мультимодальности (изображения)
- Улучшенный токенизатор на основе SentencePiece
- Quantization для ещё более быстрого инференса
- Web-интерфейс для тестирования
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Откройте Pull Request
MIT License — свободное использование и модификация.
- GitHub: Promastergame/Qyra-AI
- Issues: Сообщить о проблеме