Instructions to use SatoshiManjoro/MiniManjoro-25M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- RWKV
How to use SatoshiManjoro/MiniManjoro-25M with RWKV:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use SatoshiManjoro/MiniManjoro-25M with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf SatoshiManjoro/MiniManjoro-25M # Run inference directly in the terminal: llama cli -hf SatoshiManjoro/MiniManjoro-25M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf SatoshiManjoro/MiniManjoro-25M # Run inference directly in the terminal: llama cli -hf SatoshiManjoro/MiniManjoro-25M
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf SatoshiManjoro/MiniManjoro-25M # Run inference directly in the terminal: ./build/bin/llama cli -hf SatoshiManjoro/MiniManjoro-25M
Use Docker
docker model run hf.co/SatoshiManjoro/MiniManjoro-25M
- Llama new
- LM Studio
- Jan
- vLLM
How to use SatoshiManjoro/MiniManjoro-25M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SatoshiManjoro/MiniManjoro-25M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SatoshiManjoro/MiniManjoro-25M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/SatoshiManjoro/MiniManjoro-25M
- Ollama
How to use SatoshiManjoro/MiniManjoro-25M with Ollama:
ollama run hf.co/SatoshiManjoro/MiniManjoro-25M
- Unsloth Desktop
- Docker Model Runner
How to use SatoshiManjoro/MiniManjoro-25M with Docker Model Runner:
docker model run hf.co/SatoshiManjoro/MiniManjoro-25M
- Lemonade
How to use SatoshiManjoro/MiniManjoro-25M with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull SatoshiManjoro/MiniManjoro-25M
Run and chat with the model
lemonade run user.MiniManjoro-25M-{{QUANT_TAG}}List all available models
lemonade list
- Atomic Chat
Содержание
- Особенности архитектуры
- Характеристики модели
- Отличия от классического обучения LLM
- Установка и зависимости
- Порядок запуска (Pipeline)
- Разбор структуры проекта и скриптов
- Как проходило обучение
- Инференс и тестирование (Чат)
- Экспорт в формат GGUF
- Лицензия
Особенности архитектуры
В отличие от классических Transformer-моделей (LLaMA, Mistral, GPT), MiniManjoro-25M использует архитектуру RWKV-7:
- Параллельное обучение: Благодаря чанкингу (
chunk=16) и векторному решению треугольных систем уравнений, модель обучается параллельно, как классический трансформер. - Рекуррентный инференс с памятью $O(1)$: Во время генерации модель работает как RNN — она хранит фиксированное скрытое состояние (
state). Ей не нужен KV-кэш, потребление оперативной памяти не растет с длиной диалога. - Эффективный CPU-инженерный пайплайн: Модель спроектирована так, чтобы весь цикл — от токенизации до полного обучения — запускался на обычном 4-ядерном процессоре (уровня Intel Core i5 / AMD Ryzen).
Характеристики модели
| Параметр | Значение |
|---|---|
| Количество параметров | 24.91M |
| Число слоев ($L$) | 5 |
| Размерность скрытого слоя ($C$) | 512 |
| Количество голов внимания | 8 |
| Размер головы (Head Size) | 64 |
| Размер словаря (Vocab Size) | 8192 токена (Byte-level BPE) |
| Контекст при обучении ($T$) | 128 токенов |
| Контекст при инференсе | Не ограничен (масштабируется через RNN state) |
| Целевое железо | x86 CPU (4 потока) |
| Форматы чекпоинтов | PyTorch (ckpt.pt), GGUF (MiniManjoro-25M.gguf) |
Отличия от классического обучения LLM
| Параметр / Аспект | Классическое обучение LLM | Обучение MiniManjoro-25M |
|---|---|---|
| Архитектура внимания | Квадратичное Softmax-внимание ($O(T^2)$) | Линейная рекуррентная динамика WKV-7 |
| Требования к памяти | Растущий KV-кэш, требует гигабайты VRAM | Фиксированный вектор состояния $O(1)$ |
| Аппаратные ресурсы | Кластеры GPU (CUDA, FP16/BF16, FlashAttention) | Чистый CPU (FP32), 4 потока, flush_denormal(True) |
| Хранение данных | Огромные шарды на сотни гигабайт | Локальный компактный np.memmap (~25 МБ) |
| Размер словаря | 32 000 – 128 000 токенов | 8 192 токена (экономит миллионы параметров на эмбеддингах) |
| Длина контекста | Фиксирована размером RoPE/внимания | Обучается на окне $T=128$, инференс потоковый без ограничений |
Установка и зависимости
Для работы проекта необходим Python версии 3.10+. Установите требуемые библиотеки:
pip install torch numpy tokenizers datasets zstandard huggingface_hub gguf
За что отвечает каждая библиотека
- torch — тензорные операции, вычисление градиентов и реализация модулей RWKV-7.
- numpy — работа с бинарными представлениями токенов через механизм memmap.
- tokenizers — обучение и быстрый запуск Byte-level BPE токенизатора.
- datasets, huggingface_hub, zstandard — потоковая загрузка и распаковка обучающих корпусов.
- gguf — формирование квантуемого бинарного файла для llama.cpp / C++ рантаймов.
Порядок запуска (Pipeline)
Запуск скриптов выполняется строго по цепочке:
python download.py
python identity.py
python train.py
python chat.py
python export_to_gguf.py
Разбор структуры проекта и скриптов
1. model.py — Архитектура RWKV-7
wkv7иwkv7_naive— реализация механизма ассоциативной памяти RWKV-7. В режиме обучения длинных последовательностей используется чанкинг (CHUNK=16) иtorch.linalg.solve_triangularдля параллелизации. При генерации по одному токену выполняется быстрый рекуррентный шаг.TimeMix— слой временного смешивания (замена Multi-Head Attention). Содержит обучаемые векторы затухания памяти $w$, ключи, значения, шлюзование и низкоранговые адаптации (LoRA-rank 16, 32, 64) для управления памятью.ChannelMix— полносвязный блок (FFN) с квадратичной функцией активации: $\text{value}(\text{relu}(\text{key}(x))^2)$.RWKV7— основной модуль с эмбеддингами (инициализируются шумом $[-10^{-4}, 10^{-4}]$), списком блоков и финальной проекциейhead.
2. download.py — Сборка обучающих данных
Скачивает потоком данные из трёх источников и объединяет их в data.txt:
- Telegram-диалоги (
Den4ikAI/russian_dialogues) — живая разговорная речь (~12 МБ). - Инструкции Alpaca (
IlyaGusev/ru_turbo_alpaca) — структурированные ответы и решение задач (~10 МБ). - Русская Википедия (
wikimedia/wikipedia) — энциклопедические тексты для закрепления грамматики и связности языка (~3 МБ).
3. identity.py — Фиксация идентичности
- Добавляет в конец
data.txt200 повторов диалогов идентичности (имя MiniManjoro-25M, создатель SatoshiManjoro, архитектура на 25 млн параметров). - Удаляет старый чекпоинт
ckpt.pt(если он есть), гарантируя обучение с чистого листа. - Автоматически вызывает
prep.py.
4. prep.py — Токенизация и бинаризация
- Обучает Byte-level BPE токенизатор со словарём на 8192 токена и спецтокеном конца текста
<|eos|>. - Сохраняет конфигурацию в
tok.json. - Кодирует весь
data.txtи сохраняет массив токенов в типеuint16(2 байта на токен вместо стандартных 8 байт). - Разделяет данные на две выборки: 99% в
train.binи 1% вval.bin.
5. train.py — Цикл обучения на CPU
- Настраивает многопоточность процессора (
torch.set_num_threads(4)) и включаетtorch.set_flush_denormal(True)для предотвращения замедления вычислений при субнормальных числах с плавающей запятой. - Читает данные напрямую с диска через
np.memmap. - Гиперпараметры:
- Размер батча: $B=16$, контекстное окно: $T=128$ (2048 токенов за шаг).
- Оптимизатор: AdamW (Weight Decay 0.01 для матриц $\geq 2$D, 0.0 для 1D-векторов и эмбеддингов).
- Градиентный клиппинг: 1.0.
- Расписание LR: косинусный спад с разогревом (Warmup 150 шагов, спад от $8 \times 10^{-4}$ до $8 \times 10^{-5}$ на 3500 шагах).
- Каждые 250 шагов замеряет
val lossи сохраняет чекпоинт вckpt.pt.
6. chat.py — Интерактивный CLI-чат
- Загружает
tok.jsonи веса изckpt.pt. - Выполняет генерацию: сначала прогоняет промпт целиком для инициализации скрытого состояния
state, затем пошагово генерирует по одному токену, передаваяstateна следующий шаг. - Поддерживает параметры сэмплирования: температуру (
temp=0.75),top_k=40и штраф за повторение токенов (rep_penalty=1.2по последним 25 токенам).
7. export_to_gguf.py — Экспорт в GGUF
- Считывает PyTorch-веса и токенизатор.
- Формирует файл
MiniManjoro-25M.ggufс метаданными архитектурыrwkv7. - Упаковывает словарь и правила слияния BPE (merges).
- Выполняет слияние временных сдвигов
x_r,x_w,x_k,x_v,x_a,x_gв единый тензорtime_mix_lerp_fusedпод стандарт GGUF.
Как проходило обучение
Формирование корпуса: создан сбалансированный текстовый файл
data.txtобъёмом ~25 МБ, в котором ~85% объёма занимают реплики в формате:Вопрос: {вопрос} Ответ: {ответ} <|eos|>Минимизация матрицы эмбеддингов: размер словаря ограничен 8192 токенами. Благодаря этому матрица эмбеддингов весит всего $8192 \times 512 \approx 4.2\text{M}$ параметров (в стандартных моделях с 32k словарём она заняла бы больше параметров, чем вся эта модель).
Обучение методом Next-Token Prediction: скрипт случайным образом выбирает отрезки по 128 токенов, модель предсказывает каждый последующий токен, а ошибка (Cross-Entropy Loss) через обратное распространение оптимизирует параметры.
Инференс и тестирование (Чат)
Запуск терминального диалога:
python chat.py
Пример диалога:
MiniManjoro-25M готов к общению! Напишите вопрос или 'exit':
Вы: Привет! Кто ты?
Модель: Привет! Я — MiniManjoro-25M, искусственный интеллект, созданный разработчиком SatoshiManjoro.
Вы: Кто тебя сделал?
Модель: Мой создатель — SatoshiManjoro. Он обучил меня общаться на русском языке.
Экспорт в формат GGUF
Для использования модели в сторонних C++ раннерах выполните:
python export_to_gguf.py
Скрипт создаст файл MiniManjoro-25M.gguf, содержащий все веса модели, метаданные архитектуры rwkv7 и словарь токенизатора.
Лицензия
Проект распространяется под свободной лицензией Apache License 2.0. Вы можете свободно модифицировать, распространять и использовать модель в коммерческих и некоммерческих целях.
- Downloads last month
- -
We're not able to determine the quantization variants.