用PaddleNLP为GPT-2模型制作FineWeb二进制预训练数据集

作者:算力魔方创始人/英特尔创新大使刘力

《用PaddleNLP在4060单卡上实践大模型预训练技术》发布后收到读者热烈反响,很多读者要求进一步讲解更多的技术细节。本文主要针对大语言模型的预训练流程,使用PaddleNLP将FineWeb数据集中文本形式的数据,经过分词化(Tokenize),转换为大语言模型能直接使用的二进制数据,以便提升训练效果。

ChatGPT发布后,当代大语言模型(LLM)的训练流程基本遵循OpenAI提出的"预训练+后训练"的训练范式。

  • 预训练:将海量知识通过无监督学习的方式压缩到大语言模型的权重中,使其具备基本的通用能力,能预测下一个分词。预训练得到的模型叫基础大模型。

  • 后训练:通过监督微调(SFT)和强化学习(RL)等方式,让大模型按人类专家的方式输出知识,使其具备专业能力。

一, PaddleNLP简介

PaddleNLP是一款基于飞桨深度学习框架的大语言模型(LLM)开发套件,支持在多种硬件上进行高效的大模型训练、无损压缩以及高性能推理。PaddleNLP 具备简单易用和性能极致的特点,致力于助力开发者实现高效的大模型产业级应用。

复制代码
Github: https://github.com/PaddlePaddle/PaddleNLP

使用PaddleNLP实现训练文本分词化仅需三行代码,如下所示:

复制代码
# 导入PaddleNLP库中的GPTTokenizer类from paddlenlp.transformers import GPTTokenizer# 使用预训练的"gpt2-en"模型初始化GPTTokenizer,并设置bos_token为空字符串tokenizer = GPTTokenizer.from_pretrained("gpt2-en", bos_token="")# 打印使用tokenizer对字符串"Hello, world!"进行编码后的结果print(tokenizer.encode("Hello, world!"))

进入:

复制代码
https://tiktokenizer.vercel.app/?model=gpt2

可以对比PaddleNLP的GPTTokenzier对"Hello,World!"的分词结果。

二, FineWeb简介

FineWeb是由Hugging Face团队于2024年推出的超大规模语言模型预训练数据集。作为目前最大的开源预训练数据集之一,FineWeb数据集包含来自 CommonCrawl 的超过 15T 经过清理和重复数据删除的英文网络数据。**其高质量的数据,有助于大语言模型稳定平稳的完成预训练,**而不会发生由重复低质数据引发的Loss Spike。

复制代码
Link: https://huggingface.co/datasets/HuggingFaceFW/fineweb

本文使用FineWeb数据集的sample-10BT子集作为GPT-2的预训练数据集。

三, 开发环境准备

本文的开发环境依赖PaddlePaddle、PaddleNLP、datasets和tqdm。

首先,请安装PaddlePaddle框架:

复制代码
pip install paddlepaddle

然后,安装其它依赖项:

复制代码
pip install paddlenlp datasets tqdm

四, 代码实现

用PaddleNLP将FineWeb数据集进行分词化处理,然后转换为大语言模型能直接使用的二进制数据的关键步骤有:

1.从HuggingFace Hub加载fineweb数据集的10B样本子集;

2.使用train_test_split按比例分割训练集和验证集;

3.对每个文本进行编码,添加结束符eot_token,返回ids和len;

4.为训练集和验证集分别创建.bin文件,使用np.memmap高效写入。

关键代码如下所示:

完整范例代码请参见:

复制代码
https://aistudio.baidu.com/projectdetail/8798975

运行成功后,可以得到如下两个文件:

五, 总结

PaddleNLP好学易用,借助PaddleNLP的GPTTokenizer很容易实现FineWeb数据集的分词化,并转换为方便大模型预训练的二进制数据!


如果你有更好的文章,欢迎投稿!

稿件接收邮箱:nami.liu@pasuntech.com

更多精彩内容请关注"算力魔方®"!

相关推荐
七牛云行业应用21 小时前
MIT “权重空间编程”:GPT-6 Astra 修改 0.016% 的 Qwen 权重,MATH-500 从 7.9% 升至 48.1%
人工智能·gpt·ai
一缕82年的清风1 天前
智能体“自适应慢思考”的算力黑洞:当 Claude 5.5 与 GPT-6.1 Sol 陷入推理自旋,为什么高并发架构必须重构“认知预算熔断与快慢推测执行”?
gpt·claude·gemini
AI 编程助手GPT2 天前
GPT 排的日志时间线差一小时?用 zoneinfo 复现夏令时回拨
人工智能·python·gpt
阿愚先生2 天前
【从零手写GPT(一)】:RTX 5080 环境踩坑,我装错了两次 PyTorch
人工智能·pytorch·gpt
一缕82年的清风2 天前
智能体“自主决策”的虚假繁荣:当 Claude 5.5 与 GPT-6.1 深入生产,为什么顶级架构师都在重回“确定性状态机”?
gpt·claude
AI 编程助手GPT2 天前
GPT 改完配置别直接覆盖:用 git diff 审查两份文件
git·gpt
一缕82年的清风3 天前
算力平民化神话破产:当推理成本暴降 90%,为什么生产级 Agentic 架构反而更贵更脆弱了?
gpt·claude
西索斯coding4 天前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
一枕槐安4874 天前
大模型 API 调用封装:统一适配 GPT、文心一言、通义千问
人工智能·gpt·文心一言·大模型api·流式输出·统一封装·多模态路由
最强小杰4 天前
gpt-image-2.5-sunburst + OpenAI SDK + Cline 怎么接?完整图生图与局部重绘教程
gpt·ios·ai·iphone