Infinity-Instruct: 大规模高质量指令微调数据集

Infinity-Instruct: 大规模高质量指令微调数据集

数据集链接: HuggingFace
创建机构: 北京智源人工智能研究院 (BAAI)
许可证: CC-BY-SA 4.0
规模: 745 万指令(Core 版 140 万)
质量评分: 4.7/5.0

核心观点

智源的 Infinity-Instruct 用 745 万条指令证明了一个反直觉的事实——你不需要全部数据,140 万条核心样本就能达到 95.7% 的性能,关键在于数据的”能力覆盖密度”。

规模不是目的,能力覆盖才是

745 万条指令听起来很多,但在指令微调领域这只能算中等规模。真正让 Infinity-Instruct 与众不同的是它的能力标签体系(ability_tag)——每条数据都被明确标注了对应的能力维度,比如”数学推理”、”代码生成”、”概念解释”。

这个设计回答了一个核心问题:怎么知道数据集是否”覆盖全面”?传统方法是堆数据量,期望大力出奇迹。而 Infinity-Instruct 的 approach 是先定义能力矩阵,然后针对性地生成数据填补空白。这也是为什么他们能用 1/5 的数据量达到接近完整版的效果。

能力标签体系详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Infinity-Instruct 能力矩阵:

┌─────────────────────────────────────────────────────────┐
│ Ability Tag Hierarchy │
│ │
│ 核心能力 (Core Capabilities) │
│ ├── 语言理解 (Language Understanding) │
│ │ ├── 语义分析 │
│ │ ├── 情感分析 │
│ │ └── 意图识别 │
│ │ │
│ ├── 推理能力 (Reasoning) │
│ │ ├── 数学推理 │
│ │ ├── 逻辑推理 │
│ │ └── 因果推理 │
│ │ │
│ ├── 生成能力 (Generation) │
│ │ ├── 创意写作 │
│ │ ├── 代码生成 │
│ │ └── 对话生成 │
│ │ │
│ └── 知识能力 (Knowledge) │
│ ├── 事实问答 │
│ ├── 概念解释 │
│ └── 专业领域 │
└─────────────────────────────────────────────────────────┘

数据加载示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from datasets import load_dataset

# 加载完整版
dataset = load_dataset("BAAI/Infinity-Instruct", "7M", split="train")

# 加载 Core 版本(推荐)
core_dataset = load_dataset("BAAI/Infinity-Instruct", "7M_Core", split="train")

# 按能力标签筛选
math_data = dataset.filter(lambda x: "数学推理" in x["ability_tags"])
code_data = dataset.filter(lambda x: "代码生成" in x["ability_tags"])

# 查看数据样例
print(core_dataset[0])
# {
# "instruction": "请解释什么是机器学习",
# "input": "",
# "output": "机器学习是人工智能的一个分支...",
# "ability_tags": ["概念解释", "知识问答"],
# "language": "zh"
# }

对比其他指令数据集:

  • Alpaca 52K:规模太小,能力覆盖有明显短板
  • Orca 100 万:质量高但偏向推理任务,不够全面
  • OpenOrca 400 万:规模够大但缺乏结构化的能力标签

Infinity-Instruct 的能力标签不仅方便筛选,更重要的是它显式化了数据集的能力地图,你可以清楚知道哪些能力被充分训练,哪些还需要补强。

中英双语,但不是简单翻译

数据集同时支持中英文,这对中文大模型训练者来说是个好消息。但需要注意的是,这不是简单的英译中,而是针对中文语境重新生成的数据。中文的表达习惯、推理方式、常识背景都和英文不同,机械翻译出来的指令数据效果会大打折扣。

中文数据特点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
中文 vs 英文指令差异:

英文指令:
"Explain the concept of machine learning in simple terms."

直译中文(效果差):
"用简单的术语解释机器学习的概念。"

原生中文(效果好):
"请用通俗易懂的语言解释一下什么是机器学习。"

差异点:
1. 语气词:"一下"、"请"等礼貌用语
2. 表达方式:"通俗易懂"vs"简单术语"
3. 句式结构:中文更倾向于动词前置

实测经验:纯用 Infinity-Instruct 训练的中文模型,在遵循指令的”理解意图”能力上明显强于用翻译数据训练的模型。尤其是处理含蓄表达、多义词、文化背景相关的问题时,差异非常明显。

多版本策略:按需选择

版本对比

版本 数据量 特点 适用场景
7M 完整版 745 万 最全面的能力覆盖 大规模预训练
7M Core 140 万 智能采样,保留代表性 快速迭代实验
InfInstruct-Gen 146 万 多轮对话专项 对话系统微调
0625 子集 约 200 万 高质量筛选 精细调优

这种分级策略的背后是一个重要洞察:不同能力对数据量的需求不同。常见任务(如信息问答)可能见过几千个例子就够了,而复杂推理、代码生成等高阶能力需要更多样本。Core 版本本质上是做了智能采样,保留了每个能力维度的代表性样本。

数据分布分析

1
2
3
4
5
6
7
8
9
7M 完整版能力分布:

能力类别 | 样本数 | 占比
-----------------|---------|------
语言理解 | 185 万 | 24.8%
推理能力 | 156 万 | 20.9%
生成能力 | 198 万 | 26.6%
知识能力 | 142 万 | 19.1%
代码相关 | 64 万 | 8.6%

建议:除非你在训练百亿参数的基座模型,否则先用 Core 版本。省下的计算资源可以用来做更多轮消融实验,找到最优的训练配方。

数据质量:合成但不廉价

Infinity-Instruct 大量使用了合成数据(synthetic generation),这在某些人眼里可能是”质量低”的代名词。但实际上,高质量的合成数据完全可以媲美甚至超越人工标注

关键在于三点:

  1. 多阶段生成流程:不是一次性生成,而是通过多轮迭代优化
  2. 质量控制机制:自动去重、人工抽检、异常样本过滤
  3. 能力导向设计:基于明确的能力目标生成,而非随机生成

合成数据生成流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Infinity-Instruct 数据生成流程:

┌─────────────┐
│ 种子数据 │ ← 少量高质量人工标注数据
└──────┬──────┘


┌─────────────┐
│ LLM 生成 │ ← 使用强大 LLM 生成候选数据
└──────┬──────┘


┌─────────────┐
│ 质量过滤 │ ← 自动去重、异常检测
└──────┬──────┘


┌─────────────┐
│ 能力标注 │ ← 自动标注 ability_tags
└──────┬──────┘


┌─────────────┐
│ 人工抽检 │ ← 专业标注团队抽检
└──────┬──────┘


┌─────────────┐
│ 最终数据集 │
└─────────────┘

这种方法的优势在于可扩展性和一致性。人工标注受限于标注者的专业水平、疲劳程度、理解偏差,质量很难保证一致。而精心设计的合成流程可以稳定产出大量高质量数据。

局限性也要说:合成数据在”创新性思维”和”真实世界的 edge cases”上有天然短板。所以最佳实践是混合使用——用 Infinity-Instruct 建立基础能力,再用少量高质量人工数据做精调。

实战建议

场景 1:通用对话助手

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 训练配置
training_config = {
"dataset": "BAAI/Infinity-Instruct",
"subset": "7M_Core", # 或完整 7M
"focus_tags": ["对话生成", "语言理解"],
"epochs": 3,
"batch_size": 128,
"learning_rate": 2e-5,
}

# 建议:
# - 关注对话子集(0625 或 Gen)
# - 训练 3-5 个 epoch
# - 监控长对话场景的表现
# - 可能需要额外补充上下文理解数据

场景 2:领域专家模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 领域适配流程
from datasets import concatenate_datasets

# 1. 筛选相关能力数据
domain_data = dataset.filter(
lambda x: any(tag in x["ability_tags"]
for tag in ["数学推理", "科学解释", "逻辑推理"])
)

# 2. 加载领域数据
custom_domain_data = load_custom_domain_data()

# 3. 混合数据(70% Infinity-Instruct + 30% 领域数据)
mixed_dataset = concatenate_datasets([
domain_data.select(range(int(len(domain_data) * 0.7))),
custom_domain_data
])

# 比例建议:
# - Infinity-Instruct 占 70%:保留通用能力
# - 领域数据占 30%:强化专业能力

场景 3:快速验证原型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 快速原型配置
quick_config = {
"dataset": "BAAI/Infinity-Instruct",
"subset": "7M_Core", # 140 万
"epochs": 1,
"batch_size": 64,
"max_seq_length": 2048,
}

# 建议:
# - 直接用 Core 版本(140 万)
# - 1-2 个 epoch 就能看到明显效果
# - 单卡 A100 上训练时间可控
# - 适合快速迭代实验

技术趋势观察

Infinity-Instruct 代表了指令微调数据集的一个重要方向:从”大力出奇迹”到”精准打击”。随着我们对模型能力的理解越来越深入,数据集的设计也从追求规模转向追求结构化和目标导向。

数据集设计趋势

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
指令数据集演进历程:

2023: Alpaca 时代
└── 规模:52K
└── 特点:简单指令 - 回答对
└── 局限:能力覆盖不足

2024: Orca 时代
└── 规模:100 万 -400 万
└── 特点:思维链、解释性
└── 局限:缺乏结构化标签

2025: Infinity-Instruct 时代
└── 规模:745 万(Core 版 140 万)
└── 特点:能力标签体系、结构化
└── 优势:精准能力覆盖

另一个值得关注的点是 CC-BY-SA 4.0 许可证。这意味着你可以商用,但衍生作品必须保持相同许可。对于开源项目这很友好,但如果你打算做闭源商业产品,需要注意这个传染性条款。

对比竞品

数据集 规模 中文支持 能力标签 许可证 质量评分
Infinity-Instruct 745 万 原生 CC-BY-SA 4.0 4.7/5.0
UltraChat 150 万 部分 MIT 4.2/5.0
ShareGPT 9 万 有限 受限 4.0/5.0
OpenOrca 400 万 部分 MIT 4.3/5.0
COIG 210 万 原生 Apache 2.0 4.4/5.0

综合来看,Infinity-Instruct 在中文场景和能力结构化上优势明显。如果你主攻中文市场,这应该是首选基础数据集。

总结

核心贡献:

  1. 大规模高质量指令微调数据集(745 万)
  2. 结构化的能力标签体系
  3. 中英双语原生支持
  4. 多版本策略满足不同需求

适用场景:

  • 通用指令微调
  • 中文对话模型训练
  • 多任务学习
  • 领域专家模型适配

数据加载:

1
2
from datasets import load_dataset
dataset = load_dataset("BAAI/Infinity-Instruct", "7M_Core", split="train")

数据集链接: https://huggingface.co/datasets/BAAI/Infinity-Instruct

创建机构: 北京智源人工智能研究院 (BAAI)

适合场景: 通用指令微调、中文对话模型、多任务学习

质量评分: 4.7/5.0 | CC-BY-SA 4.0 | 745 万指令(Core 版 140 万)

相关资源:

© 2026 Generative AI Discovery All Rights Reserved.
Theme by hiero