MiniMind · LLM from scratch · pretrain · SFT · RLHF · Agentic RL

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-3 · 64M current dense mainline от 1 апреля 2026 года
61.9k GitHub stars на дату проверки; 8.1k forks
Apache-2.0 native PyTorch training code, без высокоуровневого trainer framework
Не «ещё одна маленькая модель», а учебный полный стек

Главная ценность MiniMind — возможность увидеть весь lifecycle LLM в исходниках

В большинстве современных проектов пользователь скачивает уже обученную модель и максимум запускает LoRA/SFT поверх готовых weights. MiniMind интересен другим: здесь можно начать с random weights, пройти pretraining, научить модель instruction following, затем добавить preference alignment, reasoning/tool-use и RL.

Random weightsмодель ничего не знает
→
Pretrainязык и статистика текста
→
SFTдиалог и инструкции
→
Alignment / Agentic RLDPO · PPO · GRPO · tools
01Почти всё написано напрямую на PyTorch

Проще понять math и training loop без слоя из нескольких frameworks.

02Модель маленькая

64M parameters позволяют экспериментировать там, где 7B/32B pretraining вообще нереалистичен.

03Pipeline современный

MoE, tool calling, GRPO/CISPO, Agentic RL и adaptive thinking уже есть в current mainline.

04Есть выход в обычную ecosystem

Transformers, Ollama, llama.cpp, vLLM, Streamlit и OpenAI-compatible API.

Кому это действительно полезно

MiniMind нужен не для замены ChatGPT, а для понимания того, как LLM устроена изнутри

УчёбаПонять pretraining и SFT на реальном коде

Не теория на 200 страниц, а runnable project.

ЭкспериментыМенять архитектуру

Количество слоёв, hidden size, MoE, attention и training objectives.

Research prototypeПроверять алгоритмы дешево

Новая loss-функция или RL idea сначала тестируется на 64M, а не на 7B.

Обучение командыРазобрать полный LLM lifecycle

Dataset → tokenizer → training → inference → deployment.

64M parameters — это учебный масштаб, а не современная general-purpose LLM.

Даже хорошо обученный MiniMind нельзя честно сравнивать по общей способности с современными моделями на миллиарды параметров. Его ценность — воспроизводимость, прозрачность и низкий порог эксперимента.

MiniMind-3 mainline

Current dense architecture выровнена с Qwen3 ecosystem

Parameters≈64M

Hugging Face показывает около 63.9M parameters.

Layers8

Неглубокая decoder-only architecture.

Hidden size768

Default train configuration.

Attention heads8 Q / 4 KV

Grouped-query style configuration.

Vocabulary6 400

BPE + ByteLevel tokenizer.

Max position32 768

Config value; training truncation обычно значительно короче.

Hugging Face config публикует модель как Qwen3ForCausalLM-совместимую: 8 layers, hidden size 768, intermediate size 2432, 8 attention heads, 4 KV heads, vocab 6400.

Architectural compatibility не означает качество Qwen3.

Совпадение 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 на тот же период.

Неверная трактовка «За 2 часа пройду pretrain + SFT + RL с нуля»

Official note этого не обещает.

Что реально сказано 1 epoch SFT ≈ 2 часа на RTX 3090

Это конкретное измерение автора, а не полный lifecycle.

Для quick reproduction проект предлагает mini datasets и маленькую architecture, поэтому полный эксперимент действительно доступен обычному пользователю, но фактическое время зависит от: dataset, epochs, sequence length, GPU, batch size, precision и выбранных post-training stages.

Не стройте бюджет железа на одной цифре «2 часа».

Если хотите именно обучить модель с нуля, считайте отдельно pretraining, SFT и каждый дополнительный RL/alignment этап.

GPU нужен не из-за числа parameters как такового, а из-за training states

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.

24 GB VRAMRTX 3090 class

Reference environment и наиболее предсказуемый путь для default experiments.

12–16 GB VRAMУменьшать batch/seq/model

64M parameter model itself маленькая, но optimizer/activations съедают больше памяти.

CPUТехнически возможно

README допускает CPU backend, но training будет значительно медленнее.

Apple SiliconMPS path развивается

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))
Для понимания pipeline можно уменьшить hidden size и layers ещё сильнее.

Если цель — увидеть, как работает backprop/pretraining/SFT, необязательно сразу воспроизводить exact 64M checkpoint.

Current repository path

Установка 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 обычно логичнее.

Сначала устанавливайте корректный PyTorch для своей CUDA.

Если pip случайно поставил CPU-only build, MiniMind не «починит» CUDA сам. Проверяйте torch.cuda.is_available() до загрузки гигабайтов данных.

Можно скачать только нужные части

Quick path занимает гигабайты, full data — уже десятки гигабайт

ФайлРазмерНазначение
pretrain_t2t_mini.jsonl≈1.2 GBбыстрое воспроизведение pretraining
pretrain_t2t.jsonl≈10 GBполный pretraining dataset
sft_t2t_mini.jsonl≈1.6 GBquick SFT / MiniMind Zero path
sft_t2t.jsonl≈14 GBосновной SFT dataset
dpo.jsonl≈53 MBpreference training
rlaif.jsonl≈24 MBRLAIF
agent_rl.jsonl≈86 MBmulti-turn tool-use Agentic RL
agent_rl_math.jsonl≈18 MBmath/RLVR agent training

Для минимального «от random weights до диалоговой модели» repository прямо предлагает начать всего с двух файлов: pretrain_t2t_mini.jsonl и sft_t2t_mini.jsonl.

Dataset quality важнее того, что training script запускается.

Маленькая модель быстро переобучается и особенно чувствительна к repetition, noise, duplicated templates и несбалансированным данным. Свою модель нельзя оценивать только по decreasing loss.

Полный lifecycle

Не обязательно запускать все этапы — pretrain + SFT уже дают рабочую базовую модель

1Pretrain

Обучить language modeling с random weights.

2Full SFT

Диалог, instructions, tool-call format.

3LoRA

Опциональная специализация.

4DPO

Preference alignment.

5PPO / GRPO / CISPO

Online/offline RL experiments.

6Agentic RL

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 между запусками.

Этап, который отличает «с нуля» от fine-tuning

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.

Pretraining — самая важная часть статьи, если цель действительно «обучить с нуля».

Если вы скачали чужой pretrained checkpoint и запустили LoRA, это fine-tuning. Это полезно, но это уже другая задача.

Instruction following

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 модели.

Именно к SFT относится headline-цифра ≈2 часа на одной RTX 3090.

Official note — один SFT epoch. Не весь pretrain + SFT + RL pipeline.

Parameter-efficient specialization

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.

Для практической кастомизации готовой большой LLM Unsloth обычно удобнее.

MiniMind LoRA особенно полезна как учебный код: видно, как low-rank adapters добавляются и обучаются без скрытой PEFT machinery.

RLHF без отдельной reward model

DPO учит модель предпочитать chosen response rejected response

cd trainer

python train_dpo.py

DPO — off-policy preference optimization. На каждой паре данных есть предпочтительный и отклонённый answer, а training увеличивает вероятность chosen относительно rejected.

DPOСтатические preference pairs

Простая и достаточно стабильная alignment-процедура.

PPO/GRPOOnline rollout / reward

Модель сама генерирует новые samples в процессе обучения.

Высокий preference/reward score не гарантирует рост общей способности.

README прямо предупреждает о trade-off и reward hacking: RL objective может улучшить конкретный reward, одновременно ухудшив часть general-purpose behavior.

PPO · GRPO · CISPO

MiniMind позволяет увидеть RL-алгоритмы без многомиллиардной инфраструктуры

python train_ppo.py
python train_grpo.py
PPOActor + Critic + GAE

Классический RLHF-style path, тяжелее и сложнее.

GRPOGroup-relative reward

Несколько answers на prompt, baseline строится внутри группы.

CISPOLoss variant внутри GRPO flow

Current repository не требует отдельного standalone trainer.

Для CISPO current docs предлагают оставить тот же train_grpo.py и переключить loss_type.

На ultra-small model ограничения RL особенно хорошо видны.

Например, 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, затем должна перепланировать дальнейшее действие.

Questionзадача
→
Tool callдействие
→
Observationрезультат tool
→
Reward / policy updateGRPO или CISPO

Dataset agent_rl.jsonl — около 86 MB, дополнительный agent_rl_math.jsonl — около 18 MB.

Это не значит, что 64M MiniMind становится конкурентом Claude Code.

Сам README описывает Agentic RL как ограниченную учебную постановку: небольшой набор tools, базовая способность вызвать, прочитать observation и продолжить multi-turn flow.

MiniMind-3-MoE

198M total parameters, но около 64M активны на token

Dense64M total / active

Самая простая architecture для начала.

MoE≈198M total / A64M

4 experts, top-1 routing в current mainline.

Автор отмечает, что current sweet spot 4 experts / top-1 примерно на 50% медленнее dense в его implementation, несмотря на сопоставимое число активных parameters. Это project-specific measurement, а не универсальная характеристика всех MoE.

Для первого полного обучения выбирайте dense.

MoE полезнее как следующий эксперимент: понять routing, experts, load balancing и разницу total/active parameters.

После обучения модель не обязана жить только в train script

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.

Linux остаётся наиболее предсказуемой training platform

Windows работает, но для серьёзного CUDA training я бы предпочёл WSL2

Current source уже содержит Windows-specific workaround для pyarrow/torch DLL conflict. То есть Windows path реально используется. Но reference environment разработчика остаётся Ubuntu + CUDA.

Windows nativeМожно экспериментировать

Especially inference и small training; current source имеет Windows fixes.

WSL2Практичный CUDA baseline

Ближе к основной Linux training ecosystem.

LinuxReference path

DDP, vLLM, SGLang и training tools обычно проще.

Apple SiliconMPS развивается

README допускает MPS, но в сентябре несколько MPS improvements ещё находятся в PR.

Если цель — изучить код, platform не критична. Если цель — воспроизвести все RL/CUDA stages, Linux проще.
Training repository тоже является software supply chain

Отдельной security policy у MiniMind на дату проверки не видно

Main repository показывает раздел Security/quality без опубликованной развитой security programme. Это образовательный ML-проект, поэтому threat model здесь другой, чем у always-on agent или MCP gateway.

DatasetНе запускать чужой preprocessing вслепую

Data pipeline и архивы тоже могут быть источником риска.

WeightsПредпочитать safetensors

Released Hugging Face model использует safetensors.

torch.loadНе открывать случайные .pth

Pickle-based PyTorch weights от недоверенного источника могут быть опасны.

Web/APIНе публиковать demo без auth

Streamlit/OpenAI-compatible server — development examples, не hardened public service.

Свой .pth безопаснее, чем случайный скачанный checkpoint.

Native PyTorch serialization historically может включать pickle semantics. Для сторонних models используйте доверенные sources и безопасные форматы, когда они доступны.

MiniMind и Unsloth отвечают на разные вопросы

«Обучить с нуля» и «дообучить готовую модель» нельзя смешивать

ПодходСтартЧто изучаем / получаем
MiniMind pretrainingRandom weightsКак LLM вообще учится языку
MiniMind SFT/RLСвой pretrained MiniMindAssistant behavior и alignment
Unsloth LoRA/QLoRAГотовая 7B/14B/32B modelПрактическая специализация мощной LLM
RAGWeights вообще не меняютсяПодмешиваем внешние документы в context

Если конечная цель — сделать сильного помощника по своей документации, pretraining 64M MiniMind почти наверняка не самый эффективный путь. Если цель — понять Transformer/training/RL буквально от начала до конца, MiniMind гораздо интереснее готовой большой модели.

Где ожидания нужно снизить заранее

MiniMind — отличная лаборатория, но не shortcut к GPT-классу

0164M — очень мало

Knowledge, reasoning и generalization ограничены самим масштабом.

022 часа относятся к одному SFT epoch

Не к полному end-to-end training.

03Качество данных критично

Небольшая модель быстро перенимает noise и шаблоны.

04RL может ухудшать general ability

Reward hacking/trade-offs не исчезают из-за маленькой модели.

05CPU training медленный

Техническая возможность не делает его практичным.

06MPS path ещё дорабатывается

September PR activity показывает, что Apple Silicon support продолжает развиваться.

07Нет mature release/versioning line

Основной ориентир — current master/README и dated model generations.

08Educational code ≠ production stack

API/WebUI нужны для демонстрации, а не как hardened internet service.

Самый полезный эксперимент — сначала MiniMind Zero, потом усложнение.

Mini datasets → pretrain → SFT → evaluate. И только когда этот pipeline понятен, имеет смысл добавлять DPO, GRPO, MoE и Agentic RL.

План первого эксперимента

Как пройти путь «с нуля» без попытки изучить весь repository за один вечер

1Поднять чистое окружение

Python + корректный PyTorch/CUDA.

2Скачать только mini datasets

1.2 GB pretrain + 1.6 GB SFT.

3Запустить default dense pretrain

Не трогать MoE/RL.

4Проверить base model

Посмотреть difference до instruction tuning.

5Запустить full SFT

Получить dialog assistant.

6Сравнить ответы до/после

Понять реальный эффект SFT.

7Поменять один параметр

Hidden size, layers или dataset — не всё сразу.

8Только потом DPO/GRPO/Agentic RL

Иначе трудно понять, что именно изменило поведение.

Первоисточники

MiniMind-3: architecture, datasets, training scripts и deployment

Материал проверен 21 сентября 2026 года.

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.

FAQ

Частые вопросы про 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.

От random weights до своего chat-assistant

Хотите не просто скачать LLM, а один раз реально пройти весь путь её обучения?

Начните с MiniMind Zero: mini pretrain dataset, один dense checkpoint и SFT. DPO, GRPO, MoE и Agentic RL имеет смысл добавлять только после того, как базовый pipeline уже понятен и воспроизводится.