0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_23871869 来源:jf_23871869 作者:jf_23871869 2025-03-21 18:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

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

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

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

一,PaddleNLP简介


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

wKgZPGfcAnGAZJZbAAB0V6tIGJQ893.png

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高效写入。

关键代码如下所示:

wKgZPGfcAsWAHLv_AACNkvpFFuo041.png

完整范例代码请参见:

https://aistudio.baidu.com/projectdetail/8798975


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

wKgZPGfcAtCALsZgAAA-5MiqMvw838.png

五,总结


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

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

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

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    809

    浏览量

    43170
  • 数据集
    +关注

    关注

    4

    文章

    1240

    浏览量

    26259
  • GPT
    GPT
    +关注

    关注

    0

    文章

    371

    浏览量

    16956
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CD4089B:高性能CMOS二进制速率乘法器的设计与应用

    ,以其独特的特性和广泛的应用场景,成为了电子工程师们在设计中值得考虑的重要选择。 文件下载: CD4089BPWE4.pdf 一、CD4089B概述 CD4089B是一款低功耗的4位数字速率乘法器,它的输出脉冲速率是时钟输入脉冲速率乘以1/16倍的二进制输入。例如,当二进制
    的头像 发表于 04-18 14:45 59次阅读

    深入剖析 DM74LS283:4 位快速进位二进制加法器

    深入剖析 DM74LS283:4 位快速进位二进制加法器 在电子设计领域,加法器是实现数字运算的基础元件之一。今天我们要深入探讨的是 Fairchild 公司的 DM74LS283 4 位快速进位
    的头像 发表于 04-10 16:40 178次阅读

    74HC283 4位二进制全加器:设计利器深度解析

    74HC283 4位二进制全加器:设计利器深度解析 作为电子工程师,在数字电路设计中,加法器是我们经常会用到的基础元件。今天就来深入探讨一下74HC283 4位二进制全加器,它在诸多数字电路设计场景
    的头像 发表于 04-08 16:15 148次阅读

    MAXIM DS1672 I2C 32位二进制计数器RTC:特性与设计详解

    的是MAXIM公司的DS1672 I2C 32位二进制计数器RTC,它具有诸多出色特性,能满足多种应用场景的需求。 文件下载: DS1672.pdf 1. 概述 DS1672成了32位计数器和电源监控功能
    的头像 发表于 03-24 15:25 165次阅读

    深入解析DS1371:一款功能强大的I2C 32位二进制计数器看门狗时钟

    MAXIM)推出的DS1371 I2C 32位二进制计数器看门狗时钟,了解它的特点、应用以及详细的技术参数。 文件下载: DS1371.pdf 一、产品概述 DS1371是一款专门设计用于连续以秒单位计时的32位
    的头像 发表于 03-24 10:10 240次阅读

    CDx4HC283和CDx4HCT283:高速CMOS逻辑4位二进制全加器的详细解析

    CDx4HC283和CDx4HCT283:高速CMOS逻辑4位二进制全加器的详细解析 在电子设计领域,加法器是数字电路中最基本的运算单元之一,用于实现二进制数的加法运算。今天要给大家介绍
    的头像 发表于 01-19 14:50 471次阅读

    深入剖析CD54/74AC283与CD54/74ACT283:高性能4位二进制加法器

    /74ACT283这两款4位二进制加法器,它们来自Harris Semiconductor,电子工程师们提供了高性能、低功耗的解决方案。 文件下载: CD74AC283M.pdf 器件概述 CD54
    的头像 发表于 01-04 17:25 901次阅读

    CD54/74AC283与CD54/74ACT283:高性能4位二进制加法器的全面解析

    CD54/74AC283与CD54/74ACT283:高性能4位二进制加法器的全面解析 在电子设计领域,加法器是一种基础且关键的数字电路,广泛应用于各种计算和数据处理系统中。今天,我们要深入探讨
    的头像 发表于 12-31 17:10 1505次阅读

    SN54F283与SN74F283:4位二进制全加器的技术剖析

    SN54F283与SN74F283:4位二进制全加器的技术剖析 在数字电路设计中,加法器是最基础且关键的组件之一。今天我们要深入探讨的是德州仪器(TI)的SN54F283和SN74F283这两款4位
    的头像 发表于 12-29 16:20 992次阅读

    德州仪器4位二进制全加器:SN54/74283系列深度解析

    德州仪器4位二进制全加器:SN54/74283系列深度解析 在数字电路设计领域,加法器是构建复杂算术逻辑单元的基础组件。德州仪器(TI)的SN54/74283系列4位二进制全加器凭借其快速进位
    的头像 发表于 12-23 15:45 987次阅读

    二进制查找(Binary Search)介绍

    二进制查找(Binary Search)用于在已排序的数组中执行二进制查找的函数。 int binary_search(int arr[], int size, int target
    发表于 12-12 06:54

    如何在vivado上基于二进制码对指令运行状态进行判断

    a0 -8 例 获取相应的二进制码将其转换为16进制导入vivado,方法就是将代码文件修改为.verilog文件并存入蜂鸟的tb文件夹,在vivado的tb中修改测试用例路径即可进行仿真。 得到
    发表于 10-24 06:46

    在vivado上基于二进制码对指令运行状态进行判断

    a0 -8 例 获取相应的二进制码将其转换为16进制导入vivado,方法就是将代码文件修改为.verilog文件并存入蜂鸟的tb文件夹,在vivado的tb中修改测试用例路径即可进行仿真。 得到结果
    发表于 10-24 06:31

    如何将图像文件转换为二进制文件?

    如何将图像文件转换为二进制文件
    发表于 09-05 08:28

    二进制数据处理方法分享

    时,我们如何去解析数据并且应用它们。本次的技术分享文章,我们就从如何传输数据和解析二进制数据来一步一步剥丝抽茧,搞清楚他的运作原理和二进制
    的头像 发表于 07-30 15:41 2569次阅读
    <b class='flag-5'>二进制</b><b class='flag-5'>数据</b>处理方法分享