IndicLLMSuite
ACL 2024 杰出论文奖获奖项目,专注于印度22语言的预训练/微调数据集构建工具链,包含251B Token语料库和7470万条指令数据
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
ACL 2024 杰出论文奖获奖项目,专注于印度22语言的预训练/微调数据集构建工具链,包含251B Token语料库和7470万条指令数据
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024年ACL大会颁发了一项"杰出论文奖"(Outstanding Paper Award),获奖论文的研究对象不是某个新模型,而是一套数据构建工具链——这本身就说明了AI领域正在发生某种范式转移:当所有人都在讨论模型架构时,真正的瓶颈已经悄悄转移到了高质量训练数据的供给能力上。
获奖项目名为 IndicLLMSuite,由印度 AI4Bharat 团队开源发布。它瞄准的是印度22种语言的大模型数据缺口问题——这些语言覆盖超过10亿人口,却在英语大模型繁荣发展的同时几乎完全缺席。
图1:IndicLLMSuite 项目架构总览
构建印度语大模型的困难并非算法问题,而是一个数据基础设施问题。以印地语(Hindi)为例,虽然它是全球第四大语言,拥有约6亿母语者,但在开源高质量预训练数据方面,其规模与英语相差数十倍。原因有三:
第一,数据源质量参差不齐。 印度语网页充斥着机器翻译内容、低质量博客和重复文本,直接爬取等于往模型里灌"噪声"。
第二,OCR质量瓶颈。 大量印度语优质文献以扫描PDF形式存在,OCR识别印地语天城文(Devanagari)、泰米尔文(Tamil)等文字的准确率长期偏低。
第三,数据清洗缺乏专用工具。 主流英文数据清洗工具(如CCNet)对印度语脚本几乎无效——无法正确识别语言边界、分词、重复检测等基础操作。
AI4Bharat团队在构建IndicBERT、IndicTrans2等模型的长期实践中,积累了一套完整的数据处理方法论,IndicLLMSuite正是这套方法论的系统化输出。
IndicLLMSuite 的核心是三个大规模数据集,合计数据量非常可观:
Sangraha 是目前已知规模最大的印度语预训练数据集,覆盖22种语言,总量达2510亿Token。它由三个子集构成,设计逻辑非常清晰:
Sangraha Verified(已验证) 是整个数据集的质量天花板。团队通过人工审核的方式,逐一验证待爬取网站的语言质量,剔除机器翻译站点和有毒内容。这部分工作由一个专用的 URL Verification Portal 完成——该 Portal 本身也随 IndicLLMSuite 开源,研究者可以用来构建自己的数据验证流程。Verified 数据还包含从 Internet Archive 大规模 OCR 提取的 PDF 内容、从印度语视频/播客/电影/课程转录的语音数据。
Sangraha Unverified(未验证) 来自已有的多语言语料库(如CCAligned、Wikipedia)。团队使用基于困惑度(Perplexity)的过滤方法:用 Sangraha Verified 数据训练N-gram语言模型,对候选语料逐句打分,剔除异常值。这借鉴了 CCNet 的思路,但针对印度语做了大量适配。
Sangraha Synthetic(合成) 是最具野心的部分。团队将英文维基百科内容通过 IndicTrans2 翻译成14种印度语,再通过 IndicXlit 将其音译(Romanization)回英文,由此构建了一个高质量的"语言对齐"数据集。这种"翻译→音译→回英文"的双向增强策略,显著增加了数据的语言覆盖密度。
IndicAlign-Instruct 是目前最大的印度语指令微调数据集,包含约7470万条 prompt-response 对,采用四种方法构建:
此外,团队还专门搭建了 Anudesh 众包平台,邀请印度母语者提交真实场景的指令 prompt。这解决了"翻译数据缺乏文化本土性"的常见问题。
与主流大模型"追求有用性"不同,IndicAlign-Toxic 专门解决安全性对齐问题。它包含两类数据:
这部分数据目前已覆盖17种印度语,包含了各语言特有的NSFW词汇表(同样随项目开源)。
如果说数据集是"鱼",那么 Pipeline 就是"渔"。IndicLLMSuite 真正有技术含量的部分,是这三个开源的数据处理流水线:
Setu 是核心清洗引擎,基于 Apache Spark 构建,负责对网页、PDF、语音三类数据源的清洗、过滤和去重。它包含四个阶段:文档准备(Document Preparation)、清洗与分析(Cleaning & Analysis)、标记过滤(Flagging & Filtering)、去重(Deduplication)。Setu 对不同语言脚本有专门的文本规范化逻辑,处理天城文、泰米尔文等复杂脚本时不依赖拉丁字符,这是它与通用工具的本质差异。
Setu-translate 是大规模翻译流水线,基于团队自研的 IndicTrans2 模型(已单独开源)。它有三个阶段:Templating(模板化)、Inference(推理翻译)、Replace(实体替换),目标是实现"结构保留式"翻译——即在翻译过程中保持文档的标题、列表、表格等结构不变。这对预训练语料的格式质量至关重要。
Setu-transliterate 是音译流水线,使用 IndicXlit 将印度语文字转换为罗马字母(Romanized)。这不仅用于 Sangraha Synthetic 的构建,也用于所有指令微调数据集的罗马化版本,方便研究者在拉丁字符环境下处理数据。
IndicLLMSuite 还开源了两个 Web Portal,帮助研究者在数据构建过程中进行人工质量把控:
URL Verification Portal:在爬取网页前,先用这个 Portal 对每个URL进行人工审核,判断该网站内容质量是否值得爬取。Portal 支持多语言界面,可以批量处理 URL 列表。
Human Data Audit Portal:数据清洗之后,再由人工对清洗结果进行二次审计。这个 Portal 集成了 Streamlit 前端 + Firebase 后端,支持多人协作标注。审计结果可以用来评估 Setu Pipeline 的清洗效果,形成"清洗→审计→反馈→优化"的闭环迭代。
两个 Portal 都有完整的 Dockerfile,理论上可以一键部署,但需要配置 Google Cloud/Firebase 凭证,实际落地有一定门槛。
从代码结构看,IndicLLMSuite 采用多仓库组合架构:主仓库作为聚合入口,通过 Git Submodule 引用四个独立子仓库(setu、setu-translate、webcorpus、sangraha-internet-archive-download)。这种设计的好处是各模块独立版本管理,但也意味着 clone 后需要额外初始化 submodule,操作略繁琐。
主仓库的语言构成为:Python(核心逻辑)、HTML/Streamlit(Portal界面)、Shell/Dockerfile(部署配置)。代码风格较为规范,有独立 LICENSE(MIT)。文档质量较高,README 详细描述了每个数据集和 Pipeline 的构建方法,并配有 ACL 论文链接。
IndicLLMSuite 的行业意义在于,它证明了构建高质量非英语大模型数据的路径是可行的——即使资源不如英语世界丰富,也可以通过"精细化方法论+人工审核+合成数据增强"的组合策略弥合差距。22种语言覆盖的广度,加上251B Token 的规模,让它成为目前最具代表性的多语言低资源LLM数据基础设施。
局限性同样值得正视:Setu Pipeline 依赖 Apache Spark,部署需要一定的大数据运维经验;两个 Portal 需要 Firebase 凭证,个人研究者自建可能遇到障碍;最重要的是,数据集许可证为 MIT,这意味着商业使用无法律限制,但 Sangraha 的原始数据来源网站的授权状态仍需使用者自行核实。
此外,项目最后更新于2024年10月,目前处于维护较少的阶段——这是学术开源项目的常见现象,后续更新可能有限。
| 场景 | 推荐方案 |
|---|---|
| 直接使用数据集 | 从 HuggingFace 下载 Sangraha / IndicAlign,数据即开即用 |
| 部署数据清洗 Portal | 使用项目提供的 Dockerfile,但需准备 Firebase 凭证 |
| 自建翻译 Pipeline | 参考 Setu-translate,基于 IndicTrans2 模型搭建 |
| 研究数据质量评估 | 使用 Human Data Audit Portal 进行人工审计 |
IndicLLMSuite 代表了一个重要方向:未来大模型竞争的胜负手,或许不在模型本身,而在于谁有更强的数据生产能力。对于希望在印度语 NLP 领域深耕的研究者和开发者,这套工具链是目前最值得投入学习的完整解决方案。