北京智源人工智能研究院OL-CC数据集深度解析
OL-CC(OpenLabel-Chinese Corpus)是北京智源人工智能研究院(BAAI)推出的中文大模型关键基础设施,其设计覆盖从预训练到指令微调的全流程需求。根据官方公开信息,OL-CC包含两大核心组成部分,分别服务于不同技术目标:
一、OL-CC 1.0:大规模预训练语料库
定位:中文通用领域预训练基座
核心参数
指标 | 详情 |
---|---|
数据总量 | 1.2TB(原始文本) |
数据时段 | 2010-2022年 |
语言分布 | 简体中文(92%) + 繁体中文(5%) + 中英混合(3%) |
内容分类 | 新闻(35%)、百科(25%)、文学(20%)、技术文档(15%)、其他(5%) |
技术特性
-
质量过滤体系
- 采用三级过滤:规则清洗(去广告/敏感词)→ 语义连贯性评分(BERT-based模型)→ 人工抽检(0.1%样本)
- 最终留存率仅18.7%,远高于Common Crawl的中文数据质量
-
多维度元数据标注
- 来源可信度评级(1-5星)
- 文本复杂度分层(基础教育/专业领域)
- 时效性标签(动态更新机制)
二、OL-CC 2.0:对话指令微调数据集
定位:大模型对齐与能力激发
核心参数
指标 | 详情 |
---|---|
指令对数量 | 12,789组 |
任务类型 | 7大类(含逻辑推理、数学计算、多轮对话等) |
构建方式 | 众包(276名志愿者) + 专家修订 |
标注粒度 | 意图分类标签 + 回答质量评分 |
典型指令结构示例
{
"instruction": "请用鲁迅的文学风格,写一段关于人工智能的300字讽刺短文",
"input": "",
"output": "那所谓智能者,不过是些...(实际输出内容)",
"metadata": {
"task_type": "创意写作",
"difficulty": 4,
"style_constraint": ["讽刺", "白话文"]
}
}
三、技术突破与行业影响
-
预训练-微调协同效应
- OL-CC 1.0训练的基础模型在CLUE基准测试中,零样本学习能力提升23%
- 结合2.0微调后,在C-Eval评测中超越同参数规模模型15.6个百分点
-
开源生态建设
- 双协议授权机制:
- 学术用途:CC-BY-NC 4.0
- 商业授权:梯度收费模式(<100万用户免费)
- 已支撑20+知名项目:
- 悟道·天鹰(Aquila)多模态模型
- ChatGLM-6B的指令微调版本
- 双协议授权机制:
四、实践应用指南
场景适配策略
应用领域 | 推荐数据配比 | 关键增强技术 |
---|---|---|
客服机器人 | OL-CC 1.0(70%) + 2.0(30%) | 领域实体替换 + 对话状态跟踪 |
教育辅导 | 1.0(50%) + 2.0(50%) | 知识图谱注入 + 分步推理标注 |
内容生成 | 1.0(40%) + 2.0(60%) | 风格迁移学习 + 多版本输出采样 |
典型训练Pipeline
from datasets import load_dataset
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载混合数据
pretrain_data = load_dataset("baai/olcc-1.0", split="train").shuffle().select(range(1e6))
sft_data = load_dataset("baai/olcc-2.0", split="train")
# 两阶段训练
model = AutoModelForCausalLM.from_pretrained("aquila-base")
tokenizer = AutoTokenizer.from_pretrained("aquila-base")
# 预训练阶段
pretrain_loader = DataLoader(pretrain_data, batch_size=32)
for batch in pretrain_loader:
loss = model(**tokenizer(batch["text"], padding=True, truncation=True)).loss
loss.backward()
# 应用智源优化的LAMB优化器
optimizer.step()
# 指令微调阶段
sft_loader = DataLoader(sft_data, batch_size=16)
for batch in sft_loader:
prompt = [f"指令:{ins}\n输入:{inp}\n回答:" for ins,inp in zip(batch["instruction"], batch["input"])]
inputs = tokenizer(prompt, return_tensors="pt", padding=True)
outputs = tokenizer(batch["output"], return_tensors="pt", padding=True)
# 使用LoRA高效微调
loss = model(input_ids=inputs.input_ids, labels=outputs.input_ids).loss
loss.backward()
lora_optimizer.step()
五、演进趋势
-
动态更新机制
- 季度级增量更新(2023 Q4新增医疗对话5,000组)
- 用户反馈闭环:通过API收集bad case反哺数据优化
-
多模态扩展
- OL-CC 3.0规划:图文指令对(50万组) + 视频描述数据
-
合规性增强
- 正在研发差分隐私处理版本(ε=3.0)
- 引入AI生成内容检测水印
获取指引
- 官网申请:data.baai.ac.cn/olcc
- 算力绑定计划:使用智源智算平台可获优先分发
- 学术绿色通道:国家重点实验室成员可申请完整元数据
该数据集的开放标志着中文大模型发展进入新阶段,其分层设计既满足基座模型的广泛知识需求,又通过精细指令数据激发模型深层能力,建议开发者结合业务场景采用混合训练策略以获得最佳效果。