vscode调试launch.json常用格式

本文详细介绍了如何在VSCode中配置launch.json,以便使用debugpy、torchrun、deepspeed和acceleratelaunch调试Python脚本,包括执行.py文件、多文件调试以及在分布式环境中进行模型微调的配置方法。
摘要由CSDN通过智能技术生成

目录

1、简单的模版

2、简单的案例 

  2.1、python 执行.py 文件

  2.2、调式多个文件

  2.3、torchrun、deepspeed 调试

  2.4、accelerate launch (模块)

3、完整的案例


1、简单的模版

定义一个简单的模版如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python 调试一",         // 可自定义
            "type": "debugpy",
            "request": "launch",
            "program": "运行脚本的程序",  // 使用.py 脚本路径(相对路径)、which torchrun、which deepspeed等命令查看位置
            "console": "integratedTerminal",
            "justMyCode": false,       // 调试允许进入他人的代码
            "env": {
                "PYTHONPATH": "${workspaceRoot}" // 设置vscode家路径为项目根路径, 搜索包时优先从该目录进行,防止发生import包错误
            },
            "args": [               // 参数,每个参数的参数值无论是否是数字都需用引号
                "--参数1","值1",  
                "--model_name_or_path","facebook/opt-350m",
                "--per_device_train_batch_size", "4",
                "--per_device_eval_batch_size", "4"
            ]
        }
    ]
}

2、简单的案例 

  2.1、python 执行.py 文件

bash 命令

# 加入当前目录的绝对路径
PYTHONPATH=$PWD
export PYTHONPATH
echo "当前bash执行目录: $PWD, 已经将PYTHONPATH设置为: $PYTHONPATH"

batch_dir=data/gpt3_generations_ceshi/

# 命令行python 进行执行
python self_instruct/bootstrap_instructions.py \
    --batch_dir ${batch_dir} \
    --num_instructions_to_generate 5

命令行 python 进行执行脚本,构建launch.json 思路

  • bash 为python执行脚本.py,直接修改"program"为.py脚本相对路径
  • 其他参数照抄
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python 调试",
            "type": "debugpy",
            "request": "launch",
            "program": "self_instruct/bootstrap_instructions.py",  // .py脚本文件相对路径位置
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {
                "PYTHONPATH": "${workspaceRoot}" // 设置vscode项目根路径,搜索包时优先从该目录进行,防止发生import包错误
            },
            "args": [
                "--batch_dir","data/gpt3_generations_ceshi",// TODO 修改官方线上数据集为自己的路径
                "--num_instructions_to_generate","5"    
            ]
        }
    ]
}

  2.2、调式多个文件

与调试单个文件同理,只是重复

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        // 第一个文件
        {
            "name": "Python 调试 bootstrap_instructions.py",
            "type": "debugpy",
            "request": "launch",
            "program": "self_instruct/bootstrap_instructions.py",  // .py脚本文件相对路径位置
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {
                "PYTHONPATH": "${workspaceRoot}" // 设置vscode项目根路径,搜索包时优先从该目录进行,防止发生import包错误
            },
            "args": [
                "--batch_dir","data/gpt3_generations_ceshi",// TODO 修改官方线上数据集为自己的路径
                "--num_instructions_to_generate","5"
            ]
        },
        // 第二个文件
        {
            "name": "Python 调试 identify_clf_or_not.py",
            "type": "debugpy",
            "request": "launch",
            "program": "self_instruct/identify_clf_or_not.py",  // .py脚本文件相对路径位置
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {
                "PYTHONPATH": "${workspaceRoot}" // 设置vscode项目根路径,搜索包时优先从该目录进行,防止发生import包错误
            },
            "args": [
                "--batch_dir","data/gpt3_generations_ceshi",// TODO 修改官方线上数据集为自己的路径
                "--num_instructions_to_generate","5"
            ]
        }
    ]
}

  2.3、torchrun、deepspeed 调试

bash 命令

# 加入当前目录的绝对路径
PYTHONPATH=$PWD
export PYTHONPATH
echo "当前bash执行目录: $PWD, 已经将PYTHONPATH设置为: $PYTHONPATH"

batch_dir=data/gpt3_generations_ceshi/

# 命令行python 进行执行
deepspeed --num_gpus 1 self_instruct/bootstrap_instructions.py \
    --batch_dir ${batch_dir} \
    --num_instructions_to_generate 5

命令行 deepspeed/torchrun 进行执行脚本,构建launch.json 思路

  • 构建launch.json脚本时需要找到“deepspeed”命令的路径,bash命令行:which deepspeed,直接修改"program"为该路径。
  • self_instruct/bootstrap_instructions.py 是执行的脚本的相对路径,不在主目录中,因此我们需要加入 "PYTHONPATH": "${workspaceRoot}" 指定项目目录到环境变量中,以防代码运行时出现 import 错误
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python 调试一阶段LORA",
            "type": "debugpy",
            "request": "launch",
            "program": "/opt/conda/envs/dsc/bin/deepspeed",  // which deepspeed 查看位置
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {
                "PYTHONPATH": "${workspaceRoot}" // 设置vscode项目根路径,搜索包时优先从该目录进行,防止发生import包错误
            },
            "args": [
                "--num_gpus", "1", 
                "self_instruct/bootstrap_instructions.py",   // 给定脚本地址(相对路径)
                "--batch_dir","data/gpt3_generations_ceshi",  
                "--num_instructions_to_generate","5"
            ]
        }
    ]
}

  2.4、accelerate launch (模块)

# bash
accelerate launch --config_file "examples/sft/configs/deepspeed_config_z3_qlora.yaml"  examples/sft/train.py \
    --seed 100 \
    --model_name_or_path "/workspace/Llama-2-7b-chat-hf" \
    --dataset_name "smangrul/ultrachat-10k-chatml" \
    --chat_template_format "chatml" \
    --add_special_tokens False \
    --append_concat_token False \
    --splits "train,test" \
    2>&1 | tee -a examples/sft/qlora_ds_zero3_log.out

launch.json 

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python ds_z3_qlora_multigpu 微调",
            "type": "debugpy",
            "request": "launch",
            "module": "accelerate.commands.launch",          //调试accelerate launch
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {
                "PYTHONPATH": "${workspaceRoot}"
            },
            "args": [
                "--config_file", "examples/sft/configs/deepspeed_config_z3_qlora.yaml",
                "examples/sft/train.py",
                "--seed", "100",
                "--model_name_or_path", "/workspace/Llama-2-7b-chat-hf",
                "--dataset_name", "smangrul/ultrachat-10k-chatml",
                "--chat_template_format", "chatml",
                "--add_special_tokens", "False",
                "--append_concat_token", "False",
                "--splits", "train,test"
              ]
        }
    ]
}

3、完整的案例

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        // py 脚本
        {
            "name": "Python lora 微调",
            "type": "debugpy",
            "request": "launch",
            "program": "finetune_demo/finetune_hf.py",
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {
                "PYTHONPATH": "${workspaceRoot}"
            },
            "args": [
                "/workspace/AdvertiseGen_fix",  
                "/workspace/chatglm3-6b",
                "finetune_demo/configs/lora.yaml"
            ]
        },
        // torchrun 分布式
        {
            "name": "Python lora_ds 微调",
            "type": "debugpy",
            "request": "launch",
            "program": "/opt/conda/envs/llm/bin/torchrun",
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {
                "PYTHONPATH": "${workspaceRoot}"
            },
            "args": [
                "--nproc_per_node","1",
                "finetune_demo/finetune_hf.py",
                "/workspace/AdvertiseGen_fix",  
                "/workspace/chatglm3-6b",
                "finetune_demo/configs/lora.yaml"
            ]
        }
    ]
}

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VSCodelaunch.json文件是用来配置调试器的,可以设置调试器的启动方式、调试的目标文件、调试的参数等。以下是配置launch.json文件的步骤: 1. 打开VSCode,点击左侧的调试按钮,然后点击“创建launch.json文件”按钮。 2. 选择调试器类型,比如Node.js或Chrome等。 3. 配置调试器的启动方式,比如Node.js的启动方式可以是“node”或“nodemon”。 4. 配置调试的目标文件,比如Node.js的目标文件可以是一个JavaScript文件。 5. 配置调试的参数,比如Node.js的参数可以是命令行参数或环境变量。 6. 保存launch.json文件,然后点击调试按钮开始调试。 以上就是配置VSCodelaunch.json文件的步骤。 ### 回答2: VSCode 是一款十分流行的文本编辑器,它拥有强大的扩展功能,支持多种编程语言的代码编写。VSCode调试功能也十分强大,但需要使用配置文件 launch.json 进行配置。下面我们来详细了解一下如何配置 VSCodelaunch.json 文件。 首先,我们需要在项目的根目录下创建一个名为 launch.json 的配置文件。在 VSCode 中,我们可以通过点击左边的菜单栏中的 Debug 按钮,再点击左边的 Configure 按钮,就可以进入到 launch.json 文件的编辑界面,也可以手动在文件夹下新建一个 launch.json 文件进行配置。 在 launch.json 文件中,我们需要配置多个属性来完成调试功能的设置。比如,对于 Node.js 应用程序,我们需要在配置文件中设置 type 属性为 “node”,在 attach 或 launch 属性中设置程序的入口文件路径。同时,为了避免服务的启动过程耗费时间,我们可以使用 preLaunchTask 命令来完成服务的启动。比如,在配置文件中添加 preLaunchTask 属性,它指向一个名为 “start_server” 的任务,这样就可以自动启动服务。如果代码中有断点设置,则在调试过程中程序会自动停止在断点处。还可以设置其它参数,如 host、port 等,以便调试多个应用程序。 除了 Node.js 应用程序之外,VSCode 还支持多种其它语言的调试,如 C++、Java、Python 等。对于不同的语言,需要根据其不同的特点进行配置。一些常用的配置参数包括:program、args、cwd、env、stopOnEntry、sourceMapPathOverrides、request、console。 总之,VSCode调试功能可以帮助程序员提高代码编写效率和调试效率,只需要根据项目的需要进行相应的配置即可。 ### 回答3: VSCodelaunch.json文件是一种非常实用的配置文件,允许您自定义调试器行为以适应您的代码和特定的调试方案。在使用VSCode进行调试时,修改这个文件将帮助你配置调试的方式和参数。 首先,您需要在您的项目中打开VSCode编辑器,选择"Debug"面板,然后点击顶部的"配置"按钮。这将创建一个launch.json文件,并打开它以进行编辑。 接下来,您需要定义启动调试的程序和调试的类型。例如,如果您想调试一个Node.js应用程序,您可以使用以下配置: ``` { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceRoot}/app.js", "runtimeExecutable": "node" } ] } ``` 在上面的示例中,我们指定了调试类型为Node.js,请求为"launch",并指定了运行程序的路径和Node.js运行时的可执行路径。 您还可以定义其他参数,如断点和环境变量。例如,以下配置将在第4行设置一个断点,并将自定义环境变量设置为wibble: ``` { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceRoot}/app.js", "breakpointCondition": "line==4", "env": { "MY_VAR": "wibble" } } ] } ``` 需要注意的是,如果您需要使用多个配置来启动不同的应用程序或不同的调试方案,您可以通过在配置数组中添加更多对象来添加更多配置。 通常情况下,通过VSCodeLaunch.json文件的配置,可以在Debug模式下,组合使用多种技术调试一些复杂的问题。例如我们可以结合Node.js的Socket.io模块与web应用之间通信时出现的问题进行调试。 总结起来,Launch.json文件是VSCode非常实用的配置文件之一,能够帮助您调整调试器的行为以进行调试。 通过合理地配置launch.json文件,您将能够更轻松地进行调试,以解决应用程序中的各种问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值