ms-swift export 导出packing数据:
bash展开代码# Qwen3-VL 多模态模型导出 cached_dataset
IMAGE_MAX_TOKEN_NUM=5000 \
MAX_PIXELS=1003520 \
VIDEO_MAX_TOKEN_NUM=128 \
FPS_MAX_FRAMES=16 \
swift export \
--model /mnt/jfs6/model/Qwen3-VL-8B-Instruct/ \
--dataset 'your_dataset_name' \
--split_dataset_ratio 0 \
--dataset_num_proc 16 \
--max_length 10240 \
--to_cached_dataset true \
--output_dir /path/to/output/cached_dataset
训练时候使用:
bash展开代码# 训练时使用
IMAGE_MAX_TOKEN_NUM=5000 \
MAX_PIXELS=1003520 \
VIDEO_MAX_TOKEN_NUM=128 \
FPS_MAX_FRAMES=16 \
swift sft \
--model /mnt/jfs6/model/Qwen3-VL-8B-Instruct/ \
--cached_dataset '/mnt/jfs6/g-xiedong/cached_dataset/train' \
--cached_val_dataset '/mnt/jfs6/g-xiedong/cached_dataset/val' \
--packing true \
--packing_num_proc 64 \
--max_length 10240 \
IMAGE_MAX_TOKEN_NUM、max_length 需要一致 !
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 # 可选:本地日志目录