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

ops/2024/10/4 15:22:59/

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/ops/120981.html

相关文章

洞悉go.dev

本篇内容是根据2020年1月份Grokking Go.dev音频录制内容的整理与翻译, Carmen、Mat 和 Jon 与 Steve Francia 和 Julie Qiu 一起讨论了新的 Go.dev 网站。它背后的动机是什么?它使用了什么技术来构建它?他们如何努力使包发现变得更好?有哪些…

【初阶数据结构】排序——交换排序

目录 前言冒泡排序快速排序Hoare版前后指针版优化三数取中法取随机数做基准值小区间优化 快排非递归版 前言 对于常见的排序算法有以下几种: 下面这节我们来看交换排序算法。 冒泡排序 基本思想: 在待排序序列中,每一次将相邻的元素进行两…

maven安装本地jar包到本地仓库

有时候我们需要把本地的 jar 包 install 到本地的 maven 仓库&#xff0c;这时就需要手动install依赖项。例如&#xff0c;把下面的 zhdx-license-1.0.jar 安装到本地 maven 仓库的操作如下&#xff1a; <dependency><groupId>com.zhdx</groupId><artifa…

【IPv6】IPv6地址格式及地址分类(组播、单播、任播)整理

IPv6地址格式 IPv6 地址从 IPv4 地址的 32 bits 扩展到 128 bits&#xff0c;IPv6 地址的表示、书写方式也从 IPv4 的点分十进制&#xff0c;修改16进制的冒号分割 IPv4 点分格式(.) 192.168.11.11 IPv6 冒号分割(:) 2408:8459:3032:0000:0000:0000:0001:a9fd IPv6 的规范…

集合框架01:集合的概念、Collection体系、Collection接口

1.集合的概念 集合是对象的容器&#xff0c;定义了多个对象进行操作的常用方法。可实现数组的功能。 集合和数组的区别&#xff1a; 1.数组长度固定&#xff0c;集合长度不固定&#xff1b; 2.数组可以存储基本类型和引用类型&#xff0c;集合只能存储引用类型&#xff1b; …

27 Vue3之unocss原子化

前置知识 什么是原子化 CSS 原子化 CSS 是一种 CSS 的架构方式&#xff0c;它倾向于小巧且用途单一的 class&#xff0c;并且会以视觉效果进行命名。 为什么使用 原子化 CSS 传统方案 制作原子化 CSS 的传统方案其实就是提供所有你可能需要用到的 CSS 工具。例如&#xff0c…

Solidity 设计模式:实现灵活与可扩展的智能合约架构

Solidity 作为以太坊智能合约的主要编程语言&#xff0c;拥有许多独特的设计模式&#xff0c;这些模式帮助开发者实现更加灵活、可扩展和安全的合约架构。设计模式不仅能够简化开发过程&#xff0c;还能减少常见的编程错误&#xff0c;并提高智能合约的可维护性和可升级性。本文…

Java中的对象生命周期管理:从Spring Bean到JVM对象的深度解析

Java中的对象生命周期管理&#xff1a;从Spring Bean到JVM对象的深度解析 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来聊聊Java中的对象生命周期管理&#xff0c;尤其是从Spring Be…