ARTICLE DETAIL

资讯详情

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

DataFlex基于梯度的动态数据选择实战:用LESS与NICE快速锁定最有价值的训练样本

DataFlex基于梯度的动态数据选择实战:用LESS与NICE快速锁定最有价值的训练样本 DataFlex基于梯度的动态数据选择实战用LESS与NICE快速锁定最有价值的训练样本【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权提升训练速度和性能与 LLaMA-Factory 无缝集成提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlexDataFlex 是一个构建在 LLaMA-Factory 之上的大模型训练数据控制系统支持训练过程中的动态数据选择、领域比例调整与动态加权。本文聚焦它的两大基于梯度的动态数据选择算法——LESS 与 NICE它们会计算每条训练样本的梯度并与验证集的梯度方向做相似度匹配从而自动锁定对目标任务最有价值的训练样本帮你用更少的数据、更短的步数训出更好的模型 为什么要做基于梯度的数据选择大模型 SFT/PT 阶段最常见的浪费是数据集里混着大量冗余、低质甚至噪声样本模型对它们一视同仁地训练。而 LESS 与 NICE 的思路是——样本的价值 它的梯度方向与目标任务验证集梯度方向的相似度。相似度越高这条样本训练得越对路。训练集中的一条样本长这样比如一道需要结合图形推理的几何题DataFlex 会在训练每隔若干步暂停一次给剩余样本逐条打分、挑出 top-k重建 dataloader 后继续训练整个过程由动态选择训练器 select_trainer.py 自动调度无需改动你的训练代码。LESS 原理逐样本投影梯度 × 验证集相似度LESS 的实现位于 less_selector.py流程只有四步逐样本求梯度对每个训练样本做一次 forward backward得到整条参数梯度向量支持adam/sgd两种类型Adam 会借用优化器的一阶、二阶矩做归一化兼容 DeepSpeed ZeRO-3 分区参数。随机投影降维用 TRAK 的 Rademacher 投影把超大规模梯度压缩到proj_dim维默认 4096既省内存又几乎不损失相似度信息。计算相似度每条训练样本的投影梯度与验证集投影梯度的均值点积得到一个价值分数。Top-K 选中分数最高的update_step个样本进入下一轮训练结果写入cache_dir/step_{step_id}.json供复现与断点续传。验证集样本则是一类开放问题例如一张相图分析题LESS 依赖 TRAK安装时需加装扩展pip install -e .[less]。LESS 一键配置只需改一个 component_nameLESS 的示例配置在 less.yaml它就是一个标准 LlamaFactory YAML只多了dynamic_train一段train_type: dynamic_select # 动态选择训练器 components_cfg_file: src/dataflex/configs/components.yaml component_name: less # 切换算法只需改这里 warmup_step: 10 # 前 10 步随机热身 update_step: 10 # 每 10 步重新选一次样本 update_times: 2 # 每个 Flex epoch 内选择 2 次 eval_dataset: alpaca_zh_demo # 验证集LESS 用它计算目标梯度组件参数梯度类型、投影维度、缓存目录等统一在 components.yaml 的selectors.less段维护例如gradient_type: adam、proj_dim: 4096、save_interval: 16。启动训练只需一条命令dataflex-cli train examples/train_lora/selectors/less.yaml多卡时加上环境变量即可FORCE_TORCHRUN1 dataflex-cli train examples/train_lora/selectors/less.yaml 注意warmup_step、update_step抽出的样本数不能超过数据集大小eval_dataset必须配置否则没有目标梯度可比。NICE 原理让奖励模型替你判断样本好不好NICEnice_selector.py把梯度选择升级成了RL 风格的信号训练侧与 LESS 相同逐样本投影梯度验证侧则换成了强化学习梯度策略模型采样对验证集样本用策略模型做mc_samples默认 4次蒙特卡洛生成奖励模型打分奖励模型对每次生成给出 0~1 分支持有/无参考答案两种提示模板也可配置本地 vLLM 或 API 后端;策略梯度以奖励 × 序列对数似然回传得到反映该样本对模型能力提升有多重要的梯度向量同样投影 Top-K与训练侧投影梯度算相似度选出最高分样本。配置见 nice.yaml除component_name: nice外还需要在 components.yaml 中指定策略模型与奖励模型路径、mc_samples、max_new_tokens等生成参数。NICE 信号更任务导向适合有高质量奖励模型的 SFT 场景但计算开销也更高。LESS vs NICE怎么选维度LESSNICE验证侧信号直接算验证集 SGD 梯度策略模型生成 奖励模型打分额外依赖TRAKpip install -e .[less]本地策略模型 奖励模型单轮开销较低较高含多次生成适用场景通用快速筛选、大规模数据集有奖励模型、追求任务对齐质量两者共用同一套调度与缓存机制投影梯度按train/、eval/分目录落盘为all_projected_grads.pt支持断点续传中途挂掉会自动从上次保存的位置继续已完成的步骤还会通过step_*.json直接复用避免重复计算。上手清单与最佳实践环境Python 3.11clone 仓库后pip install -e .LESS 再装.[less]扩展git clone https://gitcode.com/OpenDCAI/DataFlex cd DataFlex pip install -e .[less]小数据集先试跑用alpaca_en_demoalpaca_zh_demo这套 demo 数据跑通 LESS确认dataflex_saves/less_output下能看到all_projected_grads.pt与step_*.json。调选择节奏update_step越小越勤快但越耗时update_times控制每个 Flex epoch 内的选择次数。多卡并行FORCE_TORCHRUN1启动梯度计算自动分 rank 并行并合并归一化。组合玩法LESS 选出的分数还可以被数据重排序组件复用score_source: cached_selection与 Lego 流水线搭配实现选择 排序联合调度详见 components.yaml 中的pipelines段。用 LESS 或 NICE 做基于梯度的动态数据选择本质上就是让每一分训练算力都花在刀刃上。改一行component_name你就能在 DataFlex 中体验从全量硬训到精准选样的升级把训练速度与最终性能一起拉起来 ✨【免费下载链接】DataFlex可用于大模型训练时动态进行训练动态训练数据选择、领域比例调整及动态加权提升训练速度和性能与 LLaMA-Factory 无缝集成提供灵活强大的训练控制能力。项目地址: https://gitcode.com/OpenDCAI/DataFlex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表