VSCode远程Python调试环境搭建指南:步骤详解,日期为05-16周四
05-16 周四 vscode 搭建远程调试环境
时间 | 版本 | 修改人 | 描述 |
---|---|---|---|
2024年5月16日14:54:41 | V0.1 | 宋全恒 | 新建文档 |
2024年5月16日17:21:36 | V1.0 | 宋全恒 | 完成文档的输出 |
2024年5月22日15:55:15 | V1.1 | 宋全恒 | 添加观察输出的内容 |
简介
操作步骤
参考了vscode上python进行debug大全 – 知乎。
安装python和remote-ssh扩展
如果提示没有python解释器,哪怕之前已经安装了,也重新安装一下即可。
注意,如果之前安装过python扩展,但是无法产生断点和调试,则可以通过重新卸载python扩展,重新安装python扩展来解决。
生成文件配置入口程序和调试参数
{
"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解释器
安装了扩展之后,并且可以点击产生断点,此时我们可以尝试点击运行,进行调试。
选择在工作区级别选择
选择自己索要的python解释器环境
选择之后,正常就可以开始调试。
在实际执行时,可能需要更换解释器,可以通过如下方式进行。
远程调试
记录VSCode调试python一个极傻的坑:显示launch.json中name ‘true‘ is not defined_vscode nameerror: name ‘true’ is not defined-CSDN博客同样遇到了这个傻问题。
然后选择F11,即单步调试,即可进入相应的代码行。
其实在断点开始的时候,这些函数就已经可以来回跳转了。或许这也是代码调试的基本要求。
观察输出
创建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解释器
添加日志打印和断点
注,此时已经可以跳转到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环境的过程。希望能够提供帮助
作者:思影影思