ARTICLE DETAIL

资讯详情

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

如何做训练动态数据选择?DataFlex四大动态训练模式详解:选择、混合、加权与重排序

如何做训练动态数据选择?DataFlex四大动态训练模式详解:选择、混合、加权与重排序 如何做训练动态数据选择DataFlex四大动态训练模式详解选择、混合、加权与重排序【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权提升训练速度和性能与 LLaMA-Factory 无缝集成提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlex在大模型训练中数据不是喂进去就完事的静态资产——DataFlex是一个基于 LLaMA-Factory 构建的动态训练框架支持在训练过程中动态执行训练数据选择Data Selection、领域比例混合Data Mixture、**样本加权Data Reweighting与数据重排序Data Reorder**四种数据调度策略让你无需重写训练代码就能提升训练速度和最终模型性能。本文带你完整理解 DataFlex 的四大动态训练模式以及每种模式该怎么用、适合什么场景。为什么需要动态数据调度传统训练流程里数据集在训练开始前就固定了哪些样本、按什么比例、以什么顺序全都一成不变。但模型在训练过程中能力是不断变化的——前期觉得难的样本后期可能已经学会某个领域的数据可能比另一个领域更急需。DataFlex 的核心思路就是在训练循环内部根据模型当前的状态梯度、损失、相似度等信号动态地决定下一步喂什么数据。它在 LLaMA-Factory 之上实现了完整兼容的替换式训练器标准 YAML 配置加几个字段即可启用LoRA / 全量微调 / DeepSpeed 均可无缝衔接。四大模式总览DataFlex 通过训练配置中的train_type字段切换模式四种核心模式与对应组件目录如下模式train_type解决什么问题组件目录动态选择dynamic_select哪些样本值得学src/dataflex/train/selector/动态混合dynamic_mix各领域数据给多少比例src/dataflex/train/mixer/动态加权dynamic_weight每个样本损失算多大权重src/dataflex/train/weighter/动态重排序dynamic_reorder样本按什么顺序喂src/dataflex/train/reorder/模式一动态数据选择dynamic_select核心思想每隔固定步数暂停训练用当前模型对样本打分挑出最有价值的子集继续训练把预算花在刀刃上。工作流程预热阶段先用随机采样数据训练warmup_step步周期性更新每到warmup_step及其后每隔update_step步暂停训练 → 运行选择器打分 → 重建数据加载器一个 Flex 轮次的总步数 warmup_step update_step × update_times。内置选择算法DataFlex 整合了多篇论文的复现实现按信号来源分为三类梯度类LESS基于与验证集梯度相似度、NICE神经重要性采样、ICONS、Coincide、Cluster-LESS损失类Loss按当前训练损失选样本、Delta Loss按滑动窗口内损失变化选分布类TSDS、NEAR基于预计算的分布/最近邻无需模型参与开销最低。各算法参数统一集中在 src/dataflex/configs/components.yaml通过component_name切换即可。快速体验可以运行官方示例配置dataflex-cli train examples/train_lora/selectors/less.yaml该配置位于 examples/train_lora/selectors/less.yaml完整说明见 skills/how_to_use.md。模式二动态数据混合dynamic_mix核心思想当你的训练集由多个领域/来源拼接而成时动态调整各领域之间的采样比例而不是从头到尾固定不变。多数据集只需在dataset字段中用逗号分隔如dataset: wiki_demo,c4_demo再指定init_mixture_proportions作为初始比例即可。内置混合算法DoReMi三步流水线——先用静态比例训一个参考模型再用动态混合训代理模型输出优化后的领域权重最后用该权重静态训练最终模型。三个阶段的示例配置位于 examples/train_full/mixers/doremi_step2_dynamic_qwen_pt_full.yaml 所在目录ODMOnline Data Mixing基于 Exp3 多臂老虎机的在线混合根据各领域实时损失反馈自适应调整比例无需多步流程配置见 examples/train_full/mixers/odm_dynamic_qwen_pt_full.yamlStatic / Random固定比例或随机比例的基线对照。官方实验表明在 SlimPajama 预训练任务上DoReMi 与 ODM 在 MMLU 准确率上均超过默认混合基线同时多个领域困惑度更低。模式三动态数据加权dynamic_weight核心思想不改变喂什么而是改变每条样本的损失在反向传播中占多大分量——让模型更关注它偏好的数据。工作流程标准训练warmup_step步后开启加权此后每个训练步都会按策略计算逐样本权重。warmup_step按全局步数计算跨轮次不重置。内置加权器包括加权器原理额外要求loss按样本损失值映射权重支持 linupper / quadratic 等策略无adapt样本表示与锚点集的余弦相似度决定权重需提供eval_datasetjoint_update_aware对整个全局 batch 联合求解权重自动折扣已被覆盖的样本需提供eval_dataset示例命令dataflex-cli train examples/train_lora/weighters/loss.yaml实现位于 src/dataflex/train/weighter/。模式四动态数据重排序dynamic_reorder核心思想样本的出场顺序本身就是一种课程Curriculum。DataFlex 提供了 7 种排序模式完整实现了《Demystifying Data Organization for Enhanced LLM Training》论文的四大排序准则sortingCL按分数单调排序从易到难/从低质到高质foldingFO分层折叠周期性复习旧数据zigzagZIG奇数层反向折叠消除周期边界的梯度尖峰segmentSEG边界锐化训练收尾阶段集中高质数据stairSTR/ sawSAW多准则组合论文中的最优配置JIT 抖动任意模式可叠加window_size窗口内局部打乱保留全局趋势的同时恢复 mini-batch 多样性。分数来源灵活支持三种预计算质量分precomputed、模型实时损失model_loss、复用选择器缓存分数cached_selection。动态变体会在每个更新间隔用当前模型重新打分并重排剩余样本。静态模式示例配置见 examples/train_full/reorder/saw_qwen_sft_full.yaml核心实现在 src/dataflex/train/reorder/patterns.py 与 src/dataflex/train/trainer/reorder_trainer.py。进阶乐高式流水线组合dynamic_lego更强大的是DataFlex 还支持把四种模式像乐高积木一样串成流水线。在components.yaml的pipelines部分中每个阶段只声明用哪个家族、哪个预设系统自动保证select → mix → reorder的语义顺序。例如hierarchical流水线就是粗筛 → 领域比例 → 排序 → 样本级加权的完整组合。组合规则与预设定义见 src/dataflex/configs/components.yaml 中的pipelines段。上手三步骤安装pip install dataflex需 Python 3.11自动安装 LLaMA-Factory 依赖写配置复制一份examples/下的示例 YAML修改train_type、component_name和warmup_step/update_step/update_times三个调度参数启动训练dataflex-cli train 你的配置.yaml还可追加keyvalue覆盖任意参数多卡训练加FORCE_TORCHRUN1环境变量。小结动态选择解决学什么、动态混合解决各领域占多少、动态加权解决每条样本算多重、动态重排序解决按什么顺序学。四种模式既可独立使用也可通过乐高流水线自由组合。无论你是想省算力选择/加权、优化多领域预训练混合还是设计数据课程重排序DataFlex 都提供了一份开箱即用、可复现的实现。【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权提升训练速度和性能与 LLaMA-Factory 无缝集成提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表