MiniMind: как обучить LLM с нуля на своей видеокарте — pretrain, SFT, DPO, GRPO и Agentic RL
MiniMind — один из самых популярных учебных open-source проектов, где действительно можно пройти весь путь создания языковой модели: от tokenizer и pretraining до SFT, LoRA, DPO, PPO, GRPO/CISPO, tool calling и Agentic RL. Current mainline MiniMind-3 — это dense-модель примерно на 64M parameters, достаточно маленькая, чтобы экспериментировать на одном обычном GPU, но при этом архитектура и training pipeline уже напоминают современные LLM.
Главная ценность MiniMind — возможность увидеть весь lifecycle LLM в исходниках
В большинстве современных проектов пользователь скачивает уже обученную модель и максимум запускает LoRA/SFT поверх готовых weights. MiniMind интересен другим: здесь можно начать с random weights, пройти pretraining, научить модель instruction following, затем добавить preference alignment, reasoning/tool-use и RL.
Проще понять math и training loop без слоя из нескольких frameworks.
64M parameters позволяют экспериментировать там, где 7B/32B pretraining вообще нереалистичен.
MoE, tool calling, GRPO/CISPO, Agentic RL и adaptive thinking уже есть в current mainline.
Transformers, Ollama, llama.cpp, vLLM, Streamlit и OpenAI-compatible API.
MiniMind нужен не для замены ChatGPT, а для понимания того, как LLM устроена изнутри
Не теория на 200 страниц, а runnable project.
Количество слоёв, hidden size, MoE, attention и training objectives.
Новая loss-функция или RL idea сначала тестируется на 64M, а не на 7B.
Dataset → tokenizer → training → inference → deployment.
Даже хорошо обученный MiniMind нельзя честно сравнивать по общей способности с современными моделями на миллиарды параметров. Его ценность — воспроизводимость, прозрачность и низкий порог эксперимента.
Current dense architecture выровнена с Qwen3 ecosystem
Hugging Face показывает около 63.9M parameters.
Неглубокая decoder-only architecture.
Default train configuration.
Grouped-query style configuration.
BPE + ByteLevel tokenizer.
Config value; training truncation обычно значительно короче.
Hugging Face config публикует модель как
Qwen3ForCausalLM-совместимую:
8 layers, hidden size 768, intermediate size 2432,
8 attention heads, 4 KV heads, vocab 6400.
Совпадение naming/config conventions нужно для ecosystem compatibility. 64M MiniMind и многомиллиардные Qwen — модели совершенно разного масштаба.
«64M LLM с нуля за 2 часа и 3 юаня» нельзя понимать как полный end-to-end training
Repository рекламирует идею «train a 64M LLM from scratch in 2h», но прямо под этим разработчик добавляет уточнение: 2 часа — это измеренное время одного epoch SFT на одной NVIDIA RTX 3090, а «3 RMB» — оценка стоимости аренды этой GPU на тот же период.
Official note этого не обещает.
Это конкретное измерение автора, а не полный lifecycle.
Для quick reproduction проект предлагает mini datasets и маленькую architecture, поэтому полный эксперимент действительно доступен обычному пользователю, но фактическое время зависит от: dataset, epochs, sequence length, GPU, batch size, precision и выбранных post-training stages.
Если хотите именно обучить модель с нуля, считайте отдельно pretraining, SFT и каждый дополнительный RL/alignment этап.
RTX 3090 — reference platform, но MiniMind можно уменьшать под более слабое железо
В README автор показывает своё окружение: Ubuntu 20.04, CUDA 12.2, Python 3.10.16 и несколько RTX 3090. При этом training scripts поддерживают single-GPU и DDP multi-GPU, а параметры architecture доступны через CLI.
Reference environment и наиболее предсказуемый путь для default experiments.
64M parameter model itself маленькая, но optimizer/activations съедают больше памяти.
README допускает CPU backend, но training будет значительно медленнее.
README упоминает MPS; в сентябре 2026 есть свежие PR с расширенной Apple Silicon support.
Перед началом
import torch
print(torch.__version__)
print(torch.cuda.is_available())
if torch.cuda.is_available():
print(torch.cuda.get_device_name(0))
Если цель — увидеть, как работает backprop/pretraining/SFT, необязательно сразу воспроизводить exact 64M checkpoint.
Установка MiniMind
git clone --depth 1 https://github.com/jingyaogong/minimind
cd minimind
python -m venv .venv
# Linux / WSL
source .venv/bin/activate
# Windows PowerShell
# .\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r requirements.txt
Official README использует mirror для китайского PyPI,
но за пределами Китая обычный pip install -r requirements.txt
обычно логичнее.
Если pip случайно поставил CPU-only build,
MiniMind не «починит» CUDA сам.
Проверяйте torch.cuda.is_available() до загрузки гигабайтов данных.
Quick path занимает гигабайты, full data — уже десятки гигабайт
Для минимального «от random weights до диалоговой модели»
repository прямо предлагает начать всего с двух файлов:
pretrain_t2t_mini.jsonl и
sft_t2t_mini.jsonl.
Маленькая модель быстро переобучается и особенно чувствительна к repetition, noise, duplicated templates и несбалансированным данным. Свою модель нельзя оценивать только по decreasing loss.
Не обязательно запускать все этапы — pretrain + SFT уже дают рабочую базовую модель
Обучить language modeling с random weights.
Диалог, instructions, tool-call format.
Опциональная специализация.
Preference alignment.
Online/offline RL experiments.
Multi-turn tool use.
cd trainer
python train_pretrain.py
python train_full_sft.py
# optional:
python train_lora.py
python train_dpo.py
python train_ppo.py
python train_grpo.py
python train_agent.py
Все training scripts умеют checkpoint resume:
python train_pretrain.py --from_resume 1
python train_full_sft.py --from_resume 1
Complete checkpoints включают model, optimizer и training progress, а resume поддерживает даже изменение количества GPU между запусками.
Pretraining начинает с random weights — здесь модель впервые учит язык
cd trainer
python train_pretrain.py
Current default train_pretrain.py использует:
hidden size 768, 8 layers,
pretrain_t2t_mini.jsonl и training truncation
max_seq_len=340.
После training создаётся weight вида
out/pretrain_768.pth.
В этот момент модель уже способна продолжать текст,
но ещё не обязана хорошо следовать инструкциям как chat-assistant.
Если вы скачали чужой pretrained checkpoint и запустили LoRA, это fine-tuning. Это полезно, но это уже другая задача.
SFT превращает base model в assistant и одновременно продолжает учить знания/поведение
cd trainer
python train_full_sft.py
Current SFT data использует multi-turn role structure
system / user / assistant / tool.
В mainline tool-call samples уже смешаны в
sft_t2t/sft_t2t_mini,
поэтому отдельный «tool calling fine-tune» для базового pipeline обычно не нужен.
Repository подчёркивает, что full
sft_t2t.jsonl сейчас около 14 GB:
это уже не просто форматирование ответа,
а существенный additional training stage,
который продолжает менять знания и behaviour distribution модели.
Official note — один SFT epoch. Не весь pretrain + SFT + RL pipeline.
LoRA в MiniMind реализована вручную, без PEFT abstraction
cd trainer
python train_lora.py \
--lora_name lora_medical
Current script сохраняет только LoRA weights,
а scripts/convert_model.py
умеет объединять base + LoRA и экспортировать итоговые weights.
MiniMind LoRA особенно полезна как учебный код: видно, как low-rank adapters добавляются и обучаются без скрытой PEFT machinery.
DPO учит модель предпочитать chosen response rejected response
cd trainer
python train_dpo.py
DPO — off-policy preference optimization. На каждой паре данных есть предпочтительный и отклонённый answer, а training увеличивает вероятность chosen относительно rejected.
Простая и достаточно стабильная alignment-процедура.
Модель сама генерирует новые samples в процессе обучения.
README прямо предупреждает о trade-off и reward hacking: RL objective может улучшить конкретный reward, одновременно ухудшив часть general-purpose behavior.
MiniMind позволяет увидеть RL-алгоритмы без многомиллиардной инфраструктуры
python train_ppo.py
python train_grpo.py
Классический RLHF-style path, тяжелее и сложнее.
Несколько answers на prompt, baseline строится внутри группы.
Current repository не требует отдельного standalone trainer.
Для CISPO current docs предлагают оставить тот же
train_grpo.py и переключить loss_type.
Например, GRPO страдает от degenerate groups: если все N ответов одинаково плохи или одинаково хороши, learning signal почти исчезает.
Agentic RL учит маленькую LLM действовать в multi-turn tool-use loop
python train_agent.py
Начиная с марта 2026 mainline содержит
native train_agent.py
с GRPO/CISPO для multi-turn Tool-Use.
Модель получает задачу,
вызывает simulated tool,
читает observation,
затем должна перепланировать дальнейшее действие.
Dataset agent_rl.jsonl — около 86 MB,
дополнительный agent_rl_math.jsonl — около 18 MB.
Сам README описывает Agentic RL как ограниченную учебную постановку: небольшой набор tools, базовая способность вызвать, прочитать observation и продолжить multi-turn flow.
198M total parameters, но около 64M активны на token
Самая простая architecture для начала.
4 experts, top-1 routing в current mainline.
Автор отмечает, что current sweet spot
4 experts / top-1
примерно на 50% медленнее dense в его implementation,
несмотря на сопоставимое число активных parameters.
Это project-specific measurement, а не универсальная характеристика всех MoE.
MoE полезнее как следующий эксперимент: понять routing, experts, load balancing и разницу total/active parameters.
MiniMind можно экспортировать в Transformers, GGUF, Ollama и OpenAI-compatible API
Проверить native weights
python eval_llm.py --weight full_sft
Готовый released checkpoint
git clone https://huggingface.co/jingyaogong/minimind-3
python eval_llm.py \
--load_from ./minimind-3
Ollama
ollama run jingyaogong/minimind-3
vLLM
vllm serve /path/to/model \
--model-impl transformers \
--served-model-name minimind \
--port 8998
Есть также scripts/serve_openai_api.py,
Streamlit WebUI и documented conversion path
Transformers → GGUF → llama.cpp/Ollama.
Windows работает, но для серьёзного CUDA training я бы предпочёл WSL2
Current source уже содержит Windows-specific workaround для pyarrow/torch DLL conflict. То есть Windows path реально используется. Но reference environment разработчика остаётся Ubuntu + CUDA.
Especially inference и small training; current source имеет Windows fixes.
Ближе к основной Linux training ecosystem.
DDP, vLLM, SGLang и training tools обычно проще.
README допускает MPS, но в сентябре несколько MPS improvements ещё находятся в PR.
Отдельной security policy у MiniMind на дату проверки не видно
Main repository показывает раздел Security/quality без опубликованной развитой security programme. Это образовательный ML-проект, поэтому threat model здесь другой, чем у always-on agent или MCP gateway.
Data pipeline и архивы тоже могут быть источником риска.
Released Hugging Face model использует safetensors.
Pickle-based PyTorch weights от недоверенного источника могут быть опасны.
Streamlit/OpenAI-compatible server — development examples, не hardened public service.
.pth безопаснее, чем случайный скачанный checkpoint.
Native PyTorch serialization historically может включать pickle semantics. Для сторонних models используйте доверенные sources и безопасные форматы, когда они доступны.
«Обучить с нуля» и «дообучить готовую модель» нельзя смешивать
Если конечная цель — сделать сильного помощника по своей документации, pretraining 64M MiniMind почти наверняка не самый эффективный путь. Если цель — понять Transformer/training/RL буквально от начала до конца, MiniMind гораздо интереснее готовой большой модели.
MiniMind — отличная лаборатория, но не shortcut к GPT-классу
Knowledge, reasoning и generalization ограничены самим масштабом.
Не к полному end-to-end training.
Небольшая модель быстро перенимает noise и шаблоны.
Reward hacking/trade-offs не исчезают из-за маленькой модели.
Техническая возможность не делает его практичным.
September PR activity показывает, что Apple Silicon support продолжает развиваться.
Основной ориентир — current master/README и dated model generations.
API/WebUI нужны для демонстрации, а не как hardened internet service.
Mini datasets → pretrain → SFT → evaluate. И только когда этот pipeline понятен, имеет смысл добавлять DPO, GRPO, MoE и Agentic RL.
Как пройти путь «с нуля» без попытки изучить весь repository за один вечер
Python + корректный PyTorch/CUDA.
1.2 GB pretrain + 1.6 GB SFT.
Не трогать MoE/RL.
Посмотреть difference до instruction tuning.
Получить dialog assistant.
Понять реальный эффект SFT.
Hidden size, layers или dataset — не всё сразу.
Иначе трудно понять, что именно изменило поведение.
MiniMind-3: architecture, datasets, training scripts и deployment
Current released mainline model family — minimind-3 /
minimind-3-moe, опубликованные 1 апреля 2026 года.
Repository активно меняется, поэтому training commands
и dataset paths перед запуском стоит сверять с current README.
MiniMind — один из редких проектов, где «обучить LLM с нуля» не является чисто теоретической фразой
Его нельзя использовать как доказательство того, что современную сильную LLM можно дешево воспроизвести дома. 64M model слишком мала для этого.
Но для образования MiniMind очень удачен: один repository показывает, как random weights превращаются сначала в language model, затем в instruction assistant, затем проходят preference/RL post-training, учатся basic tool calling и могут быть экспортированы в обычную local-inference ecosystem.
Именно поэтому я бы рассматривал MiniMind не как «дешёвый ChatGPT», а как лабораторный стенд для понимания современной LLM engineering.
Частые вопросы про MiniMind
Что такое MiniMind простыми словами?
Учебный open-source LLM-проект, позволяющий пройти полный путь от random weights и pretraining до SFT, LoRA, DPO, GRPO, Agentic RL и deployment.
MiniMind действительно обучается с нуля?
Да, train_pretrain.py может начинать с random weights. Это принципиально отличается от LoRA готовой LLM.
Можно ли обучить всё за 2 часа?
Official note уточняет: 2 часа — измеренное время одного SFT epoch на одной RTX 3090. Это не заявленное время полного pretrain + SFT + RL pipeline.
Сколько параметров у MiniMind-3?
Dense current mainline — примерно 64M; Hugging Face указывает 63.9M. MoE variant — примерно 198M total / 64M active.
Сколько данных нужно для минимального эксперимента?
Repository рекомендует pretrain_t2t_mini.jsonl ≈1.2 GB и sft_t2t_mini.jsonl ≈1.6 GB.
Можно ли обучать на одной RTX 3090?
Да. Именно RTX 3090 используется в официальных single-GPU timing examples. Конкретное время зависит от stage и конфигурации.
Можно ли на Windows?
Current source имеет Windows-specific fixes, но для полного CUDA/RL pipeline Linux/WSL2 обычно предсказуемее.
Можно ли на Mac?
README допускает MPS, а в сентябре 2026 есть активные PR по расширению Apple Silicon training support. Совместимость всё ещё развивается.
Можно ли потом запустить модель через Ollama?
Да. Есть готовый ollama run jingyaogong/minimind-3 и documented GGUF/Ollama export path для своей модели.
Стоит ли использовать MiniMind вместо Qwen/Llama для реальной работы?
Обычно нет. MiniMind предназначен прежде всего для обучения, воспроизводимых экспериментов и исследования training pipeline; современная multi-billion-parameter model значительно сильнее как general-purpose assistant.
Хотите не просто скачать LLM, а один раз реально пройти весь путь её обучения?
Начните с MiniMind Zero: mini pretrain dataset, один dense checkpoint и SFT. DPO, GRPO, MoE и Agentic RL имеет смысл добавлять только после того, как базовый pipeline уже понятен и воспроизводится.