附录 C 常见问题排查 按报错现象分类的排查指南。先定位现象,再看原因与解决方案。 C.1 环境与安装类 C.1.1 原因:tiktoken 未安装。 解决: C.1.2 原因:transformers 未安装或版本过低。 解决: C.1.3 安装 torch 后 返回 False 原因:安装的是 CPU 版 torch,未装 CUDA 版。 解决:到 PyTorch 官网按你的 CUDA 版本获取安装命令,重装。常见如: C.1.4 Windows 下 训练报错或卡住 原因:Windows 多进程要求训练入口在 内,且有时仍不稳定。 解决:加 强制单进程加载。 C.2 教师模型下载类 C.2.1 (下载教师时) 原因:磁盘空间不足。
按报错现象分类的排查指南。先定位现象,再看原因与解决方案。
ModuleNotFoundError: No module named 'tiktoken'原因:tiktoken 未安装。
解决:
pip install tiktoken
ModuleNotFoundError: No module named 'transformers'原因:transformers 未安装或版本过低。
解决:
pip install "transformers>=4.36.0"
torch.cuda.is_available() 返回 False原因:安装的是 CPU 版 torch,未装 CUDA 版。
解决:到 PyTorch 官网按你的 CUDA 版本获取安装命令,重装。常见如:
pip install torch --index-url https://download.pytorch.org/whl/cu121
num_workers > 0 训练报错或卡住原因:Windows 多进程要求训练入口在 if __name__ == "__main__": 内,且有时仍不稳定。
解决:加 --num-workers 0 强制单进程加载。
OSError: No space left on device(下载教师时)原因:磁盘空间不足。教师 GPT2 权重约 548MB,加上缓存目录冗余需预留约 1GB。
解决:
HF_HOME 到空间充足的盘。原因:网络访问 HuggingFace Hub 不畅。
解决:
# 设置镜像(示例,按可用镜像调整) set HF_ENDPOINT=https://hf-mirror.com
~/.cache/huggingface/ 整个目录拷贝到目标机器。ConnectionError / ProxyError 下载失败原因:代理配置问题。
解决:检查代理环境变量 HTTP_PROXY / HTTPS_PROXY 是否正确设置,或临时关闭代理重试。
可能原因与排查:
| 排查点 | 检查方法 |
|---|---|
| 学习率太小 | 看 lr 是否接近 0,尝试调大 --learning-rate |
| 学习率太大(震荡) | 看 loss 是否剧烈跳动,尝试调小 |
| 数据问题 | 打印一个 batch 的 x、y,确认 y 是 x 左移一位 |
| 损失实现 bug | 用随机数据跑第 6 章的健康性检查 |
| 教师未正确加载 | 确认日志打印了「教师参数量 124M」 |
可能原因:
--student-n-embd 和 --student-n-layer。--max-iters。kd 损失为 0 或不下降可能原因:
--alpha 0.5 即可。--temperature。RuntimeError: CUDA out of memory原因:显存不足。
解决(按优先级):
--batch-size(如 32 → 8)。--block-size(如 128 → 64)。--student-n-embd。排查:
| 现象 | 可能原因 | 解决 |
|---|---|---|
| 用 CPU 训练 | 未用 GPU | 确认 CUDA 可用,用 --device cuda |
| 教师反复前向慢 | 未开缓存 | 加 --cache-teacher |
| 数据加载慢 | num_workers=0 | 适当增大(Windows 谨慎) |
可能原因:学习率过大导致数值爆炸。
解决:
--learning-rate。--grad-clip 生效(默认 1.0)。size mismatch 报错原因:checkpoint 内的学生架构与当前配置不一致。
解决:本项目会自动从 checkpoint 恢复学生架构配置。若仍报错,手动确认训练时和评估时的 --student-n-layer/n-head/n-embd 一致。
可能原因:
解决:用最终 checkpoint student_final.pt 评估,确认 block_size 一致。
含义:学生分布偏离教师很多,蒸馏对齐不好。
解决:
原因:采样温度过低,退化为贪心。
解决:
--temperature(如 0.8)。--top-k(如 40)增加多样性。原因:温度过高或学生训练不足。
解决:
--temperature(如 0.7)。--top-k(如 20)。原因:本项目主要在英文莎士比亚语料上蒸馏,且 GPT-2 分词器对中文支持有限。
解决:本项目定位为英文模型,建议用英文提示。若需中文能力,需换中文语料与支持中文的分词器重新蒸馏。
原因:生成中(模型逐 token 生成,可能较慢)。
解决:等待,或减小 --max-new-tokens。CPU 推理较慢,建议用 GPU。
--cache-teacher 后磁盘暴涨原因:教师缓存占用空间大(每样本约 block_size × vocab × 4 字节)。
解决:
原因:通常是内存不足或磁盘满。
解决:
teacher_cache_shard(在配置中),让分片更小、更早落盘。遇到未知问题时,按这个顺序排查:
遇到问题时,依次确认:
import 测试)torch.cuda.is_available())若本附录未覆盖你的问题,建议带上完整的报错信息与复现命令寻求帮助。排查时务必提供:① 完整报错栈,② 你执行的命令,③ 相关的环境信息(OS、GPU、依赖版本)。