VSCode毗连服务器跑深度学习代码相关题目(研0大模型学习第八天)
VS Code 远程毗连服务器:从环境配置到代码运行与常见题目解决实录在使用 VS Code 通过 Remote-SSH 毗连到远程服务器进行 Python 开发,特别是涉及 Anaconda 环境和深度学习项目时,可能会遇到各种各样的题目。本文记录并解答了我在配置和运行代码过程中遇到的一系列具体题目,希望能为你提供参考。
我的基础环境如下:
[*]本地: Visual Studio Code
[*]远程服务器: Linux 系统,通过 VS Code Remote-SSH 毗连
[*]服务器软件: 安装了 Anaconda
[*]Anaconda 环境: 创建了名为 pytorch_env 的虚拟环境,用于深度学习。
[*]VS Code 插件: 在远程服务器上安装了 VS Code 的 Python 插件和 Jupyter 相关插件。
题目一:我的深度学习代码是写在 .py 文件里的,应该用 Python 直接运行还是在 Jupyter 上运行?
解答:
对于深度学习代码的开发和实行阶段,猛烈保举在 Jupyter Notebook (.ipynb) 或 VS Code 的交互式窗口 (.py 文件配合) 上运行。
[*]Jupyter Notebook (.ipynb): 提供完备的单元格执行、内联输出、图表显示和文本阐明功能,非常适合探索性编程、数据可视化和记录实行过程。
[*]VS Code 交互式窗口 (.py 配合): 允许你在 .py 文件中分块运行代码,并在独立的窗口中看到输出和图表,提供了类似 Notebook 的交互性,同时保持代码在 .py 文件中。
[*]纯 Python 脚本 (.py 在终端运行): 更适合于代码开发完成后的最终练习、批量处理、主动化或集成到其他应用中。
选择哪种方式取决于你的当前使命阶段。开发调试优先考虑交互式方式。
题目二:假如想在 Jupyter 上运行,远程服务器上有 Jupyter 吗?应该在哪个环境下运行?
解答:
[*]服务器上是否有 Jupyter: 假如你在服务器上安装了 Anaconda,通常 base 环境会自带 Jupyter Notebook 和 Jupyter Lab。但是,你的深度学习代码依靠于 pytorch_env 环境中的库(如 PyTorch),所以你必须在 pytorch_env 环境中运行代码。
[*]在 pytorch_env 中使用 Jupyter: 纵然 base 环境有 Jupyter,pytorch_env 作为一个独立的环境,默认是没有的。你需要在这个环境中安装 ipykernel 库,才气让 Jupyter(或 VS Code 的 Jupyter 功能)将 pytorch_env 辨认为一个可用的内核。
在 pytorch_env 环境中设置 Jupyter 内核的步调:
[*]打开 VS Code 集成终端,毗连到远程服务器。
[*]激活环境:conda activate pytorch_env
[*]安装 ipykernel:pip install ipykernel
[*]注册内核(可选但保举):python -m ipykernel install --user --name=pytorch_env --display-name="PyTorch Env (pytorch_env)"
完成这些步调后,pytorch_env 就具备了作为 Jupyter 内核的能力。
题目三:在 VS Code 中运行 .ipynb 文件时,如何选择精确的 pytorch_env 内核?
解答:
在你毗连到远程服务器的 VS Code 中打开 .ipynb 文件后:
[*]VS Code 会在 Notebook 界面的右上角或底部状态栏显示当前选择的 Python 环境/内核。假如未选择,会提示你选择。
[*]点击显示内核名称的位置(可能显示为默认环境或“选择内核”)。在我的环境中,它可能显示为 或 。
[*]点击后会弹出内核选择菜单,看到类似这样的选项:
[*]务必选择 “Python 环境…”。
[*]在弹出的列表中,找到并选择你的远程服务器上的 pytorch_env 环境。
重要: 不要选择“现有 Jupyter 服务器…”,那个选项是毗连一个已经独立运行起来的 Jupyter Server,而不是利用 VS Code 主动管理的环境内核。选择“Python 环境…”让 VS Code 利用你的 pytorch_env 在后台启动内核。
题目四:我的 .py 文件如何运行?
解答:
对于 .py 文件,同样需要确保使用 pytorch_env 环境中的 Python 表明器来执行。
[*]在 VS Code 中设置项目的 Python 表明器: 在 VS Code 毗连到远程服务器的状态下,打开你的 .py 文件。查看 VS Code 左下角的状态栏,它会显示当前选择的 Python 表明器。点击它,选择你的远程服务器上的 pytorch_env 表明器(通常显示为 Python X.x.x ('pytorch_env': conda))。
[*]运行 .py 文件: 设置好表明器后,有几种运行方式:
[*]点击 .py 文件编辑器右上角的绿色“运行”按钮 ▶。
[*]右键点击代码编辑区域,选择“在终端中运行 Python 文件”。
[*]打开 VS Code 集成终端(通常会主动激活选定的环境),手动输入 python your_script_name.py。
题目五:运行代码时报错 ModuleNotFoundError: No module named 'pandas'?
解答:
这个错误表明你的代码依靠的 pandas 库在当前执行代码的 Python 环境中没有安装。
原因: Anaconda base 环境默认包含许多库,但你新建的 pytorch_env 环境是相对干净的,不会主动包含全部库,除非你在创建或后续安装时指定了。纵然 base 有 pandas,pytorch_env 也可能没有。
解决: 在你的 pytorch_env 环境中安装 pandas。
[*]打开 VS Code 集成终端,毗连到远程服务器。
[*]激活环境:conda activate pytorch_env
[*]安装 pandas:conda install pandas 或 pip install pandas
[*]安装完成后,确保在 pytorch_env 中再次运行代码。
题目六:安装 pandas 后,运行代码又报错 AssertionError: dataset does not exist?
解答:
这个错误表示你的代码尝试打开一个文件,但根据提供的路径找不到该文件。错误发生在加载数据集的代码处,路径是 ./pytorch-nn/iris.txt。
原因: ./pytorch-nn/iris.txt 是一个相对路径,它的实际位置取决于程序运行时的“当前工作目录”。交互式窗口和终端运行时的默认工作目录可能不同,导致相对路径解析效果不同。
解决: 修改代码中使用文件路径的地方。
保举使用文件的绝对路径: 找到 iris.txt 在服务器上的完备路径(比方 /home/user/project/data/iris.txt),然后在代码中直接使用这个完备路径。这样无论从哪里运行脚本都能找到文件。
或者,假如继承使用相对路径,需要确保运行时的工作目录是精确的,并且代码中的相对路径是相对于这个工作目录的。但绝对路径更不容易堕落。
题目七:修复文件路径后,运行代码又进入 TypeError: unsupported format string passed to Tensor.__format__ 和 AttributeError: 'float' object has no attribute 'item' 的循环报错?
解答:
这两个错误都与你在打印练习过程中的 Tensor 变量有关(比方 loss, accuracy)。
[*]TypeError: unsupported format string passed to Tensor.__format__: 这是由于你试图用 :.3f 这样的尺度字符串格式符直接格式化一个 PyTorch 的 Tensor 对象。Tensor 不支持这种直接格式化。
[*]AttributeError: 'float' object has no attribute 'item': 这是由于你尝试在一个尺度的 Python float 浮点数上调用 .item() 方法。尺度的 float 没有 .item() 方法。
这两个错误来回出现,阐明你用于打印的变量(如 loss, train_acc, val_acc)偶然是 Tensor,偶然已经被转换为 float。
解决: 在打印这些变量时,使用 float() 函数来获取其数值。float() 既可以处理包含单个数值的 Tensor,也可以处理尺度的 float。
将你的打印语句(通常在练习循环中)修改为类似这样:
print("train epoch{}/{}/ loss::{:.3f} train_acc::{:.3f} val_acc::{:.3f}".format(epoch + 1, epochs, float(loss), float(train_acc), float(val_acc)))
(确保对全部 Tensor 或可能是 Tensor 的变量使用 float())
题目八:为什么在交互式窗口运行成功了,但在终端上运行 .py 文件又出现之前的 AssertionError: dataset does not exist?
解答:
这个题目再次指向了文件路径和运行时的当前工作目录的区别。虽然你在交互式窗口成功运行,但当你切换到终端手动运行 .py 文件时,终端的默认工作目录很可能与交互式窗口的不同。
[*]交互式窗口/ .ipynb: 工作目录通常默认是文件所在的目录。
[*]终端运行: 工作目录是你执行 python 下令时所在的目录。
假如你的代码使用了相对路径(比方 ./data/file.txt),这个相对路径会根据当前工作目录来解析。不同的工作目录会导致同一个相对路径解析到不同的实际位置,假如文件不在那里就会报错。
解决: 回到题目六的解答,最稳妥的方式是在代码中使用数据文件的绝对路径,这样就不会受到运行目录的影响。或者,确保你在终端运行脚本时,先 cd 到精确的目录(通常是脚本所在的目录或者数据文件所在的目录),再执行 python your_script.py。
题目九:我终端没激活虚拟环境,终端提示 Python 版本为 2.7,那我直接在终端运行 Python 文件,调用的是哪个表明器?
解答:
在终端未激活任何 Conda 环境时,终端提示符显示 Python 2.7.17 表明:在你当前的 shell PATH 环境变量下,当你输入 python 下令时,shell 第一个找到的可执行文件是属于 Python 2.7.17 版本的。
在这种状态下,假如你直接输入 python your_script.py 来运行文件,调用的就是那个 Python 2.7.17 表明器。 这会导致依靠 Python 3 和特定库的代码堕落。
要使用 pytorch_env 环境中的表明器,你需要:
[*]激活环境: conda activate pytorch_env
然后 python your_script.py。
[*]直接指定表明器路径: /newdata/home/liangweitang/anaconda3/envs/pytorch_env/bin/python your_script_name.py (如题目十所述)。
题目十:为什么我没激活虚拟环境,但终端显示主动执行了 /full/path/to/pytorch_env/bin/python ... 这样的下令,并且成功运行了?
解答:
这条完备的下令 (/newdata/home/liangweitang/anaconda3/envs/pytorch_env/bin/python /newdata/home/liangweitang/python-test/pytorch-nn/nn.py) 不是你自己手动输入的,而是当你从 VS Code 界面(比方点击 .py 文件右上角的运行按钮或右键菜单中的“在终端中运行 Python 文件”)运行脚本时,VS Code 主动为你构建并在终端中执行的下令。
原因: 这是 VS Code Python 扩展的一个便捷功能。由于你在 VS Code 中已经将项目的 Python 表明器设置为了 pytorch_env,所以当你通过 VS Code 的运行功能执行脚本时,VS Code 会查找这个设置,获取到 pytorch_env 表明器的完备路径,然后构建出包含表明器完备路径的下令并发送到终端执行。
所以,纵然终端自己没有手动激活环境,VS Code 也确保了脚本是使用了你指定的 pytorch_env 表明器来运行的,从而绕过了终端当前的 PATH 设置。
总结
通过 VS Code 远程毗连进行 Python 开发,核心在于精确管理和使用不同的 Python 环境(尤其是 Conda 环境)。明确终端激活、VS Code 表明器选择、以及不同运行模式(终端 .py、交互式 .py、.ipynb)的工作原理和它们对文件路径、库查找的影响,是解决大多数环境和运行题目的关键。掌握在精确环境中安装库(如 ipykernel, pandas)以及处理好文件路径题目,就能更顺畅地进行远程开发。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]