☰
DataFlex YAML配置完全指南:一文掌握大模型动态训练train_type、warmup_step全部参数
2026/10/1 14:48:45 网站建设 项目流程

DataFlex YAML配置完全指南:一文掌握大模型动态训练train_type、warmup_step全部参数

【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权,提升训练速度和性能,与 LLaMA-Factory 无缝集成,提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlex

DataFlex是一款构建在 LLaMA-Factory 之上的大模型动态训练数据选择框架,支持在训练过程中动态进行数据选择(Data Selection)、领域比例调整(Data Mixture)与动态加权(Data Reweighting)。本文带你系统读懂 DataFlex 的 YAML 配置文件:从最关键的train_type训练模式开关,到warmup_step、update_step等全部动态参数,一张表、一张图讲清楚,新手也能快速上手写出自己的训练配置。

📎 仓库自带data/演示数据集(alpaca、c4、wiki 等),可配合下方示例配置直接跑通一次小规模动态训练。

一、配置文件由哪两部分组成?

DataFlex 的配置文件 =标准 LLaMA-Factory 字段+DataFlex 动态训练字段,通常用注释分成几个段落:

段落作用典型字段
### model指定模型model_name_or_path
### method训练阶段与方法stage(pt/sft)、finetuning_type(lora/full)
### dataset数据集与模板dataset、template、cutoff_len
### train常规超参learning_rate、num_train_epochs、bf16
### dynamic_train⭐ DataFlex 专属train_type、component_name、warmup_step

动态参数的定义源码在 dynamic_params.py 与 dynamic_data_params.py 中,每个字段的 help 注释都写得很清楚。

二、train_type:4 种训练模式怎么选?

train_type是 DataFlex 配置的总开关,决定使用哪个动态训练器:

取值模式适用场景
static静态训练(默认)不做任何动态调度,等价于原生 LLaMA-Factory
dynamic_select动态数据选择定期暂停训练,按策略(LESS/NICE/Loss 等)重新挑选样本
dynamic_mix动态领域混合多数据集按比例混合,比例可动态调整(DoReMi/ODM)
dynamic_weight动态样本加权反传时按样本特征动态调整 loss 权重

💡 未写train_type或设为static时,DataFlex 不会修改 LLaMA-Factory 的任何默认行为,完全兼容。

三、核心动态参数速查表

这是整篇文章最重要的一张表,收藏即可:

参数类型默认值含义
train_typestrstatic训练模式,四选一(见上表)
components_cfg_filestrconfigs/components.yaml算法参数文件路径
component_namestrLoss选择具体算法,须与 components 文件中定义的 key 一致
warmup_stepint0预热步数。选择/混合模式下为开始动态调度前的常规训练步数;加权模式下是全局步数阈值,达到后才开始重加权
update_stepint0每次动态更新之间的间隔步数
update_timesint1每个 Flex epoch 内更新次数;<=0表示不设固定次数
static_mixboolfalsedynamic_mix下为true时固定混合比例、不动态更新(DoReMi 第 1/3 步使用)
train_stepint0总训练步数。大于 0 时覆盖num_train_epochs计算出的步数
mixture_sample_rulestr-仅dynamic_mix:mixture(按初始比例)/stratified(按数据集大小)/uniform(均匀)
init_mixture_proportionslist-各源数据集的初始混合比例,如[0.5, 0.5]

四、步数怎么算?Flex Epoch 的语义

这是新手最容易踩坑的地方。对dynamic_select,num_train_epochs重复的是Flex epoch,一个 Flex epoch 包含:

一个 Flex epoch = warmup_step + update_step × update_times

例如warmup_step: 10、update_step: 10、update_times: 2、num_train_epochs: 3,则总共运行3 × (10 + 10×2) = 90个优化步。若要回到"单 Flex epoch"的老行为,设num_train_epochs: 1.0即可。

对dynamic_weight,warmup_step是全局步数阈值,跨 epoch 不重置;重加权从global_step >= warmup_step开始生效。

⚠️ 官方建议:动态训练时优先使用eval_strategy: "steps"/save_strategy: "steps",或干脆用"no"关闭,避免按 epoch 评估与 Flex epoch 边界对不齐。

五、三种动态模式的典型配置模板

以 less.yaml 为例,dynamic_train段核心写法:

① 动态选择—— examples/train_lora/selectors/less.yaml

train_type: dynamic_select components_cfg_file: src/dataflex/configs/components.yaml component_name: less # 可选:less / nice / loss / delta_loss / tsds / near / random warmup_step: 10 update_step: 10 update_times: 2

② 动态混合—— doremi_step2_dynamic_qwen_pt_lora.yaml

train_type: dynamic_mix component_name: doremi # 可选:doremi / odm / static / random mixture_sample_rule: mixture init_mixture_proportions: [0.5, 0.5] # 多数据集用逗号:dataset: wiki_demo,c4_demo warmup_step: 100 update_step: 200 update_times: 3

③ 动态加权—— examples/train_lora/weighters/loss.yaml

train_type: dynamic_weight component_name: loss # 可选:loss / adapt / joint_update_aware / custom warmup_step: 100 train_step: 500 # 固定 500 步;多 epoch 运行请设为 0

最小混合冒烟测试可参考 test_mix.yaml。

六、components.yaml:算法专属参数放在哪里?

训练 YAML 只负责"选哪个算法",每个算法的超参数统一写在 src/dataflex/configs/components.yaml 中,按三大类分节:

  • selectors:如less的gradient_type、proj_dim;tsds/near需要先运行 offline_tsds_selector.py、offline_near_selector.py 生成.npy文件再填入路径;
  • mixers:如doremi的reweight_eta、odm的alpha、initial_proportions;
  • weighters:如loss的strategy: linupper、adapt的tau(需配置eval_dataset作为锚点集)。

这种"训练配置 + 组件配置"分离的设计,让你换算法时只改一行component_name。

七、配置自查清单 📋

写完后逐条对照,能避开 90% 的报错:

  • component_name在components_cfg_file指定文件的对应分类(selectors/mixers/weighters)下真实存在
  • dynamic_mix的dataset用逗号列出多个数据集,且init_mixture_proportions长度一致
  • warmup_step是步数而非 epoch,动态模式建议 ≥ 几百步,让模型先"热身"
  • 想让num_train_epochs生效时,确保train_step为 0(或 CLI 传train_step=0)
  • 多卡训练加环境变量:FORCE_TORCHRUN=1 dataflex-cli train <config.yaml>
  • 也支持 CLI 覆盖单个参数:dataflex-cli train <config.yaml> learning_rate=5e-5 warmup_step=20

更多示例配置集中在examples/目录:LoRA 选择器在examples/train_lora/selectors/,混合器在 examples/train_lora/mixers/,加权器在 examples/train_lora/weighters/,DeepSpeed 配置在 examples/deepspeed/。

八、常见问题 FAQ

Q1:只想体验,不想改参数怎么办?直接跑仓库内置示例:dataflex-cli train examples/test/test_mix.yaml,小数据集几分钟即可验证动态混合流程。

Q2:warmup_step设 0 可以吗?可以。动态调度从第 0 步就开始,但模型初期状态不稳定,一般建议留出少量预热步数(示例中普遍为 10~200)。

Q3:DoReMi 为什么要用static_mix: true?DoReMi 是三步流程:第 1 步用静态比例训参考模型、第 2 步动态优化域权重、第 3 步再用优化后的权重静态训练。第 1/3 步把static_mix设为true即"固定比例、不动态更新",完整流程参考 examples/train_full/mixers/ 下的 step1~step3 配置。

Q4:完整文档在哪里看?仓库内置使用指南 skills/how_to_use.md,包含安装、CLI 命令、训练模式与全部支持算法的详细说明;想扩展新算法可参考 skills/how_to_add_algorithm.md。

✅ 掌握train_type选模式、component_name选算法、warmup_step/update_step定节奏这三个核心,你就已经会写 DataFlex 90% 的场景配置了——现在就可以复制一份示例 YAML,开始你的第一次动态数据训练!

【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权,提升训练速度和性能,与 LLaMA-Factory 无缝集成,提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlex

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询