ColossalAI GPT2分布式训练调试配置—GPT系列训练与部署

2024-01-14 07:30

本文主要是介绍ColossalAI GPT2分布式训练调试配置—GPT系列训练与部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

        本专栏之前文章详细介绍了Colossal-AI环境搭建及GPT2数据处理与训练。Colossal-AI框架的主要优势在于分布式训练,进而提高训练效率。但是这种启动方式无法使用Pycharm等IDE直接进行调试。本节将重点介绍如何使用Pycharm来调试。Colossal-AI分布式GPT训练程序,文中所述方法不仅支持colossal run方法启动的程序,也支持torchrun或python -m torch.distributed.launch所启动的程序。这是因为它们本质上都是torch分布式启动方法。

        另外,本专栏具体更新可关注文章下方公众号,也可关注本专栏。所有相关文章会在《Python从零开始进行AIGC大模型训练与推理》中进行更新,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。所有AIGC类模型部署的体验效果将在RdFast小程序中同步上线。

1 分布式训练启动方法

        由于Colossal-AI框架GPT2训练的默认启动方法为分布式模式,它的启动命令可以使用colossalai run,或torchrun,或python -m torch.distributed.launch。具体示例如下所示。

# 1、colossalai run方式启动GPT2训练
colossalai run --nproc_per_node=2 train_gpt.py --config=gpt2_configs/gpt2_vanilla.py --from_torch
# 2、torch run方式启动GPT2训练
torchrun --nproc_per_node=2 train_gpt.py --config=gpt2_configs/gpt2_vanilla.py --from_torch
# 3、python -m torch.distributed.launch方式启动GPT2训练
python -m torch.distributed.launch --nproc_per_node=2 train_gpt.py --config=gpt2_configs/gpt2_vanilla.py --from_torch

        虽然分布式训练启动方法有多种,但是却不支持Python直接启动。例如,“python train_gpt.py --config=gpt2_configs/gpt2_vanilla.py --from_torch”会报错误“RuntimeError: Could not find 'RANK' in the torch environment, visit https://www.colossalai.org/ for more information on launching with torch”。

2 Python启动方式配置

        上述分布式启动方式之一是python -m torch.distributed.launch,这说明python程序入口是launch.py文件。该文件通常位于python环境库site-packages/torch.distributed目录下,例如“/root/miniconda3/envs/clai/lib/python3.8/site-packages/torch/distributed/launch.py”。该文件的启动参数则为“--nproc_per_node=2 train_gpt.py --config=gpt2_configs/gpt2_vanilla.py --from_torch”。

        在PyCharm中,我们可以按照如上内容来配置启动程序和参数。配置页面路径为Run->Edit Configurations...,如下图所示。

图1 PyCharm配置启动程序入口

        点击“Edit Configurations...”后,PyCharm会弹出“Run/Debug Configurations”配置页面,如下图所示。需要注意,页面中分为Python和Python tests两类。我们需要在Python类别中进行配置。Python tests中类别没有启动程序路径和参数配置选项。

图2 Run/Debug Configurations配置页面

        具体配置步骤如下所示。远程服务器调试时,只需将启动程序和配餐参数中路径设置成服务器相应路径即可。远程服务器配置过程请参考第4部分

        (1)点击左上方“+”号,在弹出页面选择Python后,页面会主动创建一个Unamed配置。Unamed为配置名称,用户可以在Name字段中进行自定义,比如修改为“gpt2”。

        (2)在Scripts path中输入launch.py的完整绝对路劲,例如“/root/miniconda3/envs/clai/lib/python3.8/site-packages/torch/distributed/launch.py”。

        (3)在Parameters中输入启动参数,例如“--nproc_per_node=1 /root/project/ColossalAI-Examples/language/gpt/train_gpt.py --config=/root/project/ColossalAI-Examples/language/gpt/gpt2_configs/gpt2_vanilla.py --from_torch”。注意,这里为了方便后续调试而将nproc_per_node设置为1,即并行节点数为1。

        步骤(3)设置完成后,运行程序会调试找不到运行程序文件或配置文件,一般设置成完整绝对路径即可解决问题

        (4)点击运行按钮即可开始训练。

        配置完成界面如下所示。

 图3 配置完成页面

 图4 程序运行按钮

3 程序调试

        启动程序完成后,程序调试只要以Debug方式运行即可调试。Debug运行之前,可在实际主程序中设置断点,以便进行后续调试,如下图所示。

 图5 主程序断点设置

        通过不断步入等调试操作,我们可以定位到以下几个关键断点位置:

        (1)Colossal-AI框架训练入口:colossalai/trainer/_trainer.py第319行“for epoch in range(last_epoch, epochs):”。

        (2)Colossal-AI框架训练损失计算结果:colossalai/trainer/_trainer.py第181行logits, label, loss = self.engine.execute_schedule(”。

        (3)Colossal-AI框架模型计算入口:colossalai/amp/naive_amp/naive_amp.py第152行“out = self.model(*args, **kwargs)”。

        (4)Pytorch模型计算入口:torch/nn/modules/module.py第1130行“return forward_call(*input, **kwargs)”。

        (5)GPT模型计算入口:colossalai/titans/model/gpt/gpt.py第105行“x = self.embed(input_ids)”。

4 远程调试

4.1 服务器配置

        由于模型经常部署在服务器上,所以我们需要进行远程运行与调试。PyCharm远程配置页面为“Tools->Deployment->Configuration”,并在该页面点击“+”后选择“SFTP”。此时,页面会弹出新建服务器对话框,用户给服务器命名即可,例如test。

 图6 远程服务器配置

        在上述远程服务器配置页面的Connection中完成ssh远程连接配置,并在Mappings中完成路径配置。Mappings中的Local path为本机路径,Deployment path为服务器对应路径。Web path不用设置。程序运行时会将Deployment path的文件同步到本机的Local path。

4.2 python解释器

        PyCharm远程Python解释器配置页面为“Files->Settings->Project: python ->Python Interpreter->SSH Interpreter”,如下图所示。

图7 Python解释器配置

4.3 远程调试

        PyCharm远程调试与上述第3部分调试完全一致。调试之前,我们需要通过Tools->Deployment将运行程序同步下载到本地,如train_gpt.py等,然后在该文件中设置断点,最后以Debug方式运行程序即可开始调试。

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

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

        另外,本专栏具体更新可关注文章下方公众号,也可关注本专栏。所有相关文章会在《Python从零开始进行AIGC大模型训练与推理》中进行更新,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。所有AIGC类模型部署的体验效果将在RdFast小程序中同步上线。

这篇关于ColossalAI GPT2分布式训练调试配置—GPT系列训练与部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604389

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别