从零开始训练一个小型语言模型。
本教程涵盖:
- 数据准备
- 模型训练
- Checkpoint 管理
- 训练监控
纯文本文件,每行一个样本:
hello world
this is a sample text
machine learning is fun and powerful
natural language processing enables computers to understand text
| 场景 | 建议数据量 |
|---|---|
| 快速测试 | 1KB - 100KB |
| 学习演示 | 1MB - 10MB |
| 实际训练 | 100MB+ |
# 可以使用训练脚本内置的 tokenizer
# 会自动从文本构建词汇表uv run scripts/train_simple_decoder.py \
--file-path data/train.txt \
--epochs 3 \
--batch-size 32 \
--hidden-size 256 \
--num-layers 4 \
--num-heads 4| 参数 | 说明 | 推荐值 |
|---|---|---|
--file-path |
训练数据文件 | 必需 |
--epochs |
训练轮数 | 3-10 |
--batch-size |
批次大小 | 16-64 |
--hidden-size |
隐藏层维度 | 128-512 |
--num-layers |
Transformer 层数 | 2-8 |
--num-heads |
注意力头数 | 2-8 |
--lr |
学习率 | 1e-4 到 1e-3 |
# 每100步自动保存
uv run scripts/train_simple_decoder.py \
--file-path data/train.txt \
--save-dir ./checkpoints \
--save-interval 100生成的文件:
checkpoints/
├── checkpoint_step_100.pt
├── checkpoint_step_200.pt
├── checkpoint_step_300.pt
└── latest.pt (最新)
uv run scripts/train_simple_decoder.py \
--file-path data/train.txt \
--resume ./checkpoints/latest.pt \
--epochs 5{
"model_state_dict": {...},
"optimizer_state_dict": {...},
"epoch": 2,
"global_step": 500,
"loss": 1.234,
"config": {
"hidden_size": 256,
"num_layers": 4,
...
}
}训练时显示实时进度:
Epoch 1/3: 100%|██████████| 100/100 [00:05<00:00, loss=2.34, step=100]
每个 epoch 结束后显示:
- 平均训练损失
- 学习率
uv run scripts/train_simple_decoder.py \
--file-path data/train.txt \
--val-file-path data/val.txt \
--epochs 3# 1. 准备数据
mkdir -p data
echo "your training data" > data/train.txt
# 2. 训练 (带 checkpoint)
uv run scripts/train_simple_decoder.py \
--file-path data/train.txt \
--val-file-path data/val.txt \
--save-dir ./checkpoints \
--save-interval 50 \
--epochs 10 \
--batch-size 32 \
--hidden-size 256 \
--num-layers 4 \
--num-heads 4 \
--lr 1e-4
# 3. 查看结果
ls -la checkpoints/
# 4. 从最佳 checkpoint 继续训练
uv run scripts/train_simple_decoder.py \
--file-path data/train.txt \
--resume ./checkpoints/latest.pt \
--epochs 5# 减小 batch size
--batch-size 8
# 使用 CPU
--device cpu
# 减小模型
--hidden-size 128 --num-layers 2- 检查数据质量
- 调整学习率 (尝试 1e-4)
- 增加模型容量
重新训练,checkpoint 只保存模型权重,如果文件损坏需要从头训练。
| 目标 | 文档 |
|---|---|
| 使用多 GPU 训练 | Guides/分布式训练 |
| LoRA 微调 | Tutorials/微调 |
| 优化推理速度 | Guides/推理优化 |