增量预训练数据获取

上一篇,关于数据量预估中分析到,做增量预训练一个3B模型所需的数据大约为12~15B的tokens。这里我们着手获取这些数据。

欢迎关注公众号看合集 链接: AI沙砾 增量预训练数据获取
在这里插入图片描述

寻找约12B Tokens的高质量、开源、可用的中英文混合预训练数据源是一个实际的挑战,通常需要组合多个来源并进行处理。以下是一些主要的开源数据平台和你可以重点关注的数据集:

主要平台:

  1. Hugging Face Hub (Datasets): https://huggingface.co/datasets
    • 最活跃、资源最丰富的平台之一,包含大量文本数据集,覆盖多种语言和领域。易于使用 datasets 库加载和处理。
  2. ModelScope Hub (魔搭社区): https://modelscope.cn/datasets
    • 阿里巴巴达摩院维护的平台,包含许多中文优质数据集,特别是针对中文NLP任务和预训练。
  3. GitHub:
    • 很多项目会直接在GitHub仓库中发布数据或提供数据的下载链接/脚本。
  4. 原始数据源:
    • 如 Common Crawl, Wikipedia Dumps 等,但需要自行处理和清洗。

推荐的数据集和策略 (目标: ~10.8B 中文 Tokens + ~1.2B 英文 Tokens):

A. 中文数据源 (~10.8B Tokens):

  1. 大规模清洗网页语料 (构成主体,约 4-6B Tokens):
    • SkyPile: 清华大学自然语言处理与社会人文计算实验室(THUNLP)发布的大规模高质量中文网页数据。SkyPile-150B 据称包含150B Tokens,你可以从中采样或使用其一部分。
      • 查找位置: Hugging Face Hub 搜索 “SkyPile” 或相关项目。可能有不同版本或子集。例如 openbmb/skypile-150b (可能需要关注具体使用细节和许可)。
    • OSCAR (Open Super-large Crawled ALMAnaCH coRpus): 大型多语言语料库,包含从 Common Crawl 清洗过的中文部分。
      • 查找位置: Hugging Face Hub (oscar-corpus/OSCAR-2301, oscar-corpus/OSCAR-2201 等,需要筛选 zh 或 zh-cn 子集)。注意OSCAR的版本和清洗程度可能不同。
    • mC4 (multilingual Colossal Clean Crawled Corpus): C4 的多语言版本,包含中文。
      • 查找位置: Hugging Face Hub (mc4, 需要筛选 zh 部分)。
    • WudaoCorpora (悟道语料库): 由北京智源人工智能研究院(BAAI)发布的大规模中文语料库,包含网页、百科、问答等多种类型。部分子集可能在 HF 或 ModelScope 上可获取。
      • 查找位置: Hugging Face Hub / ModelScope 搜索 “WuDaoCorpora”。例如 BAAI/WuDaoCorporaText。需要检查其具体包含的内容和规模。
  2. 百科 (约 1-2B Tokens):
    • 中文维基百科 (Chinese Wikipedia): 高质量的知识来源。
      • 获取方式: ① 直接下载 Wikimedia dumps 处理(需要工具如 wikiextractor)。 ② 使用 Hugging Face Hub 上的预处理版本。
      • 查找位置 (HF): wikipedia 数据集,配置选择 20220301.zh 或类似中文版本 (load_dataset(“wikipedia”, “20220301.zh”))。
  3. 书籍 (约 1.5-2.5B Tokens):
    • 寻找大规模开源中文书籍语料比较困难(版权问题)。
    • MNBVC: 一个社区驱动的中文语音数据集项目,其副产品包含大量文本,其中可能包括书籍和网络文学,但需要仔细筛选。
      • 查找位置: GitHub / Hugging Face Hub (shibing624/mnbvc)。需要检查文本部分的来源和质量。
    • 部分混合语料库(如 WudaoCorpora)可能包含书籍成分。
    • 你可能需要整合多个较小的、公开领域的书籍集合。
  4. 新闻 (约 1-2B Tokens):
    • THUCNews: 清华大学整理的新闻数据集,比较老但常用。
      • 查找位置: 通常通过 GitHub 或其他教育资源链接下载。
    • 特定新闻网站爬取/存档: 需要自行收集或寻找已有的开源集合。
    • 在 HF/ModelScope 搜索 “chinese news dataset”。可能找到如 chinese-news-collection 等,但需评估规模和质量。
  5. 代码 & 技术文档 (约 0.5-1B Tokens):
    • The Stack: BigCode 项目发布的大规模代码数据集,多语言,包含中文注释、文档等。
      • 查找位置: Hugging Face Hub (bigcode/the-stack-dedup)。需要过滤包含中文内容的文件或中文仓库。
    • 从 GitHub 爬取中文项目的 README, Issues, discussions (注意遵守 robots.txt 和 API 限制)。

B. 英文数据源 (~1.2B Tokens):

这部分相对容易获取,可以选择高质量、多样化的来源。

  1. RedPajama-Data-1T: Llama 1 训练数据的开源复现,混合了多种高质量来源。
    • 查找位置: Hugging Face Hub (togethercomputer/RedPajama-Data-1T)。可以从中采样所需数量的 Tokens,例如从 Common Crawl, C4, GitHub, Books, ArXiv, Wikipedia, StackExchange 等部分按比例采样。这是非常推荐的选择,因为它本身就是为预训练设计的混合数据。
  2. The Pile: EleutherAI 创建的另一个大型、多样化的英文数据集。
    • 查找位置: Hugging Face Hub (EleutherAI/the_pile)。同样可以从中采样。
  3. C4 (Colossal Clean Crawled Corpus): Google 清洗的 Common Crawl 数据。
    • 查找位置: Hugging Face Hub (allenai/c4, c4)。选择 en 部分采样。
  4. ·英文维基百科 (·): 高质量知识来源。
    • 查找位置 (HF): wikipedia 数据集,配置选择 20220301.en 或类似英文版本。

关键步骤和注意事项:

  1. Tokenization: 你需要使用 Llama-3.2-3B 的 tokenizer 来精确计算 Token 数量。数据集通常报告的是字符数、词数或使用不同 tokenizer 计算的 Token 数。12B Tokens 是基于你的模型 tokenizer 的目标。
  2. 数据混合: 获取各部分数据后,需要按照你决定的比例 (如 90% 中/10% 英) 和领域分布进行混合。通常会将所有数据源打乱混合在一起。
  3. 数据清洗和去重 (非常重要):
    • 清洗: 即便数据源声称已清洗,也建议进行额外的质量过滤,去除 HTML 标签、格式错误、低信息量文本(如大量重复字符、"lorem ipsum"等)、潜在有害内容。可以使用启发式规则或训练分类器进行过滤。
    • 去重: 在数据集内部和数据集之间进行去重至关重要,可以显著提高训练效率和模型性能。使用 MinHashLSH (如 datasketch 库) 或其他精确/近似去重方法。对长文档进行段落级别或文档级别的去重。
  4. 格式统一: 将所有数据处理成训练框架(如 transformers Trainer)期望的格式,通常是 JSON Lines 文件,每行一个 JSON 对象,包含一个文本字段 (e.g., {“text”: “…”})。
  5. 许可协议: 仔细检查每个数据集的许可协议,确保你的使用方式符合要求(特别是商业用途)。
  6. 迭代和评估: 数据集构建是一个迭代过程。你可能需要从小规模数据开始试验,评估效果,然后逐步扩展和优化数据组合。

总结:

  • Hugging Face HubModelScope 是你主要的搜索平台。
  • 对于中文数据,优先考虑 SkyPile, OSCAR/mC4 (中文部分), 中文 Wikipedia, The Stack (中文部分)。书籍和新闻可能需要整合多个来源或依赖大型混合语料中的成分。
  • 对于英文数据,从 RedPajama-Data-1TThe Pile 采样是高效且高质量的选择。
  • 数据处理(清洗、去重、Token 统计、混合) 是构建最终 12B Tokens 训练集的关键环节。

这个过程需要投入相当的精力进行数据收集、处理和验证。

### 增量预训练与微调中的主要挑战 #### 高质量数据获取困难 对于垂直化训练而言,获得并处理大量的高质量专业领域数据是一项艰巨的任务。这些数据不仅数量庞大,而且需要具备高度的相关性和准确性来支持模型的有效训练[^1]。 #### 平衡特定能力和通用性能 当致力于提高某一具体领域的效能时,如何确保不会削弱该模型在其他广泛任务上的表现也是一个重要考量因素。这意味着任何针对特殊应用场景所做的优化都应当谨慎实施,以免影响其跨行业的适用范围。 #### 资源消耗巨大 相比起构建一般性的AI系统来说,在某个专门方向上深入挖掘往往意味着更高的成本支出——无论是人力方面还是物质条件上皆然如此。特别是涉及到复杂的数据清洗、标注以及后续维护工作时更是如此。 #### 模型持续更新的需求 随着行业环境和技术趋势的变化,原有的专业知识可能会变得过时或不再完全适用;因此,为了维持最佳的服务水平,就必须定期对企业内部积累的新资料加以利用,并据此调整现有算法结构及其参数设置[^2]。 --- ### 解决方案概述 #### 利用Scaling Laws指导资源配置 基于对scaling laws的研究成果表明,适当扩大神经网络架构尺寸(如增加层数/节点数)、扩充样本集容量均有助于改善最终产出的质量。遵循这一原则可以帮助决策者更加科学合理地分配有限的研发预算给到最有可能带来回报的地方去。 #### 实施Compute-Optimal策略 按照compute-optimal理论建议的比例同步扩展输入素材的数量级和权重矩阵维度,则可以在一定程度上缓解因硬件设施不足而导致的时间延迟现象发生频率过高问题,从而加快整个开发周期进度条向前推进速度。 #### 推动Domain Continue Pretraining 考虑到基础版本可能存在某些局限性无法很好满足实际应用场合下的多样化诉求,故而有必要选取合适的初始状态作为起点继续开展针对性更强的再教育过程。此做法既有利于继承先前所学到的知识经验又便于引入新鲜血液注入其中实现双赢局面[^4]。 #### 应用检索增强生成技术 面对动态变化着的企业运营状况所带来的不确定性风险,采用类似于retrieval-augmented generation (RAG) 的框架或许不失为一种明智的选择。它允许机器一边查询外部数据库寻找最新资讯补充进来,另一边则依据当前上下文语境灵活组合成连贯表达形式输出给用户端查看参考使用[^3]。 ```python def domain_continue_pretrain(model, new_data): """ 对已有模型进行领域内增量预训练 :param model: 已有大语言模型实例 :param new_data: 新增的专业领域数据集合 """ # 更新词典以适应新词汇 update_vocab(model.vocab, new_data) # 使用新增数据进一步训练模型 train_model(model, new_data) def retrieval_augmented_generation(query, knowledge_base): """ 结合检索机制辅助生成回复 :param query: 用户提出的询问字符串 :param knowledge_base: 可供查阅的信息库对象 """ retrieved_info = search(knowledge_base, query) response = generate_response(retrieved_info + context_from_query(query)) return response ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值