
UltraData-Code-L2-Classifier评测结果详解L2筛选数据如何让LLM在EvalPlus上pass1提升7.8个百分点不增加模型参数能否让大语言模型写出更好的代码UltraData-Code-L2-Classifier给出了答案它是一组面向 11 种编程语言的代码文件级打分器通过 L2 筛选框架从海量代码语料中挑出算法相关、质量高的文件用筛选后的数据对 1B 基座模型持续预训练 10B tokensEvalPlus 上 pass1 平均提升7.80 个百分点MultiPL-E 提升5.13 个百分点。本文将详解 L2 筛选的逻辑与评测数据并说明如何把这套打分器用到你自己的代码语料上。 为什么代码数据筛选比堆量更重要代码生成是 LLM 的核心能力之一而这主要靠预训练阶段的代码数据塑造。当公开高质量代码越来越难获取时单纯扩大语料规模的收益正在递减。UltraData-Code 项目因此采用分层数据管理思路构建四个逐级精炼的数据层级L0完整代码仓库归档保留来源信息L1经过滤、规范化、近重复消除的标准化自然代码L2算法导向精筛保留高算法相关性的文件约400B tokens仅占 L1 文件的12.23%L3将 L2 代码转化为结构化编程练习约 150B tokens。L2 层正是本文主角 classifiers/ 目录下这套打分器的工作成果——用约 1/8 的文件量换来更强的代码生成能力是典型的质量优先路线。 L2筛选是怎么做的从文件编码到筛选策略五步走L2 流程对 11 种语言cpp、csharp、go、java、javascript、php、python、r、ruby、rust、shell见 config.json分别应用同构的五步流水线编码文件用 Qwen3-Embedding-0.6B 为每个文件生成 1024 维 embedding预测文件角色C 模型把文件分为ALGO、WEB、TOOL、DATA、TEST、CONFIG、EXCLUDE七类构造双线索监督ALGO 角色标注 语言特定启发式证据覆盖非 ALGO 但算法相关的文件预测相关性和质量A 模型输出algo_rel_score0~1Q 模型输出quality_score0~10校准并筛选在留出数据上为每种语言校准阈值文件须同时通过相关性阈值默认 0.8、质量阈值默认 3.0且不被判为EXCLUDE才保留。几个值得注意的设计细节路径特征防走捷径A 模型除了 embedding还会拼入文件仓库相对路径的 256 维哈希特征见 scripts/path_features.py。训练时会先剥离leetcode、humaneval等基准名防止模型靠路径中的题目名作弊。质量模型两段式设计一个零分头先拦截配置/数据/无逻辑文件一个有序回归头再把其余文件放到 1~10 的刻度上实现见 scripts/scorers.py。模型自描述每个语言目录只附带一份类别映射文件如 classifiers/python/C_file_role.json网络宽度等结构都从权重张量形状自动恢复。文件作用C_file_role.bin/C_file_role.json文件角色分类器及其七类名称映射A_relevance.bin算法相关性模型融合 embedding 与路径哈希Q_quality.bin/Q_scaler.npz代码质量模型与特征归一化参数 Python评测结果详解算法精筛带来最大自然代码增益评测采用严格控制变量实验相同的 1B 基座模型、训练设置、去污流程与评测协议仅更换训练数据预算为 10B tokens。Python 语言的结果最能体现 L2 的价值UltraData-Code-L2-py 的 EvalPlus 平均 pass1 比L1-py 提升 17.91 个百分点比业界常用教育语料 Stack-Edu-py 提升8.46 个百分点。训练动态曲线显示L2 数据训练出的模型在训练早期就拉开差距且全程保持优势说明增益来自数据本身的信息密度而非训得更久。 多语言评测结果平均提升7.80个百分点把 11 种语言的 L2 数据合并训练后增益依然稳健对比项EvalPlus pass1MultiPL-E pass1L2 vs L1自然代码基线7.805.13L2 vs Stack-Edu4.373.05多语言训练动态同样显示 L2 曲线整体领先且多种语言的提升幅度较为一致说明这套语言自适应筛选框架具有跨语言的泛化能力而非只对 Python 有效。另外当 L3 任务导向合成数据替换一半 L2 训练 tokens 后模型在两个基准上可再提升 8.42 和 8.07 个百分点训练预算扩展到 100B tokens 时上述增益还会进一步扩大——L2 数据的质量红利不会因规模扩大而稀释。️ 如何把L2打分器用在你的代码语料上想在自己的语料上复现这套筛选只需要五步安装依赖pip install numpy torch pyarrow确保输入是 Qwen3-Embedding-0.6B 生成的1024 维embedding输入必须包含embedding列以及relative_path列或含file_path的meta结构运行批量打分脚本 scripts/score_parquet.py指向对应语言目录如classifiers/python加--apply-policy参数按 config.json 中的默认策略algo_rel_min: 0.8、quality_min: 3.0、排除EXCLUDE标记保留行查看输出字段category、cls_confidence、algo_rel_score、quality_score、selected。python scripts/score_parquet.py \ --scorers classifiers/python \ --input data/input \ --output-root data/output \ --apply-policy输出会镜像输入目录结构并保留原有全部列selected只标记、不删除未通过的行方便你先做人工抽检。注意相关性打分需要传入与 embedding 顺序一致的真实仓库相对路径大规模语料建议按子目录分片调度脚本为单进程实现参数说明见 scripts/score_parquet.py。 小结代码数据质量优先的完整参考UltraData-Code-L2-Classifier 的价值可以概括为三点可解释的筛选角色分类 相关性 质量三道约束比黑盒去重更能定位哪些文件被留下、为什么可量化的收益L2 让 pass1 在 EvalPlus 上提升 7.80、MultiPL-E 上提升 5.13Python 单项提升更是高达 17.91可直接复用11 种语言的打分器与脚本均已开源任何使用同维度 embedding 的代码语料都能套用。核心资料索引项目说明README.md英文/ README_ZH.md中文筛选策略默认值config.json打分器加载与推理scripts/scorers.py路径特征构造scripts/path_features.py批量打分入口scripts/score_parquet.py各语言模型权重classifiers/含 python、cpp、java 等 11 个目录创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考