约 30 分钟跑通第一根 loss 曲线

小模型训练工作室
Quick Start

本指南面向第一次接触本项目的用户。跟着 5 步走完,浏览器里就能看到自己的中文小模型在训练。

前置条件:MacBook(推荐 Apple Silicon M 系列) · macOS 12+ · 已装 Homebrew。 48 GB 内存最舒服,16 GB 也能跑(需要把 micro_batch_size 调小)。

安装 Python 3.11

macOS 自带的 Python 3.9 不推荐用于 LLM 训练。用 Homebrew 装一份 3.11:

# 安装 Python 3.11
brew install python@3.11

# 验证
/opt/homebrew/bin/python3.11 --version
# Python 3.11.x

克隆项目并创建虚拟环境

所有命令都在项目根目录执行。建议在 ~/code/100M 这样独立的目录:

# 进入项目根目录
cd /Users/$(whoami)/code/100M

# 用 3.11 创建 venv(不要用系统默认的 python3 !)
/opt/homebrew/bin/python3.11 -m venv .venv
source .venv/bin/activate

# 验证:命令行前应出现 (.venv) 前缀
python --version  # Python 3.11.x

安装依赖

开发模式安装项目本体 + 全部依赖。国内推荐用清华镜像:

# 升级 pip
pip install --upgrade pip wheel setuptools

# 一行装完所有依赖(torch, fastapi, tokenizers, ...)
pip install -e ".[dev]" -i https://pypi.tuna.tsinghua.edu.cn/simple

# HuggingFace 镜像(强烈推荐,否则下载语料会很慢)
export HF_ENDPOINT=https://hf-mirror.com

# 验证:MPS 应为 True
python -c "import torch; print('mps:', torch.backends.mps.is_available())"
  • 预计耗时:5–10 分钟(取决于网速)
  • 装完后可选 PYTHONPATH=src pytest tests/ -v 跑 4 个 smoke test

启动 Tiny LLM Studio

一行命令启动 FastAPI + Web UI。后续训练全在浏览器里完成:

bash scripts/07_corpus_platform.sh
# Starting Tiny LLM Studio on http://localhost:8000
#   - Web UI:   http://localhost:8000/
#   - API docs: http://localhost:8000/docs

浏览器打开 http://localhost:8000,即可看到 6 个 Tab:

  • 仪表盘:所有任务的统计面板
  • 数据源:HuggingFace / URL / 本地 三种类型 + 一键预设
  • 采集任务:流式抓取 + 清洗 + MinHash 去重
  • Tokenizer:32k byte-level BPE 训练
  • 数据集:多选采集任务 → 打包 train.bin / val.bin
  • 训练:一键 pretrain / SFT / DPO,实时 loss 曲线

在 Web UI 里跑完 5 步

推荐顺序,每一步都能在 UI 里实时看到进度:

建议第一次先用最小数据跑通全链路,再加大数据量。第一遍跑通预计 30–60 分钟。
  1. 「数据源」Tab · 点「使用预设:维基百科中文(小)」 → 自动创建一个 HF 数据源
  2. 「采集任务」Tab · 选刚创建的数据源 → 目标 1 GB → 「开始采集」
    ⏱ 约 10–20 分钟,进度条实时刷新
  3. 「Tokenizer」Tab · 名称 bpe-32k-v1 · vocab_size 32000 → 「训练 Tokenizer」
    ⏱ 约 5–10 分钟,扫描阶段每 5000 文档上报一次
  4. 「数据集」Tab · 名称 cn-mini-v1 · 勾选刚跑完的采集任务 + tokenizer → 「构建数据集」
    ⏱ 约 5 分钟,输出 data/tokenized/cn-mini-v1/
  5. 「训练」Tab · 选预设 pretrain · 数据集下拉选 cn-mini-v1 → 「开始训练」
    ⏱ 立即看到 loss 曲线开始下降,2 秒级刷新
不要使用 RELOAD=1:开发模式下 uvicorn 重启会孤立训练子进程,DB 状态卡在 running。生产用法默认就是关闭的。
下一步

跑通之后做什么?

扩大数据规模

把采集目标从 1 GB 调到 5–20 GB;训练 token 数从 0.1B 提到 0.5B / 2B / 5B。M4 Pro 上 5B tokens 约 5–8 天。

SFT + DPO 对话能力

预训练完后,在「训练」Tab 切换 sft 预设,再跑 dpo 偏好对齐。最后用 scripts/06_chat.sh 对话。

增量预训练 (CPT)

已有 base model + 一批新数据 → 在「训练」Tab 选「起始模型」继续训。详见完整文档的 CPT 章节。

跑通了?翻开完整文档

架构原理、API 参考、故障排查、性能调优、CPT 操作指南 ……