训练跑到一半报 No space left on device,检查发现每个 epoch 存了三个完整权重,磁盘只剩不到 2G。

这类报错背后常见的原因有几处,逐个排除就行。默认保存全部 checkpoint,没有数量上限;每个 checkpoint 都包含优化器状态,体积翻倍;同时保存了 adapter 与完整权重;旧实验的产物没有清理。

限制保留的 checkpoint 数量

TrainingArguments(output_dir='./out', save_total_limit=2)

只保存模型不保存优化器状态

TrainingArguments(output_dir='./out', save_only_model=True)

训练前清理历史产物

python -c "import shutil,glob;[shutil.rmtree(d) for d in glob.glob('./out/checkpoint-*')]"

监控磁盘剩余空间

Get-PSDrive C | Select-Object Free

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

这台环境是别人交接的,不少默认值被动过,只能一项项核。

别只看报错消失,验证要多做一步。磁盘占用稳定在可控范围,训练能完整跑完,最后只保留最近两个检查点。

提醒一点。只保存模型后无法精确续训,因为优化器状态丢了,需要断点续训的实验不能开这个选项。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189