【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数

news/2024/10/10 18:56:02/

json_0">VS Code Debug技巧:launch.json实用参数

在使用Visual Studio Code (VS Code)进行调试时,launch.json文件是一个强大的工具,它允许你自定义调试会话。以下是一些实用的参数,可以帮助你更有效地调试Python代码。

1. 调试第三方库代码

如果你需要调试第三方库中的代码,可以使用"justMyCode": false参数来禁用仅我的代码功能。这样,你就可以在库代码中设置断点。

json">{"version": "0.2.0","configurations": [{"name": "Python: tutorial_train.py","type": "debugpy","request": "launch","program": "${workspaceFolder}/tutorial_train.py","justMyCode": false,"console": "integratedTerminal"}]
}

2. 指定CUDA环境

在进行深度学习开发时,你可能需要指定CUDA设备。通过设置"env"中的"CUDA_VISIBLE_DEVICES",你可以控制哪些GPU设备对当前调试会话可见。

json">{"version": "0.2.0","configurations": [{"name": "Python: tutorial_train.py","type": "debugpy","request": "launch","program": "${workspaceFolder}/tutorial_train.py","env": {"CUDA_VISIBLE_DEVICES": "1"},"justMyCode": false,"console": "integratedTerminal"}]
}

3. 指定Conda环境

如果你的项目依赖于特定的Conda环境,可以通过"python"参数指定Conda环境的Python解释器路径。

json">{"version": "0.2.0","configurations": [{"name": "Python 调试程序: 当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","justMyCode": false,"python": "/root/miniconda3/envs/xxx/bin/python"}]
}

4. 使用accelerate.launch替代

accelerate库提供了一个命令行工具来启动分布式训练。在launch.json中,你可以使用"module"参数来指定accelerate.commands.launch模块,并通过"args"参数传递必要的命令行参数。

json">{"version": "0.2.0","configurations": [{"name": "Python 调试程序: 训练脚本","type": "debugpy","request": "launch","module": "accelerate.commands.launch","args": ["--config_file", "/path/accelerate/default_config.yaml","/path/train_xxx_deepspeed.py","--config", "/path/test_xxx.yaml"],"console": "integratedTerminal","env": {"CUDA_VISIBLE_DEVICES": "4,5,6,7"},"justMyCode": false}]
}

5. 设置当前工作目录

使用"cwd"参数,你可以为调试会话设置当前工作目录。这对于需要在特定目录下运行脚本的情况非常有用。

json">{"version": "0.2.0","configurations": [{"name": "Python 调试程序: 当前文件","type": "debugpy","request": "launch","program": "/root/TensorRT/demo/Diffusion/demo.py","console": "integratedTerminal","cwd": "/root/TensorRT/demo/Diffusion","env": {"PYTHONPATH": "/root/TensorRT/demo/Diffusion"}}]
}

通过这些launch.json参数,你可以更灵活地控制VS Code的调试环境,无论是调试第三方库、管理CUDA设备、使用特定Conda环境,还是进行分布式训练。


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

相关文章

淘宝商品评论API返回值中的品牌忠诚度评价

淘宝商品评论API返回值中通常并不直接包含品牌忠诚度评价这一具体指标。品牌忠诚度评价往往是一个更为复杂和综合的概念,它可能涉及消费者对品牌的整体满意度、重复购买率、推荐意愿等多个方面,而这些信息通常需要通过分析大量的用户评论、购买行为数据以…

Windows 搭建 Gitea

一、准备工作 1. 安装 Git:Gitea 依赖 Git 进行代码管理,所以首先需要确保系统中安装了 Git。 下载地址:https://git-scm.com/downloads/win 2. 安装数据库(可选) 默认情况下,Gitea 使用 SQLite 作为内…

【HarmonyOS】HMRouter使用详解(三)生命周期

生命周期(Lifecycle) 使用HMRouter的页面跳转时,想实现和Navigation一样的生命周期时,需要通过新建生命周期类来实现对页面对某一个生命周期的监控。 新建Lifecycle类 通过继承IHMLifecycle接口实现生命周期接口的方法重写。 通过…

请解释一下数据库的分区和分片?请解释一下数据库的日志和日志的重要性?

请解释一下数据库的分区和分片? 数据库的分区和分片是两种用于提高数据库性能和可扩展性的技术,它们各自具有不同的特点和应用场景。以下是对这两种技术的详细解释: 一、数据库分区 定义: 数据库分区是将一个大型的数据库表或索…

掌握 WPF 开发:基础、数据绑定与自定义控件

WPF(Windows Presentation Foundation)是用于构建现代桌面应用程序的强大框架。它通过 XAML(Extensible Application Markup Language)与丰富的控件体系,提供了灵活的 UI 开发方式。本文将介绍 WPF 的基础知识、XAML 语…

【2024.10.10练习】Emergency

题目描述 As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities …

iMazing只能苹果电脑吗 Win和Mac上的iMazing功能有区别吗

在当今数字时代,管理和备份手机数据变得越来越重要。无论是转移照片、备份短信,还是管理应用程序,一个强大的工具可以大大简化这些操作。iMazing作为一款备受好评的iOS设备管理软件,已经成为许多用户的选择。但是,许多…

《C++代码热更新:为高效开发注入新活力》

一、引言 在软件开发的过程中,我们常常面临着这样的挑战:当程序已经部署到生产环境后,发现了一些需要紧急修复的 bug 或者需要添加新的功能。传统的方法是停止程序运行,进行代码修改,然后重新编译、部署,这…