【深度学习项目实战·04】VS Code远程开发:在本地编辑,在服务器运行与调试
发布时间:2026/10/28 1:54:39 锦皓数字建站

文章目录01 本篇要解决什么问题02 背景界面在本地哪些东西在远程03 实操连接、选环境、调试与查看服务1先确认命令行SSH已经能用2给服务器配置一个SSH别名3连接远程窗口打开项目文件夹4在远程安装Python扩展并选择远程解释器5用固定启动配置做断点调试6通过端口转发查看远程服务7正式长训练与交互调试分开管理04 一个具体例子解释“终端能跑F5却找不到包”05 常见问题与自测06 本篇回顾与下一步01 本篇要解决什么问题服务器环境已经装好但开发时还在本地改文件、手动上传、远程执行之间来回切换很容易出现“改的不是运行的那份代码”。Remote-SSH可以让本地VS Code直接打开远程项目并在服务器上运行终端、解释器和调试器。本篇用前面的小训练完成一次远程编辑与断点调试。本篇关键词Remote-SSH、远程窗口、解释器、debugpy、工作目录、端口转发。完成标志知道文件、Python、训练进程分别在哪里能在远程代码中停住断点并检查张量。一句话概括远程开发把界面放在本地把代码执行与项目环境放在服务器连接后仍需选对远程解释器。02 背景界面在本地哪些东西在远程Remote-SSH连接后VS Code会在远程启动相应组件打开远程文件。Python相关扩展可在远程扩展宿主运行实际使用远程Python环境。对象所在位置编辑器界面和键盘输入本地电脑打开的项目文件远程服务器远程集成终端、Python与训练远程服务器远程Python依赖远程选中的环境转发服务的浏览器访问入口本地端口连接到远程服务本地安装了某个Python包不会自动让远程解释器拥有它。连接关系与组件位置可核对Remote-SSH官方说明。03 实操连接、选环境、调试与查看服务1先确认命令行SSH已经能用使用第02篇的实际账号与地址完成SSH登录。若命令行都无法连接先处理网络、端口和认证不要把所有错误归因于VS Code扩展。在本地VS Code安装Microsoft的Remote - SSH扩展。远程Linux还需要满足当前VS Code Server的系统库要求按Linux前置条件核对旧发行版不能只因为SSH可登录就认定远程组件一定兼容。2给服务器配置一个SSH别名打开本地用户的SSH配置文件添加以下内容。Windows通常位于用户目录下的.ssh/config也可以通过Remote-SSH的配置命令选择Host dl-server HostName 203.0.113.10 User your_name Port 22 ServerAliveInterval 30 ServerAliveCountMax 3将文档示例地址、用户名和端口换成实际值。Host是本地别名HostName才是真实目标地址。若已有密钥认证可增加指向本地专用私钥的IdentityFile不要把私钥复制到项目或服务器作为配置步骤。验证别名ssh dl-server保活参数可以帮助维持连接或及时发现断连但不保证网络永不断开也不承担训练状态恢复。3连接远程窗口打开项目文件夹执行Remote-SSH: Connect to Host...选择dl-server。连接成功后通过窗口中的远程连接标识确认目标再打开服务器上的~/dl-course-lab实际目录。新建集成终端执行hostnamepwd应当得到远程主机名与远程项目路径。这里打开的不是本地同名文件夹后续编辑保存会作用于远程文件。4在远程安装Python扩展并选择远程解释器按扩展界面的提示将Python与Python Debugger扩展安装到远程环境。然后执行Python: Select Interpreter选择服务器dl-course对应的Python。远程终端可能还需要加载已有Condasource$HOME/miniconda3/etc/profile.d/conda.shconda activate dl-course python-cimport sys; print(sys.executable)上述Conda位置按第02篇个人安装示例给出使用平台Conda时替换为平台的加载方式。终端激活与编辑器选解释器需要分别确认。先运行python examples/smoke_train.py--devicecpu--outputartifacts/remote_cpu有已分配GPU、并完成第03篇验证后再切换到CUDA。若平台要求计算节点按其远程开发或任务调试流程进入正确节点不能仅因为远程窗口已连接就直接使用登录节点训练。5用固定启动配置做断点调试在远程项目创建.vscode/launch.json配套包也提供了同样的模板{version:0.2.0,configurations:[{name:DL course: CPU smoke,type:debugpy,request:launch,program:${workspaceFolder}/examples/smoke_train.py,args:[--device,cpu,--output,${workspaceFolder}/artifacts/debug_smoke],cwd:${workspaceFolder},console:integratedTerminal,justMyCode:true}]}这个配置使用选中的解释器固定项目根目录作为cwd并把输出写到单独位置。type使用当前Python调试器对应的debugpy具体字段可参考官方调试说明。打开smoke_train.py在计算loss的位置设置断点再从“运行和调试”选择该配置。停住后检查x.shape x.devicenext(model.parameters()).device loss.item()刚进入循环、尚未计算loss时它可能不存在因此要把断点放在合适行。断点调试会改变执行节奏不适合拿来直接衡量正常训练速度。6通过端口转发查看远程服务以可选TensorBoard为例先在远程环境安装并启动python-mpipinstalltensorboard python-mtensorboard.main--logdirartifacts--host127.0.0.1--port6006再用VS Code的端口面板转发6006访问面板显示的本地地址。也可以在本地另开终端ssh -L 16006:127.0.0.1:6006 dl-server保持该连接从本地浏览器访问http://127.0.0.1:16006。远程6006与本地16006承担不同角色。本部分小训练保存JSON而非TensorBoard事件所以面板可能没有曲线后续实验记录章节会加入事件写入。端口转发负责连接服务不会自动生成训练日志。7正式长训练与交互调试分开管理断点调试用于定位问题。长时间训练应按服务器规则使用调度作业或适当的会话管理并保留日志、配置和检查点。关闭VS Code窗口不应当作为训练状态管理办法也不能假定调试进程一定会继续运行。第02篇的任务运行约定仍然适用。图本地界面连接远程项目和解释器端口转发把本地访问映射到远程服务与Python环境选择是两条不同链路。04 一个具体例子解释“终端能跑F5却找不到包”先在远程终端打印python-cimport sys; print(sys.executable)再在F5调试过程中检查sys.executable。如果一个属于dl-course另一个属于系统Python问题就定位到解释器选择而非服务器一定没安装依赖。若解释器相同再检查cwd、参数、环境变量及模块搜索路径。采用上面的固定启动配置可减少“从不同目录启动同一文件”带来的差异。05 常见问题与自测问题1本地装好Python包远程为什么还提示缺失两个解释器环境相互独立需要在远程实际使用的环境安装依赖。问题2SSH成功Remote-SSH仍失败应该检查什么查看Remote-SSH输出日志继续区分远程组件系统要求、网络下载、磁盘与启动问题。问题3终端已经激活环境还要选择解释器吗需要确认。调试器和编辑器的解释器选择不应只从某个已有终端的提示符推断。问题4为什么断点旁边显示没有绑定可能启动了另一份文件、路径不匹配、代码尚未加载或调试目标不正确。先确认实际执行的程序与文件路径。问题5转发端口后没有曲线是连接失败吗不一定。先区分服务是否可访问再检查对应目录中是否真的写入了该工具能读取的日志。06 本篇回顾与下一步一次可靠远程调试需要对齐主机、文件、解释器、工作目录和启动参数。状态栏提供连接提示真正的运行证据来自程序和终端输出。中文常用英文远程扩展宿主Remote extension host解释器选择Interpreter selection启动配置Launch configuration断点调用栈Breakpoint / Call stack端口转发Port forwarding下一篇整理常见环境问题把报错按层定位并保存足够的复现信息。参考与延伸阅读VS Code Remote-SSH。远程Linux前置条件。Python解释器与环境。Python调试配置。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。