# 🚀 Qyra AI
**Крупномасштабная языковая модель для русского языка с оптимизацией под CPU**
[](https://python.org)
[](LICENSE)
[]()
---
## 📋 О проекте
**Qyra AI** — это современная языковая модель, разработанная специально для работы с русскоязычными текстами. Проект фокусируется на:
- ✅ **Оптимизация под CPU** — обучение и инференс на обычных процессорах без GPU
- ✅ **Малый размер** — от 12 до 60 миллионов параметров
- ✅ **Расширяемая архитектура** — поддержка инструментов и инструментов вызова
- ✅ **Гибкое обучение** — претрейнинг и дообучение на собственных данных
---
## 🏗️ Архитектура
### Модельные пресеты (CPU-friendly)
| Размер | 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 # Эта документация
---
## 🛠️ Быстрый старт
### 1. Установка зависимостей
```bash
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: Сообщить о проблеме