ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何动态调整预训练领域比例?DataFlex之DoReMi与ODM动态数据混合指南

如何动态调整预训练领域比例?DataFlex之DoReMi与ODM动态数据混合指南 如何动态调整预训练领域比例DataFlex之DoReMi与ODM动态数据混合指南【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权提升训练速度和性能与 LLaMA-Factory 无缝集成提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlex在大模型预训练中不同领域百科、代码、网页等的数据比例如何平衡直接决定模型性能。固定比例往往一刀切而DataFlex提供了更聪明的方案在训练循环中动态调整领域数据比例。作为建立在 LLaMA-Factory 之上的大模型训练数据动态调度框架DataFlex 内置了两大经典数据混合Data Mixture算法——DoReMi与ODM让你在训练过程中自动优化各领域的采样权重从而提升训练速度与最终性能。 为什么需要动态调整领域比例传统预训练的做法是在训练前人为指定各数据域的占比比如网页 40%、百科 20%、代码 40%整个训练过程保持不变。但模型的需求是动态变化的训练初期模型可能更依赖通用文本训练中期代码等结构化数据的作用开始凸显固定比例无法响应这些变化造成算力浪费。DataFlex 的 MixedProportionManager 会按当前比例从多个数据源重建采样快照并在每个更新间隔重新分配预算——这就是动态数据混合的底层机制。所有算法的参数都集中在 components.yaml 中统一管理。 方案一DoReMi 三步走离线求解最优权重DoReMi 属于离线混合先用一个小代理模型探索出最优域权重再把这份配方交给最终的大模型。整个过程分三步DataFlex 为每一步都提供了开箱即用的配置模板。第一步静态训练参考模型先用均匀或指定比例训练一个参考模型reference model它后面充当标尺。配置见 doremi_step1_static_qwen_pt_full.yaml核心字段train_type: dynamic_mix component_name: static # 静态混合器 static_mix: true init_mixture_proportions: [0.5, 0.5] # 均匀作为参考权重第二步代理模型动态更新权重这一步是 DoReMi 的灵魂。DataFlex 的 DoremiMixer 在每个更新点做两件事计算超额损失对比代理模型与参考模型的逐 token 损失取max(代理损失 − 参考损失, 0)作为该领域的超额分数见 compute_batch_excess_losses指数权重更新损失高的领域权重下调损失低的领域权重上调见 _update_domain_weightsreweight_eta控制调整力度、reweight_eps保证权重平滑。配置模板 doremi_step2_dynamic_qwen_pt_full.yaml 中只需把component_name改为doremi并在 components.yaml 里指定第一步产出的reference_model_path。训练结束后会自动保存doremi_weights.jsonl每步权重轨迹和doremi_average_weights.json全程平均权重后者就是第三步要用的最优比例。第三步用最优权重训练最终模型拿到第二步的平均权重例如[0.3, 0.7]后用静态混合器以这份固定比例训练目标模型。见 doremi_step3_static_qwen_pt_full.yamlcomponent_name: static init_mixture_proportions: [0.3, 0.7] # 第二步优化出的权重⚡ 方案二ODM 在线混合边训练边调整如果你不想跑三遍训练ODMOnline Data Mixing是更好的选择。它基于多臂老虎机Exp3 移动平均把每个领域当作一只老虎机奖励信号每个 batch 的训练损失经过重要性加权后用指数移动平均更新该领域的预期奖励核心公式见 _update_reward_from_batch探索与利用算法动态调整探索率ε_t既倾向于采样回报高的领域又保留一定探索防止过早收敛见 _update_policyWarmup 阶段前warmup_steps步按初始比例采样之后才启用 ODM 更新。ODM 只需一次训练配置见 odm_dynamic_qwen_pt_full.yamltrain_type: dynamic_mix component_name: odm mixture_sample_rule: mixture init_mixture_proportions: [0.5, 0.5] update_times: -1 # -1 表示持续更新直到训练结束关键超参在 components.yamlalpha越大权重越稳、越小越灵敏warmup_steps建议设为总步数的 1% 左右。每步权重会记录到odm_weights.jsonl方便你观察比例演化曲线。 DoReMi 还是 ODM一张表说清选择对比项DoReMiODM类型离线混合在线混合训练轮次三步参考 → 代理 → 最终一步到位依赖参考模型需要不需要权重依据超额损失vs 参考模型batch 损失多臂老虎机适合场景追求最优比例、算力较充裕快速迭代、在线自适应 快速上手5 分钟跑通动态混合安装先装 torch再装 DataFlexgit clone https://gitcode.com/OpenDCAI/DataFlex cd DataFlex pip install -e .准备多域数据在配置的dataset字段用逗号分隔列出多个数据集例如dataset: wiki_demo,c4_demo数据源定义见 dataset_info.json启动训练dataflex-cli train examples/train_full/mixers/odm_dynamic_qwen_pt_full.yaml几个高频字段速查字段作用train_type: dynamic_mix启用动态数据混合模式component_name选择算法doremi/odm/static/randommixture_sample_rule采样规则mixture按比例/stratified按源大小/uniforminit_mixture_proportions各领域初始比例长度须等于数据源个数warmup_step/update_step/update_times预热步数 / 更新间隔 / 更新次数-1为持续更新 小贴士调试时先跑 examples/test/ 下的最小配置验证流程确认无误后再上正式数据多卡训练可加FORCE_TORCHRUN1前缀。 小结想要全局最优的领域比例用DoReMi三步流程让代理模型替你试错想要一次训练、实时自适应用ODM让损失信号在线驱动比例演化两者都只需在 YAML 中切换component_name无需改动训练代码——这正是 DataFlex 与 LLaMA-Factory 无缝集成的魅力所在。掌握动态数据混合后你距离高效预训练又近了一步【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权提升训练速度和性能与 LLaMA-Factory 无缝集成提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表