趋近智
任何强大大型语言模型的根本在于其预训练 (pre-training)期间所使用的数据。如前所述,我们说的不是兆字节或吉字节;我们处理的是数太字节,有时甚至是数拍字节的文本数据。找出这类庞大数量数据的来源是实际的第一步。数据的构成在很大程度上决定了最终模型的能力、偏见和整体表现。因此,了解不同数据来源的特点、优点和缺点非常必要。
让我们分析一下大型语言模型预训练常用的文本数据主要类别。
互联网是目前最大且最多样化的文本数据来源。它包含几乎所有能想到的主题信息,以无数种风格和语言书写。
数字化图书提供了高质量、长篇文本的来源。
对于旨在理解或生成计算机代码的模型,在预训练 (pre-training)数据中包含源代码是不可或缺的。
像arXiv、PubMed Central和机构知识库这样的来源包含大量的科学知识。
来自社交媒体、论坛和其他互动平台的文本记录了非正式的语言使用。
新闻语料库提供了访问时事和事实报道风格的途径。
在这些通用类别之外,还存在许多特定领域的数据集。
单一来源的数据不足以满足需求。最先进的大型语言模型几乎总是基于对这些类别中多个数据源的精心策划的混合进行训练。具体的组合是一个重要的设计选择,影响着模型的优点和缺点。例如,一个主要在网络文本上训练的模型可能擅长日常对话,但在正式推理 (inference)方面可能表现不佳,而一个侧重于学术论文的模型则可能表现出相反的特点。C4、The Pile或精炼的专有数据集所使用的具体比例通常是根据下游任务的表现进行调整的。我们将在第9章进一步讨论数据混合策略。
这是一个示例分布,说明了通用大型语言模型的预训练 (pre-training)数据集中不同数据来源可能如何加权。实际比例在不同模型之间差异很大。
访问和处理这些多样化的来源通常需要使用为大型数据集设计的库和工具。例如,Hugging Face的datasets库提供了对许多预处理数据集的便捷访问,包括大型网络爬取数据的子集或特定语料库。
# 示例:使用Hugging Face datasets库加载大型数据集的子集
# 注意:这需要安装 'datasets' 库
# (`pip install datasets`)
from datasets import load_dataset
try:
# 加载OSCAR数据集的一小部分(从Common Crawl获取的未打乱的多语言数据集
# 使用 streaming=True 避免下载整个庞大数据集
# 'en' 指定英文子集,
# 'unshuffled_deduplicated_en' 是一种特定的配置
# split='train[:1%]' 获取训练集的第一个1%
# 用于演示
oscar_subset = load_dataset(
"oscar",
"unshuffled_deduplicated_en",
split='train[:1%]',
streaming=True
)
# 遍历前几个示例
print("OSCAR子集的前5个示例:")
count = 0
for example in oscar_subset:
print(f"示例 {count + 1}:")
# 打印文本的前200个字符
print(example['text'][:200] + "...")
print("-" * 20)
count += 1
if count >= 5:
break
except Exception as e:
print(
"尝试加载数据集时发生错误: "
f"{e}"
)
print(
"请确保您有互联网连接并且 'datasets' 库已安装。"
)
print("某些数据集可能需要特定的配置或权限。")
此代码片段说明了如何以编程方式访问大型标准化数据集的一部分。虽然方便,但请记住,使用现有数据集意味着要依赖其创建者所做的预处理选择。构建独特、高质量的数据集通常需要回到原始来源(如Common Crawl存档或直接网络抓取),并实施自定义的清洗和过滤流程,我们将在后续部分和第7章中介绍这些内容。
这部分内容有帮助吗?
datasets库访问、处理和共享机器学习数据集(包括许多大型语言模型预训练语料库)的官方指南。© 2026 ApX Machine LearningAI伦理与透明度•