[零基础]:用PaddleNLP在4060单卡上实践大模型预训练技术

news/2025/2/22 0:03:10/

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

之前我们分享了《从零开始训练一个大语言模型需要投资多少钱》,其中高昂的预训练费用让许多对大模型预训练技术感兴趣的朋友望而却步。

应广大读者的需求,本文将手把手教您如何在单张消费级显卡上,利用PaddleNLP实践OpenAI的GPT-2模型的预训练。GPT-2的预训练关键技术与流程与GPT-4等大参数模型如出一辙,通过亲手实践GPT-2的预训练过程,您就能对GPT-4的预训练技术有更深入的了解。

GPT2_4060

一,GPT-2模型简介

GPT-2(Generative Pre-trained Transformer 2)是由OpenAI在2019年发布的第二代生成式预训练语言模型,通过无监督学习的方式进行预训练,能够在多个自然语言处理任务上取得显著的效果,如文本生成、阅读理解、机器翻译等。

GPT-2 奠定的技术基础为 GPT-3、GPT-4 的发展提供了方向,后续版本在此基础上不断改进和创新。

GPT-2有4个参数版本:124M、355M、774M和1.5B。为方便大家使用单卡实践预训练技术,本文选用124M版本。

二,PaddleNLP简介

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

代码仓:https://github.com/PaddlePaddle/PaddleNLP

图片

三,预训练环境准备

本文的软硬件环境如下:

  • 操作系统:Ubuntu 24.04 LTS

  • CPU: Intel® Core™ i5-10210U

  • GPU:NVIDIA RTX-4060

  • 代码编辑器:VS Code

  • Python虚拟环境管理器:Anaconda

  • 大语言模型训练工具:PaddleNLP

  • 大语言模型:GPT-2

在Ubuntu 24.04上安装RTX-4060驱动和Anaconda请参见这里;若您习惯在Windows上从事日常工作,请先配置《在Windows用远程桌面访问Ubuntu 24.04.1 LTS》。

四,安装PaddleNLP

首先,请用Anaconda创建虚拟环境“gpt2”:

# 创建名为my_paddlenlp的环境,指定Python版本为3.9或3.10conda create -n gpt2 python=3.10# 激活环境conda activate gpt2

然后,克隆PaddleNLP代码仓到本地,切换到“develop”分支后安装PaddleNLP。

# 克隆PaddleNLP代码仓到本地git clone https://github.com/PaddlePaddle/PaddleNLP.gitcd PaddleNLP# 切换到”develop”分支git checkout develop# 安装飞桨框架pip install paddlepaddle-gpu# 安装PaddleNLPpip setup.py install

输入命令:“paddlenlp --help”,出现下图,说明PaddleNLP安装成功!

图片

五,下载预训练数据集

为了方便读者运行快速体验预训练过程,PaddleNLP提供了处理好的100K条openweb数据集的训练样本。该训练数据集虽然不够预训练的数据量要求(模型参数量的十倍以上),但足够让读者观察到启动预训练后,随机初始化权重的GPT-2模型的Loss值从11.x左右下降到5.x左右。

用命令将100K条openweb数据集的训练样本下载到PaddleNLP/llm/data文件夹:​​​​​​​

cd PaddleNLP/llmmkdir datawget https://bj.bcebos.com/paddlenlp/models/transformers/gpt/data/gpt2_openwebtext_100k.binwget https://bj.bcebos.com/paddlenlp/models/transformers/gpt/data/gpt2_openwebtext_100k.idxmv gpt2_openwebtext_100k.bin ./datamv gpt2_openwebtext_100k.idx ./data

滑动查看更多

图片

六,下载GPT-2模型和分词器到本地

在/llm路径下,输入命令下载GPT-2模型和分词器到本地:

paddlenlp download --cache-dir ./pretrained_models gpt2

图片

然后,打开llm/config/gpt3/pretrain_argument.json文件,按照下图修改:

  • "model_name_or_path": "./pretrained_models/gpt2"

  • "tokenizer_name_or_path": "./pretrained_models/gpt2"

图片

七,启动GPT-2模型的预训练

在/llm路径下,输入命令:​​​​​​​

python -u -m paddle.distributed.launch --gpus "0" run_pretrain.py \                                        ./config/gpt-3/pretrain_argument.json \                                       --use_flash_attention False \                                       --continue_training 0

滑动查看更多

训练结果如下图所示:

图片

八,总结

使用PaddleNLP,可以在单张4060显卡上实践OpenAI的GPT-2模型的预训练,让自己对GPT-4的预训练技术有更深入的了解!

更多大模型训练技术,

请参看:https://paddlenlp.readthedocs.io/

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

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

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


http://www.ppmy.cn/news/1573719.html

相关文章

【Python爬虫(18)】解锁验证码识别:Python爬虫进阶秘籍

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…

J3打卡——DenseNet模型实现鸟类分类

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.检查GPU import tensorflow as tf gpustf.config.list_physical_devices("GPU") if gpus:tf.config.experimental.set_memory_growth(gpus[0],Tru…

POI优化Excel录入

57000单词原始录入时间258S 核心代码: List<Word> wordBookList ExcelUtil.getReader(file.getInputStream()).readAll(Word.class);if (!CollectionUtil.isEmpty(wordBookList)) {for (Word word : wordBookList) {//逐条向数据库中插入单词wordMapper.insert(word);}…

RT-Thread+STM32L475VET6——ADC采集电压

文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行配置1.1 使用外部高速时钟&#xff0c;并修改时钟树1.2 打开ADC1的通道3&#xff0c;并配置为连续采集模式(ADC根据自己需求调整&#xff09;1.3 打开串口1.4 生成工程 2. 配置ADC2.1 打开ADC驱动2.2 声明ADC2.3 剪切stm…

如何使用 DeepSeek R1 构建开源 ChatGPT Operator 替代方案

开源大型语言模型&#xff08;LLMs&#xff09;的兴起使得创建 AI 驱动的工具比以往任何时候都更容易&#xff0c;这些工具可以与 OpenAI 的 ChatGPT Operator 等专有解决方案相媲美。在这些开源模型中&#xff0c;DeepSeek R1 以其强大的推理能力、自由的可访问性和适应性而脱…

“深入浅出”系列之C++:(21)C++23

凌晨3点&#xff0c;你盯着屏幕上的段错误崩溃日志&#xff1a; "第387行用%d输出了string...这都能过编译&#xff1f;" "为了对齐表格&#xff0c;我写了20个setw&#xff01;" "客户说中文乱码&#xff0c;又要调locale到天亮&#xff1f;" …

MATLAB中ifft函数用法

目录 语法 说明 示例 向量的逆变换 填充的矩阵逆变换 ​共轭对称向量 算法 ifft函数的功能是进行快速傅里叶逆变换。 语法 X ifft(Y) X ifft(Y,n) X ifft(Y,n,dim) X ifft(___,symflag) 说明 ​X ifft(Y) 使用快速傅里叶变换算法计算 Y 的逆离散傅里叶变换。X …

原生稀疏注意力机制(NSA):硬件对齐且可原生训练的稀疏注意力机制-论文阅读

摘要 长上下文建模对于下一代语言模型至关重要&#xff0c;但标准注意力机制的高计算成本带来了巨大的计算挑战。稀疏注意力提供了一种在保持模型能力的同时提高效率的有前途的方向。本文提出了一种名为 NSA&#xff08;原生可训练稀疏注意力机制&#xff09; 的方法&#xff…