ARTICLE DETAIL

资讯详情

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

DeepOpen Laya × CLINC150 第二轮提点实验:R-Drop、成组 SupCon 与权重平均的候选比较实践指南

DeepOpen Laya × CLINC150 第二轮提点实验:R-Drop、成组 SupCon 与权重平均的候选比较实践指南 【免费下载链接】deepopen非自回归System 1决策引擎专为结构化类型决策场景设计 DeepOpen Multilingual, non-autoregressive System 1 decision engine.项目地址https://gitcode.com/gh_mirrors/de/deepopen点击查看免费下载本文以仓库内 clinc150/ROUND2_PLAN.md 为核心骨架系统讲解 DeepOpen 项目在 CLINC150 任务上第二轮提高准确率的完整实验方案五类有界候选概率集成、权重平均、成组监督对比学习、R-Drop、发布选择规则的设计动机、超参数细节、源码级实现原理与冻结测试流程。读完本文你将掌握一套仅用训练/验证数据选模型、如实保留负结果、冻结后统一测试的可复现提点方法论并能直接依据仓库脚本复现 R-Drop 单模型 97.7556% 的验证选中结果。第二轮实验发生在第一轮测试汇总结果公开之后属于知晓既有成绩的后续开发而非全新盲测。因此整套方案的第一原则不是追求分数而是纪律只分析训练/验证样本不读取第一轮测试错误来设计方法固定候选后一次性测试如实报告所有被选方法包括失败结果不得将验证分数写成测试分数。本仓库对应的第二轮实现代码位于 clinc150/round2.py方法细节见 clinc150/ROUND2_METHODS.md完整结果见 clinc150/ROUND2_REPORT.md。一、实验前提与数据纪律第二轮所有结论都建立在一套严格的数据使用边界上这决定了候选集合的设计方式数据用途划分数量允许的操作训练train15,000更新模型参数选择validation3,000选择 checkpoint、比较候选、选择集成测试testin-domain4,500仅在冻结选择规则后运行一次OOS 数据不纳入主任务。如果继续迭代导致验证集被过度使用例如多轮开发反复查看同一批 3,000 条验证样本计划中明确要求应在另一数据集或新标注集上检验推广性。此外第二轮明确遵守三条硬约束不根据第一轮测试错误逐条调参——测试汇总成绩只能用来规划方法不能用来修改方法不得将验证分数写成测试分数——验证准确率只是选择依据发布分数必须来自冻结后的完整 test 评测负结果必须保留——权重平均可能失败、成组 SupCon 可能不涨点这些结果都要进入报告不能只挑好看的说。二、有界候选与选择五类候选的总览为避免反复看测试集调方法带来的选择偏差第二轮把候选限制在一个有界集合内共五类概率均值集成对既有六个模型CE 三种子、SupCon 三种子做验证错误重叠分析固定比较三种等权概率集成——CE 三模型、SupCon 三模型、全部六模型权重平均Model Soups 风格逐种子 CE/SupCon 各半平均、跨种子 SupCon 平均、全部六模型平均两个新训练候选均从原始 Laya 权重初始化成组监督对比学习balanced_supcon与 R-Droprdrop发布选择按 validation accuracy 与 NLL 选择发布单模型允许发布验证最优的固定集成但不得把集成提升说成单模型提升统一测试冻结路径、权重摘要、推理规则后一次性测试与第一轮做逐样本配对统计但不利用配对错误再次修改方法。关于第 4 类需要特别说明在三种子复验期间、测试之前计划补充两个新训练家族各自的三种子等权概率集成加上第一轮的 ce3、supcon3、all6共五个固定集成候选明确不搜索任意子集或额外混合系数。这一限制在代码中体现为round2_finish.py的freeze()只枚举预定义的balanced_supcon3、rdrop3与 round2.py 中ensemble_groups()返回的ce3、supcon3、all6。三、候选 A验证错误重叠分析与概率均值集成3.1 分析什么第一步是对既有六个模型ce_13/42/87、supcon_13/42/87产物位于artifacts/runs/在 3,000 条验证样本上做错误重叠分析统计六个模型同时判错的样本数、SupCon 三个种子中至少一个判错/全部判错的样本数并输出验证集最优模型第一轮选中的 SupCon seed 87的混淆矩阵 top-20。这些诊断结果写入artifacts/round2/diagnostics.json逐条错误文本写入validation_errors.jsonl。对应的实现是 round2.py 的diagnose()。值得注意的是该函数还计算了一个关键量并写入诊断文件batch64_expected_positive_anchor_fraction 1 - (1 - 1/150)^63 ≈ 34.39%这个数值随机 batch 中单个样本有同类正样本的概率正是候选 C 的设计动机后面会展开。3.2 集成如何固定概率集成对多个模型的 softmax 输出取等权均值。三个固定组合为集成名成员模型数ce3ce_13, ce_42, ce_873supcon3supcon_13, supcon_42, supcon_873all6上述六个模型全部6代码实现见 round2.py 的ensemble_groups()。集成会带来明确的额外推理成本——每个成员都需要一次编码器前向all6相当于 6 次编码因此报告中集成分数必须单独标注不能混入单模型分数。四、候选 B权重平均Model Soups权重平均把指定模型各参数的等权算术平均保存为一个完整 checkpoint见 round2.py 的soups()。它不增加模型大小推理架构与参数量与单模型完全一致从部署角度极具吸引力。计划的平均组合包括平均组成员paired_13ce_13 supcon_13同种子各半paired_42ce_42 supcon_42paired_87ce_87 supcon_87supcon3supcon_13 supcon_42 supcon_87all6六个模型全部平均但计划明确指出一个技术风险不同 seed 的分类头初始化不同直接平均可能损伤语义对齐使平均失败。因为平均的有效性由验证结果决定不能由公式保证所以负结果必须保留。从第二轮实际报告看soup 家族的验证准确率介于 97.5667%98.0333%确实整体低于两个新训练家族属于被如实保留的负结果区间。在soups()实现中平均只对浮点参数进行非浮点参数如 buffer必须逐值相等并断言平均后的模型重新以IntentModel加载并在验证集上打分score_and_save保存validation.npz供后续集成诊断复用。五、候选 C成组监督对比学习balanced_supcon5.1 动机随机 batch 的正样本饥荒第一轮的 SupCon 使用与 CE 相同的随机 batch。在 150 类任务上每个 batch 中某个样本至少有一个同类正样本的概率约为 34.39%见上文诊断函数中的计算公式。没有正样本的锚点不会产生 SupCon 损失这意味着大约三分之二的样本在每次更新中实际上退化为纯 CE。这个正样本饥荒问题正是成组采样的动机。5.2 BalancedBatches 采样器新的采样器将每类 100 个训练样本随机划分为25 个四样本块每轮对 150 类做 25 次随机排列将块依次合并为 batch每批 16 个块最后一轮剩 6 个块。由此得到的关键性质每轮恰好235 个 batchceil(15000/64)15,000 个样本各出现恰好一次每批是最多 16 类跨排列边界时某类可能出现两个块而非保证恰好 16 个不同类所有锚点至少有三个同类正样本SupCon 对每个样本都有效。实现见 round2.py 的BalancedBatches(Sampler)__len__返回 235__iter__用np.random.default_rng(seed epoch)驱动每 epoch 递增种子类内 100 个样本先permutation再reshape(-1, 4)成 25 个块随后 25 次对 150 类做排列并逐类弹出块最后按每 16 块切片产出 batch。5.3 损失与训练设置损失为L CE 0.1 × SupCon对比温度 0.1其余超参数与第一轮完全一致8 epochs、lr2e-5head 为 2e-4、batch 64、max_len 64。计划还特别提醒损失绝对值不能直接与原随机采样比较因为正样本数量改变了 SupCon 的数值尺度。六、候选 DR-Drop SupCon6.1 编码器 dropout 配置第一轮编码器的 embedding、attention、MLP dropout 均为 0只有分类头 dropout 为 0.1。R-Drop 候选把编码器侧 dropout 全部设为 0.1 并启用 attention 输出的 dropout分类头仍为 0.1。实现见 round2.py 的configure_dropout()它同时修改encoder.config上的attention_dropout / mlp_dropout / embedding_dropout遍历模块把所有nn.Dropout的p设为 0.1并为含attention_dropout属性的模块重建out_drop。6.2 双前向一致性损失对同一个 batch 做两次独立随机前向得到概率分布p1, p2和归一化特征z1, z2L [CE(p1, y) CE(p2, y)] / 2 0.1 × [SupCon(z1, y) SupCon(z2, y)] / 2 [KL(p1 || p2) KL(p2 || p1)] / 2对称 KL 对类别求和、对 batch 取平均两侧分布都参与梯度计算SupCon 在各自的 batch 内独立计算不将两次前向当作额外同类样本拼接。对称 KL 的实现见 round2.py 的symmetric_kl()。训练循环round2.py中rdrop分支会对同一(ids, mask)调用两次model()两次 CE/SupCon 取均值并累加对称 KL梯度裁剪阈值为 1损失为ce 0.1*con kl对比温度 0.1、KL 系数 1.0。6.3 成本与推理该候选一次更新需要两次前向训练计算量增加不能声称与纯算法等计算量比较但推理仍是一次前向dropout 在eval()中关闭没有增加可训练参数。此外本轮验证的是编码器 dropout 一致性正则 SupCon这一组合并未单独消融只开 dropout与只加 KL因此不能把全部收益归因于 KL——这一点在方法文档和报告中都被反复强调。6.4 不变式预检验在投入 GPU 之前clinc150/verify_round2.py 会对两个核心组件做廉价不变式检查BalancedBatches的 235 个 batch 覆盖 014999 全部样本且每个样本恰好出现一次、每批样本数在 (0, 64] 且每类数量为 4 的倍数、每 epoch 顺序不同symmetric_kl满足自为零、对称、梯度有限且非零。该脚本输出PASS: exactly-once balanced coverage, positive pairs, symmetric KL gradients是正式训练前的一道质量闸门。七、种子扩展策略从单次筛选到三种子复验初始计划是先固定seed13筛选两个新候选再决定是否扩展。但执行期间发生了一个值得注意的转折计划原文GPU 0 上其他任务结束后成组训练 seed 13 只比验证最优多提高一个样本单次筛选不可靠因此在 R-Drop seed 13 尚未完成、且未读取本轮测试之前将两个候选都扩展为seed42/87完整报告两大家族。这个预算扩展的依据是资源释放与随机性控制而不是测试结果——计划特意强调这一点以区别于看结果加预算的隐性作弊。扩展后的完整种子矩阵方法seed 13seed 42seed 87balanced_supcon✔✔✔rdrop✔✔✔所有新训练都从原始 Laya 编码器初始化model.load_laya_encoder(BASE)严格加载绝不在第一轮测试选中的模型上继续拟合相同 seed 使用相同分类头初始化。训练只使用 train 划分development_data()round2.py在读取数据时主动丢弃 test 划分从数据结构上杜绝测试信息泄漏。资源变更记录R-Drop seed 42 在共享 GPU 0 上启动后因负载导致耗时接近翻倍实验保留了其未完成运行与日志aborted_rdrop_42_shared_gpu0在 GPU 1 空闲后按完全相同的 seed 与 config 从原始权重重启。该中断运行不参与模型选择——这是处理训练被环境打断的规范做法保留证据、不混用、不删除。八、模型选择与发布规则计划规定所有完成的单模型与固定平均模型按validation accuracy 优先、validation NLL 次优选择发布单模型同时允许发布验证最优的固定集成但不得把集成提升表述为单模型提升。round2_finish.py的freeze()clinc150/round2_finish.py把这一规则固化为代码扫描artifacts/round2/下所有含validation_metrics.json的目录按(accuracy, -nll)取最大值作为selected_single对两个完整复验家族三种子齐全才纳入构造balanced_supcon3/rdrop3等权集成连同诊断阶段的三个固定集成一起按同一规则选出selected_ensemble冻结文件evaluation_freeze.json记录选择规则、全部验证候选、复验家族路径、权重 SHA256、数据 SHA256 与代码 SHA256并声明test_used_for_selection: Falsefreeze()要求SCREENING_COMPLETE与REPLICATES_COMPLETE两个完成标记存在防止流程未走完就冻结。之后evaluate命令先校验数据与源码哈希与冻结记录一致再对冻结清单内的每个模型在完整 4,500 条 in-domain test 上推理输出test_metrics.json与test_predictions.npz已存在的测试记录会被拒绝重跑Test already evaluated防止事后换模型。配对统计与第一轮 SupCon seed 87 做逐样本配对统计paired()clinc150/round2_finish.py统计新模型相对旧模型修正 n 条、退步 m 条用 10,000 次样本重采样 bootstrap 给出 95% 区间并用双侧 exact McNemar 检验给出 p 值。这些统计只用于汇报不用于再次修改本轮方法。九、冻结、测试与导出三阶段流程复现流程的收尾阶段由 clinc150/round2_finish.py 的三个命令完成命令输出职责freezeartifacts/round2/evaluation_freeze.json固化选择规则、候选路径、代码/数据/权重哈希evaluateartifacts/round2/test_summary.json完整 test 评测 三种子家族统计 配对统计exportartifacts/round2/release_single/打包可独立加载的模型、tokenizer、配置、来源记录export()clinc150/round2_finish.py生成一个自包含的release_single/包含model.safetensors、config.json、selection.json、inference_config.json、验证与测试指标、base/encoder与base/tokenizer子目录、infer_clinc.py与train_clinc.py副本以及一份说明这是经真实训练的 ModernBERT 底座 掩码均值池化 150 类线性头专化模型不再保留原 Laya 的 choice/score/noul 通用接口的 README 卡。推理必须使用项目专用脚本python infer_clinc.py --checkpoint artifacts/round2/release_single \ --text what is my bank balance \ --text please book a flight to London部署时须保存完整release_single/目录不能只复制model.safetensors。十、完整复现命令单卡顺序版以下命令摘自 clinc150/README.md 的通用复现指南不依赖原服务器的/opt/...路径在包含train_clinc.py的clinc150/目录下执行# 1. 环境准备Linux/WSL2 Bash建议 16GB 显存 GPU支持 CUDA 与 BF16 python3.12 -m venv .venv source .venv/bin/activate python -m pip install torch2.9.1 --index-url https://download.pytorch.org/whl/cu128 python -m pip install -r requirements.txt export CUDA_VISIBLE_DEVICES0 export USE_TF0 TOKENIZERS_PARALLELISMfalse OMP_NUM_THREADS8 # 2. 固定版本下载与审计 python prepare.py python verify_experiment.py # 3. 第一轮六组基础对照第二轮候选比较的前置输入不可跳过 set -e for method in ce supcon; do for seed in 13 42 87; do python train_clinc.py train --method $method --seed $seed \ --output artifacts/runs/${method}_${seed} done done for method in ce supcon; do for seed in 13 42 87; do python train_clinc.py evaluate --output artifacts/runs/${method}_${seed} done done # 4. 第二轮诊断、权重平均、两个新候选先 seed 13再补齐 42/87 python verify_round2.py python round2.py diagnose python round2.py soups for method in balanced_supcon rdrop; do python round2.py train --method $method --seed 13 done touch artifacts/round2/SCREENING_COMPLETE for method in balanced_supcon rdrop; do for seed in 42 87; do python round2.py train --method $method --seed $seed done done touch artifacts/round2/REPLICATES_COMPLETE # 5. 冻结 → 完整测试 → 导出发布单模型 python round2_finish.py freeze python round2_finish.py evaluate python round2_finish.py export默认超参数为8 epochs、batch 64、max_len 64、encoder LR 2e-5、head LR 2e-4、AdamW weight decay 0.01、10% warmup 线性衰减、梯度裁剪 1、BF16 autocastSupCon 对比温度 0.1权重系数 0.1R-Drop 对称 KL 系数 1.0编码器 dropout 0.1。第二轮脚本的 batch 在代码内固定调整 batch 会改变 SupCon 的正负样本集合需另记配置不能保证复现原分数。十一、第二轮结果一览仓库佐证以下是 clinc150/ROUND2_REPORT.md 记录的自主评测结果正式榜单提交尚未完成本分数为本地评测模型测试准确率说明第一轮 SupCon seed 8797.3778%第一轮验证选出的改进单模型第二轮验证选出的单模型97.7556%artifacts/round2/rdrop_42第二轮验证选出的集成97.7333%rdrop33 个完整模型单模型相对第一轮 0.3778 个百分点配对修正 37 条、退步 20 条配对 bootstrap 95% 区间 [0.0444, 0.7111] 个百分点双侧 exact McNemar p0.033144未做多重比较校正。三种子复验口径下R-Drop 测试均值 97.6593% ± 0.0898相对第一轮 SupCon 均值 0.3333 个百分点条件配对 bootstrap 95% 区间 [0.1037, 0.5556]成组 SupCon 测试均值 97.1778% ± 0.2120相对第一轮 -0.1481 个百分点属于如实报告的负结果。验证集上五个固定集成中rdrop3最优98.4667%随后是supcon398.1667%、all698.1000%、balanced_supcon398.1000%、ce398.0667%。延迟与部署口径NVIDIA L20、batch 1、padding 64、BF16 autocast、20 次预热后测 100 次单模型热启动 p50 为 10.104 ms三模型集成为 30.670 ms新单模型 394,935,446 个参数未增加第一轮模型的参数量。由于等权集成测试分数仅比新单模型少判对一条、成本约三倍报告建议部署单模型并注明一条差异不足以说明显著优劣。十二、方法来源与诚实边界SupConSupervised Contrastive LearningarXiv:2004.11362R-DropRegularized Dropout for Neural NetworksarXiv:2106.14448Model soupsModel Soups: Averaging Weights of Multiple Fine-tuned Models Improves Accuracy without Increasing Inference TimearXiv:2203.05482以上均为已有研究方法本项目不声称首创。报告同时明确基础模型预训练数据未完全披露不能保证上游从未见过本基准单数据集上的提升不足以证明跨领域推广性或论文方法创新性本轮开发已知第一轮测试汇总不是独立盲测R-Drop 同时修改了编码器 dropout 与一致性目标收益不能全部归因于 KL。这些边界保证了结论可以被诚实地引用与复现——而这正是 clinc150/ROUND2_PLAN.md 从第一行贯穿到最后的核心精神先定纪律再谈涨点。赞分享【免费下载链接】deepopen非自回归System 1决策引擎专为结构化类型决策场景设计 DeepOpen Multilingual, non-autoregressive System 1 decision engine.项目地址https://gitcode.com/gh_mirrors/de/deepopen点击查看免费下载相关推荐Laya × CLINC150 第二轮改进实验全解析R-Drop SupCon 验证驱动选型与可复现统计Laya × CLINC150 第二轮改进实验全解析R Drop SupCon 验证驱动选型与可复现统计 本文围绕 DeepOpen 仓库中 Laya 编DeepOpen Laya 第二轮训练方法深度解析SupCon 成组采样、R-Drop 正则化与权重/概率集成的完整实验设计DeepOpen Laya 第二轮训练方法深度解析SupCon 成组采样、R Drop 正则化与权重/概率集成的完整实验设计 导读 本文以 ROUND2_MEDeepOpen Laya CLINC150 第四轮实验候选意图联合判别重排系统的设计与冻结评测DeepOpen Laya CLINC150 第四轮实验候选意图联合判别重排系统的设计与冻结评测 导读 本文以 DeepOpen 仓库 clinc150/RO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表