05-16 周四 vscode 搭建远程Python调试环境

05-16 周四 vscode 搭建远程调试环境
时间版本修改人描述
2024年5月16日14:54:41V0.1宋全恒新建文档
2024年5月16日17:21:36V1.0宋全恒完成文档的输出
2024年5月22日15:55:15V1.1宋全恒添加观察输出的内容

简介

操作步骤

 参考了vscode上python进行debug大全 - 知乎

安装python和remote-ssh扩展

如果提示没有python解释器,哪怕之前已经安装了,也重新安装一下即可。

image-20240516152616677

 注意,如果之前安装过python扩展,但是无法产生断点和调试,则可以通过重新卸载python扩展,重新安装python扩展来解决。

image-20240516152830096

生成文件配置入口程序和调试参数

{

    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "Python 调试程序: 当前文件",
            "type": "debugpy",
            "request": "launch",
            "program": "/home/yuzailiang/anaconda3/envs/vit2/bin/lmdeploy",
            "console": "integratedTerminal",
            "justMyCode": false,
            "args": ["list"]
        }
    ]
}

 较为重要的事修改program,这个是入口文件,justMyCode则是修该断点生效的代码

justMyCode, 当设置为 true 时,仅调试自己的代码。false时包括非用户代码(如库代码,导入的模块)由于我要调试lmdeploy的相关程序,因此,修改为false。

选择python解释器

 安装了扩展之后,并且可以点击产生断点,此时我们可以尝试点击运行,进行调试。

image-20240516153143246

 选择在工作区级别选择

image-20240516153304252

 选择自己索要的python解释器环境

image-20240516153355005

 选择之后,正常就可以开始调试。

 在实际执行时,可能需要更换解释器,可以通过如下方式进行。

image-20240522150347994

远程调试

记录VSCode调试python一个极傻的坑:显示launch.json中name ‘true‘ is not defined_vscode nameerror: name ‘true’ is not defined-CSDN博客同样遇到了这个傻问题。

image-20240516155227459

 然后选择F11,即单步调试,即可进入相应的代码行。

image-20240516155458506

 其实在断点开始的时候,这些函数就已经可以来回跳转了。或许这也是代码调试的基本要求。

观察输出

创建launch.json

{

    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "lmdeploy 列举模型列表",
            "type": "debugpy",
            "request": "launch",
            "program": "/home/yuzailiang/anaconda3/envs/quantization/bin/lmdeploy",
            "console": "integratedTerminal",
            "justMyCode": false,
            "args": ["list"]
        },
        {
            "name": "Python 调试程序: 动态量化程序",
            "type": "debugpy",
            "request": "launch",
            "program": "/home/yuzailiang/anaconda3/envs/quantization/bin/lmdeploy",
            "console": "integratedTerminal",
            "justMyCode": false,
            "args": ["lite", "smooth_quant", "internlm/internlm2-chat-7b", "--work-dir", " ./sqh-internlm-chat-7b-w8"]
        }
    ]
}

我们重点要调试的命令为lmdeploy lite smooth_quant

开始调试

注,有可能此处需要重新修改python解释器,参见 选择python解释器

image-20240522154244664

添加日志打印和断点

image-20240522154600747

注,此时已经可以跳转到run()并在run()中生成断点,方便观察代码执行过程和逻辑。我们可以更方便的家lmdeploy这个路径/home/yuzailiang/anaconda3/envs/quantization/lib/python3.8/site-packages/lmdeploy,添加到工作区,方便我们跟踪代码的执行和日志代码的添加。

 需要注意的是,在远程调试的时候,也是发出了命令,这个可以在终端中看出,也可以打印一些日志。这些日志能够方便我们观察程序的运行。

 下面是在调试时,实际输出的日志和代码,可以看到有环境的切换,主动切换成了环境quantization,并输出了命令

(quantization) yuzailiang@ubuntu:/mnt/self-define/sunning/lmdeploy$  cd /mnt/self-define/sunning/lmdeploy ; /usr/bin/env /home/yuzailiang/anaconda3/envs/quantization/bin/python /home/yuzailiang/.vscode-server/extensions/ms-python.debugpy-2024.0.0-linux-x64/bundled/libs/debugpy/adapter/../../debugpy/launcher 52045 -- /home/yuzailiang/anaconda3/envs/quantization/bin/lmdeploy list 
sys.argv: ['/home/yuzailiang/anaconda3/envs/quantization/bin/lmdeploy', 'list']
sys.argv: ['/home/yuzailiang/anaconda3/envs/quantization/bin/lmdeploy', 'list']
args: Namespace(command='list', run=<function CLI.list at 0x7fc10b2871f0>)
model_path: None
The older chat template name like "internlm2-7b", "qwen-7b" and so on are deprecated and will be removed in the future. The supported chat template names are:
baichuan2
chatglm
codellama
dbrx
deepseek
deepseek-coder
deepseek-vl
falcon
gemma
internlm
internlm-xcomposer2
internlm-xcomposer2-4khd
internlm2
internvl-internlm2
internvl-zh
internvl-zh-hermes2
llama
llama2
llama3
llava-chatml
mini-gemini-vicuna
mistral
mixtral
puyu
qwen
solar
ultracm
ultralm
vicuna
wizardlm
yi
yi-vl

总结

 这个笔记记录了使用vscode调试远端服务器配置的过程,好记性不如烂笔头,还是多记录一些内容吧,我发现,当你遇到一个问题的时候,很有可能,你会重新遇到的。通过不断记忆,我们能够很好的建立联系这样就能比较自信的解决同样的问题。还能节省许多的实践。

 vscode真的是很强大的工作,在之前的实践中,我们曾使用vscode实现了如下的功能:

 而vscode虽然是一个编辑器,但由于其良好的插件和环境,远程调试等功能,使得这个工具,真的是程序猿必选的工具了。

 最后,总结一下这个文章,本文主要是作者为了梳理lmdeploy在进行w8a8量化时的执行过程,而撰写的笔记,详细描述了使用vscode 搭建远程调试环境的,主要演示的事python环境的过程。希望能够提供帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值