用于 LLM 的公开的数值数据
这个存储库包含了用于训练 OpenAI 的大型语言模型的一部分公开的数值数据。这些数据已经被处理成符合 OpenAI 的数据管道格式。此外,我们还提供了一个 Python 脚本,用于将原始的表格数据转换成适合训练的格式。
数据来源
这些数据来自于以下公开的来源:
数据格式
数据被存储为 JSON 文件,每个 JSON 文件包括一个名为 data 的数组。数组中的每个元素都是一个包含两个键的字典:
- input: 用于训练模型的输入文本。输入文本通常包括一个问题或描述。
- output: 模型的预期输出。这通常是一个简短的回答或数值。
{
"data": [
{
"input": "What was the average price of a gallon of regular gasoline in the United States in 2019?",
"output": "2.60"
},
{
"input": "What is the distance from Earth to Mars in kilometers?",
"output": "225,000,000"
},
...
]
}
如何使用这些数据
要使用这些数据训练您的模型,您需要将它们处理成适合您的训练框架的格式。我们提供了一个 Python 脚本,用于将原始的表格数据转换成适合训练的格式。您可以参考这个脚本来了解如何处理数据,以及如何根据您的需求修改它。
LLM 开发者应知的数字
在谷歌,传奇工程师杰夫·迪恩(Jeff Dean)整理了一份名为“每位工程师都应该知道的数字”的文档。对于大型语言模型(LLM)开发者来说,拥有一套可用于粗略计算的类似数字非常有用。在这里,我们分享 Anyscale 使用的一些特定数字,说明这些数字的重要性以及如何将其用于您的优势。
内容列表
- CPU 时钟周期
- 内存访问延迟
- 磁盘延迟
- 网络延迟
- FLOPs 和 AI 训练
CPU 时钟周期
- 一个 CPU 时钟周期大约需要 0.4 纳秒(ns)。
CPU 时钟周期是衡量 CPU 性能的关键指标。了解 CPU 时钟周期的长度有助于在设计和优化算法时更好地理解性能瓶颈。
内存访问延迟
- 从 L1 缓存中读取数据大约需要 0.5 纳秒。
- 从 L2 缓存中读取数据大约需要 7 纳秒。
- 从 L3 缓存中读取数据大约需要 100 纳秒。
- 从主内存中读取数据大约需要 100 纳秒。
当 CPU 需要访问数据时,它首先检查各级缓存(L1、L2 和 L3)。
如果所需数据不在缓存中,CPU 则需要访问主内存。了解访问各级缓存和主内存的延迟对于识别和优化算法性能至关重要。
磁盘延迟
- 从固态硬盘(SSD)读取数据大约需要 20-100 微秒(µs)。
- 从传统硬盘驱动器(HDD)读取数据大约需要 1-10 毫秒(ms)。
磁盘延迟是指从磁盘中读取或写入数据所需的时间。了解磁盘延迟有助于在处理大量数据时了解存储系统的性能瓶颈。
网络延迟
- 同一数据中心内的往返延迟(RTT)大约为 0.5 毫秒。
- 跨洲际光缆的往返延迟大约为 150 毫秒。
网络延迟是指数据在网络中传输所需的时间。了解网络延迟有助于在开发分布式系统和优化网络通信时预测性能。
FLOPs 和 AI 训练
- 一个 NVIDIA A100 GPU(英伟达A100图形处理器)可以提供每秒约 312 万亿次浮点运算(TFLOPs)。
- 训练 GPT-3 模型需要约 3.14 * 10^23 次浮点运算。
FLOPs(每秒浮点运算次数)是衡量处理器性能的一个常用指标,特别是在 AI 训练和高性能计算领域。了解处理器的 FLOPs 数量和训练模型所需的 FLOPs 数量有助于评估训练时间和硬件需求。
许可
这些数据遵循 CC0 1.0 协议。您可以自由地复制、修改、发布和使用这些数据,无需获取许可或支付费用。然而,我们鼓励您在使用这些数据时,引用这个存储库以便其他人可以找到这些资源。