The training code is the reason to choose MiniMind
Open trainer/train_pretrain.py if you want to understand where a language model learns to predict the next token. MiniMind exposes the training machinery in native PyTorch, including instruction tuning and later preference training. The Chinese-first project has a full English README, so English readers can follow the main route. Its appeal is being able to trace a training decision into code without first learning a large framework's internal conventions.
Our checkout contained 49 files and roughly 4,680 source lines. That is a manageable reading assignment for someone who already knows Python and wants to connect model architecture with a working training loop. The scope still takes study: the repository includes dense and mixture-of-experts models, tool use, and reinforcement learning. I would begin with pretraining and supervised instruction tuning, then read the optional stages when an actual question sends me there.
What happened when we ran it
Our run installed MiniMind commit f659b55 in 77 seconds, pulling 164 packages and occupying 6,154 MB on disk. The build succeeded in 1 second. We used a fresh unprivileged Debian container on 2026-10-11, with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. Those measurements establish that the dependency installation and recorded build step completed in that environment. They do not establish training speed or generated-answer quality.
The lab skipped tests because it found no test script or target. Its scan also found 0 CI workflow files, no Dockerfile, and no tests directory. Pip-audit reported 174 known vulnerabilities. The supplied summary does not identify their affected execution paths or severity, so it cannot tell us which are reachable through a deployed model service. It does give a developer a concrete reason to inspect dependencies before adopting the environment for anything sensitive.
A small checkout still needs a large environment
The source checkout occupied 12.5 MB before the installed environment reached 6,154 MB. Keep that difference in mind when allocating a development container or handing a workshop to students. The quick start's short dependency command hides a substantial disk requirement. Our successful installation is useful evidence, but treating its completion as proof that the model itself works would skip the weights, data, and runtime configuration that come afterward.
The English quick start separates inference from training. Inference needs downloaded weights from ModelScope or Hugging Face. Training needs data files placed under dataset, followed by pretraining and instruction tuning. The documented local commands do not ask for a paid inference API key. Optional experiment tracking adds its own account configuration. Budget storage for the selected weights and data separately from the environment we measured.
The WebUI expects weights in a specific directory
The README tells WebUI users to copy a Transformers-format model folder into scripts before starting Streamlit. Its scanner expects weight-bearing subdirectories there and errors when it finds none. That detail matters more to a first launch than the existence of a chat screenshot. Checkpoint resume support is useful for longer experiments, but you still need to understand which model dimension and weight prefix match the command you are running.
Our 3-CPU sandbox does not settle which training backend you should choose. The documentation tells CUDA users to check whether PyTorch recognizes the GPU, and warns that CPU and Apple MPS paths differ in speed and compatibility. We did not measure either alternative against CUDA. If your goal is an inexpensive learning exercise, verify the chosen backend and run a small data sample before committing to a longer training job.
Long prompts have an unresolved supervision report
Issue 887, opened in October, describes a specific problem in SFTDataset: truncating a long prompt can remove the assistant response before the code creates supervision labels. The reporter identifies the same f659b55 revision as our sandbox. A linked fix is proposed in pull request 888. This is an upstream report about the actual training dataset path, separate from anything observed in our installation run.
The absence of an automated test target in our run makes that report harder to dismiss. Someone preparing custom instruction data should inspect examples after tokenization and truncation, especially when tool descriptions make the prompt long. A loss curve alone cannot show whether the intended answer survived preprocessing. MiniMind is useful precisely because you can read this path yourself, but learners should expect to check their data rather than assume every tutorial default protects it.
September code activity outweighs the older release tag
GitHub reported a last push of 2026-09-22, 63,814 stars, and 66 open issues and PRs when checked on October 16. The latest GitHub release was v2, published on 2025-10-21, while the README describes newer main-branch work. Recent discussion of truncation and proposed fixes shows continuing contributor attention. The old release date alone does not justify calling this abandoned, and the star count does not resolve the training correctness report.
Choose nanoGPT if you want a narrower GPT training codebase to study. Choose LlamaFactory if adapting existing models is the job and you prefer a framework that organizes that work. MiniMind earns its place when tracing several training stages is the point of the exercise. Before spending compute on your own dataset, open the processed sample and confirm that the assistant answer still has labels.

