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

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

如何配置Spring Boot中的Jackson序列化

《如何配置SpringBoot中的Jackson序列化》在开发基于SpringBoot的应用程序时,Jackson是默认的JSON序列化和反序列化工具,本文将详细介绍如何在SpringBoot中配置... 目录配置Spring Boot中的Jackson序列化1. 为什么需要自定义Jackson配置?2.