GPT系列训练与部署——GPT2环境配置与模型训练

这篇具有很好参考价值的文章主要介绍了GPT系列训练与部署——GPT2环境配置与模型训练。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        本文为博主原创文章,未经博主允许不得转载。

        本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。文章来源地址https://www.toymoban.com/news/detail-498327.html

        Colossal-AI提供了多种并行方式来运行GPT,不同并行方式的相应配置位于gpt2_configs文件夹下。运行示例程序的教程地址为“https://github.com/hpcaitech/ColossalAI-Examples/tree/main/language/gpt”。我们将根据该教程中的步骤来运行GPT训练程序。Colossal-AI环境搭建与运行测试请参考本专栏文章《GPT系列训练与部署——Colossal-AI环境配置与测试验证》,地址为“https://blog.csdn.net/suiyingy/article/details/130209217”。

GPT系列训练与部署——GPT2环境配置与模型训练

图1 GPT训练教程页面

        本节将重点介绍如何在Colossal-AI中运行GPT程序。更多AIGC类模型训练、推理及部署请参考本专栏文章《Python从零开始进行AIGC大模型训练与推理》,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。我们也会在文末下方公众号中进行同步更新。相关AIGC模型体验会在RdFast小程序中同步上线。

1 环境安装

1.1 Colossal-AI环境

        Colossal-AI环境搭建与测试请参考本专栏文章《GPT系列训练与部署——Colossal-AI环境配置与测试验证》,地址为“https://blog.csdn.net/suiyingy/article/details/130209217”。

1.2 ColossalAI-Examples环境

        ColossalAI-Examples包含了一些示例程序,例如 GPT训练程序,其环境搭建步骤如下所示。

git clone https://github.com/hpcaitech/ColossalAI-Examples.git
cd ColossalAI-Examples
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

1.3 Colossal-AI GPT环境

        环境安装指令如下所示。其中,LSH安装依赖于早期版本GCC,即版本不易过高。教程指出9.3.0版本gcc满足要求,而10.3.0版本则不满足。

pip install ftfy langdetect numpy torch pandas nltk sentencepiece boto3 tqdm regex bs4 newspaper3k htmlmin tldextract cached-path  -i https://pypi.tuna.tsinghua.edu.cn/simple
git clone https://github.com/mattilyra/LSH.git
cd LSH
python setup.py install

        安装LSH时可能报如下错误,解决方式是用Colossal-AI的cMinhash.cpp替换LSH/lsh文件夹下文件,然后重新运行“python setup.py install”。文件替换参考命令为“cp ~/project/ColossalAI-Examples/language/gpt/tools/LSH/cMinhash.cpp lsh/cMinhash.cpp”。

/root/miniconda3/envs/clai/lib/python3.8/site-packages/numpy/core/include/numpy/__multiarray_api.h: At global scope:
/root/miniconda3/envs/clai/lib/python3.8/site-packages/numpy/core/include/numpy/__multiarray_api.h:1477:1: warning: ‘int _import_array()’ defined but not used [-Wunused-function]
 _import_array(void)
 ^~~~~~~~~~~~~
error: command '/usr/bin/gcc' failed with exit code 1

2 数据下载

2.1 url文件下载

        GPT2模型的数据集为OpenWebText,主要来源于网页文本,其完整数据集大小为38GB。Colossal-AI提供了OpenWebText数据集的下载地址,即“https://mega.nz/#F!EZZD0YwJ!9_PlEQzdMVLaNdKv_ICNVQ!cc4RgQQZ”。下载后文件为OpenWebText.zip的压缩文件,解压后文件目录为OpenWebText/Version 1/URLs。目录下包括161个文本文件,每个文件记录了网页内容的地址url。

2.2 数据清洗

        由于OpenWebText数据集中的部分url可能已经无法访问,所以需要运行如下命令后完成数据清洗。

cd path/to/tools
python Megatron/blacklist_urls.py <path/to/URLs> <path/to/clean_urls.txt>

        具体示例如下:

cd ColossalAI-Examples/language/gpt/tools/
python Megatron/blacklist_urls.py /data/data/clai/data/OpenWebText/Version\ 1/URLs/ /data/data/clai/data/OpenWebText/clean_urls.txt

        程序运行完成之后会在指定的路径下生成clean_urls.txt文件,文件包含了经过清洗后的21269934个url地址。

2.3 内容下载

        根据清洗后的url地址,我们需要下载其中的网页内容。下载命令如下所示,其中n_procs是线程数量。

Cd /language/gpt/tools
python download/download.py <path/to/clean_urls.txt> --n_procs 50 --output <path/to/raw.json>

        由于完整数据集下载时间较久,我们可以通过下面的命令仅下载一部分数据。其中,max_urls可指定最多下载的url数量,timeout用于设定url访问的超时时间。设置超时时间的好处是快速跳过无法连接的url地址。

python download/download.py  /data/data/clai/data/OpenWebText/clean_urls.txt --output /data/data/clai/data/OpenWebText/raw.json --max_urls 1000 --timeout 30

        下载后的网页内容存储在所指定路径下的raw.json文件。文件包含了一系列由json格式数据组成的列表,每个json数据对应一个url中的网页内容。Json格式为{'text': text, 'url': unique_url},示例如下所示。

{"text": "The space station looks like an airplane or a very bright star moving across the sky, except it doesn't have flashing lights or change direction. It will also be moving considerably faster than a typical airplane (airplanes generally fly at about 600 miles per hour; the space station flies at 17,500 miles per hour).\n\nBelow is a time-lapse photo of the space station moving across the sky.\n\nThe International Space Station is seen in this 30 second exposure as it flies over Elkton, VA early in the morning, Saturday, August 1, 2015. Photo Credit: NASA/Bill Ingalls\n\nVisit the NASA Johnson Flickr Photostream", "url": "http://spotthestation.nasa.gov/sightings/view.cfm?country=United_States®ion=Arizona&city=Phoenix#.UvPTWWSwLpM"}

GPT系列训练与部署——GPT2环境配置与模型训练

 图2  raw.json中原始数据

3 数据处理

        相关程序位于language/gpt/tools文件夹下。

3.1 删除长度过短的文本。

        运行“python Megatron/cleanup_dataset.py <path/to/raw.json> <path/to/clean.json>”可删除长度少于128个token的数据。示例程序如下。程序中提供的cleanup_fix_dataset.py支持更多清理数据选项。清理后的数据保存于clean.json。

python Megatron/cleanup_dataset.py /data/data/clai/data/OpenWebText/raw.json  /data/data/clai/data/OpenWebText/clean.json

3.2 删除相似数据

        程序使用LSH找出可能相似的数据,然后对相似度较高的数据进行分组,每组数据最后仅保留其中一个数据,删除其它所有相似数据。

#查找相似数据
python Megatron/find_duplicates.py --inputs <path/to/clean.json> url --output <path/to/process_stage_one.json>
#相似数据分组
python Megatron/group_duplicate_url.py <path/to/process_stage_one.json> <path/to/process_stage_two.json>
#删除相似数据
python Megatron/remove_group_duplicates.py <path/to/process_stage_two.json> <path/to/clean.json> <path/to/dedup.json>

        示例程序如下,处理后结果保存在dedup.json。

python Megatron/find_duplicates.py --inputs /data/data/clai/data/OpenWebText/clean.json url --output /data/data/clai/data/OpenWebText/process_stage_one.json
python Megatron/group_duplicate_url.py /data/data/clai/data/OpenWebText/process_stage_one.json /data/data/clai/data/OpenWebText/process_stage_two.json
python Megatron/remove_group_duplicates.py /data/data/clai/data/OpenWebText/process_stage_two.json /data/data/clai/data/OpenWebText/clean.json /data/data/clai/data/OpenWebText/dedup.json

3.3 打乱数据顺序

        使用命令“shuf <path/to/dedup.json> -o <path/to/train_data.json>”随机打乱数据,并保存于train.json。处理后的数据结构与第二部分的数据结构完全一致,即{'text': text, 'url': unique_url}。

shuf /data/data/clai/data/OpenWebText/dedup.json -o /data/data/clai/data/OpenWebText/train_data.json

4 中文数据集处理

        中文数据集使用的是浪潮提供的“源数据”,可在“ https://air.inspur.com/home”网站进行申请。其分词表下载地址为“https://github.com/Shawn-Inspur/Yuan-1.0/blob/main/src/vocab.txt”。完整源数据下载后的目录结构形式如下所示。

|--dataset
|     |--001.txt
|     |--002.txt
|     |--...
|--vocab.txt

        使用该数据集训练时需要替换train_gpt.py的44行,如下所示。

import dataset.yuan import YuanDataset
train_ds = YuanDataset(os.environ['DATA'], vocab_path='/path/to/data/vocab.txt'seq_len=gpc.config.SEQ_LEN)

5 模型训练

5.1 设置训练数据路径

        这里以OpenWebText数据集来进行训练。数据集路径可以通过设置环境变量的方法来进行设置,即“export DATA=/path/to/train_data.json”,也可通过将train_gpt.py的第44行更改为“ train_ds = WebtextDataset('/data/data/clai/data/OpenWebText/train_data.json', seq_len=gpc.config.SEQ_LEN)”来实现。

5.2 模型训练

        模型训练命令为“colossalai run --nproc_per_node=<num_gpus> train_gpt.py --config=gpt2_configs/<config_file>”。其中,num_gpus为GPU数量,config可加载不同配置的GPT2或GPT3训练参数。

        示例程序为“colossalai run --nproc_per_node=2 train_gpt.py --config=gpt2_configs/gpt2_vanilla.py”。运行过程中两块GPU分别占用显存4621MB。训练过程如下图所示。如果运行报错,请继续阅读下面内容

GPT系列训练与部署——GPT2环境配置与模型训练

 图3 GPT2训练示意图

        其它GPT2模型训练配置下的显存和并行训练方式如下表所示。TP、PP和DP代表三种并行模式,分别表示Tensor Parallel、Pipeline Parallel、Data Parallel。GPU数量由三者相乘得到,即TP * PP * DP,且DP取值是自动计算的。

GPT系列训练与部署——GPT2环境配置与模型训练

 图4 GPT2训练配置

        如果运行报错“ModuleNotFoundError: No module named 'colossalai.zero.init_ctx'”,那么建议通过pip uninstall卸载colossalai,并重新通过pip install colossalai进行安装。安装过程中建议不使用镜像或更换不同镜像,这是因为个别镜像网站上的资源可能仍然存在该问题。

        如果运行报错“KeyError: 'SLURM_PROCID'”,那么需要将运行命令替换为“colossalai run --nproc_per_node=2 train_gpt.py --config=gpt2_configs/gpt2_1d.py --from_torch”,即增加--from_torch。

6 配置文件介绍

        配置文件可参考官方介绍,主要是并行方式、训练迭代次数、Batch Size和隐藏变量维度设置,https://github.com/hpcaitech/ColossalAI-Examples/tree/main/language/gpt。这里不作额外介绍,后续文章将结合训练程序调试过程详细介绍。

        GPT3模型训练参数配置如下所示。

GPT系列训练与部署——GPT2环境配置与模型训练

 图5 GPT3训练配置

        更多AIGC类模型训练、推理及部署请参考本专栏文章《Python从零开始进行AIGC大模型训练与推理》,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。我们也会在文末下方公众号中进行同步更新。相关AIGC模型体验会在RdFast小程序中同步上线。

        本文为博主原创文章,未经博主允许不得转载。

        本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。

到了这里,关于GPT系列训练与部署——GPT2环境配置与模型训练的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GPT2训练自己的对话问答机器人

    这里我搭建了虚拟的3.6环境 基于GPT2的中文闲聊机器人,模型实现基于HuggingFace的transformers ,精读GPT2-Chinese的论文和代码,获益匪浅。 data/train.txt:默认的原始训练集文件,存放闲聊语料;data/train.pkl:对原始训练语料进行tokenize之后的文件,存储一个list对象,list的每条数据表示一个

    2024年02月12日
    浏览(66)
  • GPT2-Chinese 文本生成,训练AI写小说,AI写小说2

    GPT-2 (Generative Pre-trained Transformer 2) 是由 OpenAI 开发的一种基于 Transformer 模型的自然语言处理(NLP)模型,旨在生成自然流畅的文本。它是一种无监督学习模型,其设计目标是能够理解人类语言的复杂性并模拟出自然的语言生成。 GPT-2 是目前最先进的自然语言处理模型之一,因

    2024年02月13日
    浏览(41)
  • GPT2中文模型本地搭建(二)

    GPT2_ML项目是开源了一个中文版的GPT2,而且还是最大的15亿参数级别的模型。 OpenAI在GPT2的时期并没有帮忙训练中文,上篇文章的验证也可说明此问题,对应的模型直接上GitHub上下载即可。 本文主旨快速搭建本地模型,更全的攻略,大家也可以到GitHub中慢慢摸索。 本文是基于

    2024年02月09日
    浏览(43)
  • GPT实战系列-如何用自己数据微调ChatGLM2模型训练

    广告文案生成模型 输入文字 :类型#裙 颜色#蓝色 风格#清新*图案#蝴蝶结 输出文案 :裙身处采用立体蝴蝶结装饰辅以蓝色条带点缀,令衣身造型饱满富有层次的同时为其注入一丝甜美气息。将女孩清新娇俏的一面衬托而出。 训练和测试数据组织: 数据可以从 下载链接,t

    2024年02月06日
    浏览(50)
  • 模型训练系列:1、用清华ChatGLM-6B模型部署自己的本地AI助手

    最近清华大学开源的ChatGLM-6B语言模型在国际上大出风头,仅仅62亿参数的小模型,能力却很强。很期待他们后续1300亿参数模型130B的发布。 为什么一些能力较弱的小模型,这么受追捧?因为ChatGPT、GPT-4虽好,毕竟被国外封锁,而且还要付费,更重要的是,LLM要在各行业提高生

    2024年02月11日
    浏览(52)
  • 【colab】谷歌colab免费服务器训练自己的模型,本文以yolov5为例介绍流程

    目录 一.前言 二.准备工作 1.注册Google drive(谷歌云盘) Google Driver官网:https://drive.google.com/drive/ Colab官网:https://colab.research.google.com/ 2.上传项目文件 3.安装Colaboratory 4.colab相关操作和命令 5.项目相关操作  三.异常处理         本文介绍了在谷歌开放平台Google colab上租用免

    2023年04月08日
    浏览(53)
  • 开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

    TextGen 实现了多种文本生成模型,包括:LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用。 [2023/06/15] v1.0.0版本: 新增ChatGLM/LLaMA/Bloom模型的多轮对话微调训练,并发布医疗问诊LoRA模型shibing624/ziya-llama-13b-medical-lora。详见Release-v1.0.0 [2023/06/02] v0.2.7版本: 新增ChatG

    2024年02月13日
    浏览(41)
  • Mx_yolov3环境配置+模型测试训练

    目录 前言 一、Mx_yolov3的下载 二、环境配置 总结 最近刚结束电子设计大赛,也是对自己近期的工作学习有一个浅浅的总结。准备电赛的过程中遇到较困难的事情就是配置K210支持的深度学习环境了。之前打算用darknet-yolov2,结果失败了,后来由于自己是win11(踩坑,强烈建议不

    2024年02月14日
    浏览(44)
  • 【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

    云服务器训练YOLOv8-新手教程-哔哩哔哩 🍀2023.11.20 更新了划分数据集的脚本 在自定义数据上训练 YOLOv8 目标检测模型的步骤可以总结如下 6 步: 🌟收集数据集 🌟标注数据集 🌟划分数据集 🌟配置训练环境 🌟训练模型 🌟评估模型 随着深度学习技术在计算机视觉领域的广泛

    2023年04月15日
    浏览(85)
  • yolov5的运行环境配置、参数修改和训练命令,并将训练的pt模型转换为rknn模型,并推理

    目录 一.yolov5的运行环境配置(Windows系统) 1、NVIDIA驱动安装与更新  2、Anaconda 的安装 3、Pytorch环境安装  4、pycharm安装 二.yolov5训练数据集,得到best.pt(Windows系统)  1.下载YOLO项目代码  2.环境安装 3. 数据集下载: 三.best.pt转为onnx模型(Windows系统) 四.best.onnx转为best.rknn模型(Linu

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包