cached_dataset.py)作用:将预处理后的数据集保存为缓存格式,避免训练时重复 tokenize。
MS-SWIFT 的数据缓存分为三个层次:
LlamaFactory 通过继承 transformers 的 Seq2SeqTrainingArguments 来获得完整的训练参数,无需单独定义。因此,你可以直接在 YAML 配置文件中添加 save_total_limit 参数,它会自动被识别和使用。
具体使用方式
在 YAML 配置文件中设置如下参数:
yaml展开代码save_steps: 500
save_strategy: steps
save_total_limit: 3 # 最多只保留最近的3个检查点
参数说明
| 参数 | 说明 |
|---|---|
save_total_limit | 设置保留的检查点文件的最大数量。旧的检查点会被自动删除。 |
save_steps | 每隔多少步训练保存一次检查点。 |
save_strategy | 检查点的保存策略。可选 "steps" (按步数保存)、"epoch" (按轮次保存) 或 "no" (不保存)。 |
save_only_model | 如果为 True,则只保存模型权重,不保存优化器状态,以节省空间。 |
load_best_model_at_end | 如果为 True,训练结束时自动加载效果最佳的模型。开启后,最佳模型不会被 save_total_limit 删除。 |
工作流程
HfArgumentParser 进行解析。transformers.TrainingArguments 的 TrainingArguments 类。Trainer 在训练过程中将根据这些设置自动管理检查点的保存和删除。注意事项
load_best_model_at_end 时,最佳的模型检查点会被额外保留,不计入 save_total_limit 的限制。save_strategy 设置为 "steps" 以配合 save_steps 使用,实现定期的检查点保存。根据代码分析,LlamaFactory 支持两种使用 SwanLab 的方式:
use_swanlab (推荐)这是 LlamaFactory 原生支持的方式,配置参数定义在 SwanLabArguments 类中 (src/llamafactory/hparams/finetuning_args.py:404-440):
yaml展开代码### SwanLab 配置
use_swanlab: true
swanlab_project: run-qwen3vl8b-mmdu-1009
swanlab_mode: cloud # 或 local
swanlab_api_key: pM7Xvs5OS2EeXPO5gKXfJ # 建议通过环境变量设置
swanlab_run_name: my_experiment # 可选:实验名称
swanlab_workspace: my_workspace # 可选:工作空间
swanlab_logdir: ./swanlab_logs # 可选:本地日志目录