pytorch 分布式调试debug torch.distributed.launch

news2024/11/30 0:32:02

文章目录

      • 一. pytorch 分布式调试debug torch.distributed.launch 三种方式
        • 1. 方式1:ipdb调试(建议)
          • 命令行使用pdb未解决:
        • 2. 方式2:使用pycharm进行分布式调试(侵入式代码)
        • 3. 方式3:使用pycharm进行分布式调试(另外一种方式:非侵入代码)

一. pytorch 分布式调试debug torch.distributed.launch 三种方式

1. 方式1:ipdb调试(建议)

参考之前的博客:python调试器 ipdb
注意:pytorch 分布式调试只能使用侵入式调试,也即是在你需要打断点的地方(或者在主程序的第一行)添加下面的代码:

import pdb
pdb.set_trace()

当进入pdb调试后,跟原先使用pdb调试命令一样,可以在线打断点(再使用pdb命令添加多个断点),也可以逐行执行代码,也能查看变量。唯一缺点是分布式调试需要在代码前手动加上pdb.set_trace()这一行代码,手动打第一个断点。

命令行使用pdb未解决:

命令行进行添加pdb:

python -m pdb -m torch.distributed.launch .....

命令行添加pdb后,进入调试的代码在launch.py中,打断点到主程序后,无法进入到住程序里面,------???暂时未解决

2. 方式2:使用pycharm进行分布式调试(侵入式代码)

在主函数开头添加如下代码:

    if args.world_size == 0:
        os.environ['MASTER_ADDR'] = 'localhost' #master节点的ip地址
        os.environ['MASTER_PORT'] = '56220'  #master节点的端口号
        os.environ["RANK"] = "0"
        os.environ['WORLD_SIZE'] = '1' #debug时没有world_size=8参数,只有一个gpu
    torch.distributed.init_process_group(backend="nccl") #分布式后端初始化

注意一定要在初始化分布式后端nccl之前添加master节点的ip地址和端口号等信息,如下图:

调试

然后在pycharm Edit configurations…中配置环境,Script path为:主程序.py文件位置,Parameters:程序需要运行的参数,Environment variables:增加环境变量,配置好后,点击Apply–>OK即可。

注意Parameters参数里面不能配置 ‘’–world_size’’ 参数,程序world_size默认为0,因为主程序需要在这一行if args.world_size == 0代码的 if 判断语句里面 需要手动配置master节点的ip和端口号,以及world_size和rank等配置

调试

此方式也就是相当于在分布式代码上面使用一张卡进行代码调试。

3. 方式3:使用pycharm进行分布式调试(另外一种方式:非侵入代码)

参考链接:
【PyTorch】PyCharm远程连接服务器,调试torch.distributed.launch分布式程序,
Pycharm:运行、调试pytorch分布式训练代码

注意:Parameters参数的详细设置中:所有参数涉及需要路径的地方(如文件路径,保存路径,数据集路径等)就必须使用绝对路径,不然会报错,找不到文件,如下图:

调试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HRNet源码阅读笔记(5),庞大的PoseHighResolutionNet模块-transition1

在stage1的最后,分支了。就是所谓的transition1,详见下面的第13行。def forward(self, x):x self.conv1(x)x self.bn1(x)x self.relu(x)x self.conv2(x)x self.bn2(x)x self.relu(x)x self.layer1(x)x_list []for i in range(self.stage2_cfg[NU…

【前端之旅】Webpack模块打包工具

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

【图的存储】

更好的阅读体验\color{red}{更好的阅读体验}更好的阅读体验 文章目录1. 邻接矩阵2. 边集数组3. 邻接表4. 链式邻接表5. 链式前向星总结1. 邻接矩阵 思想: 利用二维数组 g[N][N] 存储所有的点到点的权值。其中 N 为点的数量,g[i][j] 表示点 i 到点 j 的权…

【C++】容器适配器

文章目录一. 什么是适配器?什么是容器适配器?二.理解容器适配器stack的模拟实现queue的模拟实现一. 什么是适配器?什么是容器适配器? 适配器是一种设计模式(设计模式是一套被反复使用的,多数人知晓的,经过分类编目的,代码设计…

CAD未协调的新图层怎么处理?

在打开CAD图纸时,系统提示图形存在为协调的新图层是什么意思?所谓未协调图层,是指上次打印或者保存之类命令后新增的图层,大部分情况下增加新的外部参照时会把所有外部参照中的图层标记为未协调图层。CAD未协调的新图层怎么处理&a…

2023年底,我要通过这5点,实现博客访问量500W

说实话,这真的是一个非常高远的flag,因为我目前只有35W,但根据我2个月前还是12W的访问量,我觉得我还是可以拼一把的,在这里我想向大家分享一下我的计划,如何达成2023年底,博客访问量达到500W的K…

期刊会议排名、信息检索网站推荐、IEEE Latex模板下载(更新中...)

一.拿到一个期刊或论文,不知道他的影响因子、分区类型等等信息,可以使用以下几个网站搜索一下。二.一些会议期刊搜索1.国外The Latest Information Technology Conference and Journal List - Conference Partner(信息技术最新国际会议和期刊…

Java程序员必知四种负载均衡算法

前言 一般来说,我们在设计系统的时候,为了系统的高扩展性,会尽可能的创建无状态的系统,这样我们就可以采用集群的方式部署,最终很方便的根据需要动态增减服务器数量。但是,要使系统具有更好的可扩展性&…

直观理解--马氏距离

首先我们很了解欧氏距离了,就是用来计算欧式空间(就是我们常见的坐标系)中两个点的距离的。 比如点 x(x1,…,xn)x (x_1,…,x_n)x(x1​,…,xn​) 和 y(y1,…,yn)y (y_1,…,y_n)y(y1​,…,yn​) 的欧氏距离为: d(x,y)(x1−y1)2(x2…

依靠小游戏带动产品增收,app运营这样做

大家都玩过小游戏吧?从小时候的4399游戏平台到现在的微信小游戏,尤其是风靡一时的“跳一跳”和“羊了个羊”都曾上榜热搜,让人印象深刻。在当下小游戏爆火社交平台的不断出现的背景下,小游戏的发展劲头更是强盛。 小游戏的吸引力在…

Memblaze发布大容量企业级SSD:支持32T最大容量,性能更强!

2023年1月10日 —— 今天,北京忆恒创源科技股份有限公司(Memblaze)正式发布 PBlaze6 6930 系列 PCIe 4.0 企业级 NVMe SSD。PBlaze6 6930 面向企业高性能业务应用开发,有着 1600K/680K IOPS 的 4K 随机读/写性能,具备更…

Mysql常见面试题

Mysql常见面试题汇总①⭐事务的基本特性和隔离级别⭐ACID靠什么保证⭐什么是MVCC⭐mysql的主从同步原理简述MyISAM和InnoDB的区别简述mysql中索引类型以及对数据库的性能影响⭐索引的基本原理Mysql聚簇索引和非聚簇索引的区别⭐B树和B树的区别,为什么Mysql使用B树My…

第04讲:Docker部署MySQL8

MySQL 的 Docker 镜像在 dockerhub 上的地址:https://hub.docker.com//mysql 当前(2021-04-02)的 latest 和 8.0.23 是同一个镜像 。另外,5.7 版本和 5.7.33 是同一个镜像 第1步:安装mysql 查询中央仓库 docker se…

Kestrel封装在WindowService中(.net5,.net6,.net7三个版本的介绍)

Kestrel封装在WindowServer中背景关于WindowsServer开发服务.NET5版本建项目添加Controller添加引用修改Startup.cs修改Program.cs配置Kestrel监听发布程序通过命令行创建服务关于SC命令启动服务查看效果测试效果.NET6错误1解决办法:错误2运行效果如下图.NET7版本&a…

千锋教育嵌入式物联网教程之系统编程篇学习-01

目录 课程视频链接 笔记目的 什么是系统编程 如何操作内核的系统调用 系统调用的分类​编辑 系统调用的返回值 系统调用IO函数 文件描述符 文件IO文件描述符与标准IO的文件指针对应关系 Man手册使用 open函数 函数调用失败打印错误 close函数 测试一个进程最多能产生多少个…

如何准备pmp考试?

一、考前五准备 1.知识准备:读透教材,仔细回顾知识点,明确知识框架,模考题考前正确率达到95%。 2.精神准备:明确目标,有信心,不要焦虑。 3.精力准备:科学安排考前的复习和休息时间…

【nvivo11plus教程】03_查询+自动编码

注:nvivo11也可以使用自动编码的。我是在第一次使用自动编码的时候,它弹出来一个界面让我下载安装包,但是网速特别慢,需要5、6个小时,然后我电脑开了一个晚上,第二天早上显示下载失败,但是可以使…

十一、路由

一、前端路由的概念与原理 1.1、什么是路由 路由(英文:router)就是对应关系。 1.2、SPA与前端路由 SPA 指的是一个web网站只有唯一的一个HTML页面,所有组件的展示与切换都在这唯一的一个页面内完成。此时,不同组件…

【 java 集合】Collections工具类的使用

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

python基础语法二

一、条件判断 1.1 if…else…语句 if…else… 字面意思就是 如果…否则… num 3 # 通过取模运算判断num是否能被2整除 if num % 2 0:print(str(num) "是一个偶数") else:print(str(num) "是一个奇数")注意两条print语句前面的缩进 1.2 elif 当你有三…