Skip to main content Link Menu Expand (external link) Document Search Copy Copied

在 VSCode 里连接 Python Jupyter Notebook

Last update: April 27, 2024

Created: April 20, 2023, Yuejia Zhang

在登录节点使用还是在计算节点使用 Notebook?

登录节点只适合极小规模的测试, 如果你预期你的程序需要大量计算资源 (参照SLURM教程), 请申请计算节点的计算资源.

首先连接上登录节点, 无论最后的计算是在登录节点还是计算节点执行的, 你使用的VS Code发出的计算指令都是在登录节点上完成的.

然后, 确保 VS Code 安装了 PythonJupyter 等相关插件. 这两个插件是必须的.

Step 1: 创建一个 notebook 文件

step1

打开你的工作文件夹, 如图所示, 我们创建了一个名为 test.ipynb 的 notebook 文件. 请注意文件的后缀名必须是 ipynb.

Step 2: 确认你想要的 Python 版本已安装 Jupyter Notebook

可以选择服务器上已有的 Python 版本 或 anaconda 版本.

module load Python/3.8.12
pip install jupyter notebook

并输入

which python3

来获取当前使用的 Python 程序的位置.

Step 3.1: (登录节点使用的情况) 在 notebook 中选择使用的 Python 环境

VS Code 本身并不知道 Python 在服务器的哪里! 你需要手动告诉它你想使用的 Python 在哪里.

打开 VS Code 的命令面板 (Ctrl + Shift + P, F1) 输入 Python: Select Interpreter 后选择 Enter interpreter path, 选择 Find 并输入 Python 程序所在的位置.

服务器的 Python 安装在 /opt/Python/<version>/bin/python. 选中后你就告知了 VS Code 服务器里 Python 的所在位置. 服务器的 anaconda 安装在 /opt/anaconda3/bin/python. 选中后你就告知了 VS Code 服务器里 anaconda’s Python 的所在位置.

打开你的 notebook 文件, 在右上角会出现 Select Kernel 的选项.

选择这个选项之后, 可以从 Python EnvironmentsExisting Jupyter Server 中选择. 在登录节点上运行只需要选择 Python Environments 并根据你刚刚添加的 Python 位置使用即可.

你可能会发现, 服务器系统自带了 Python: /usr/bin/python3, /bin/python3.

它们是系统自带的, 不受我们的版本管理. 尽量不要使用它们.

选择后你会看到你选择的 Python 版本号出现在界面中, 你已经可以在登录节点使用 Jupyter Notebook 进行简单的测试了.

Step 3.2: (计算节点使用的情况) 申请计算节点资源并登陆计算节点

使用 salloc 申请计算节点资源. 如果你需要用 GPU 卡或者对 CPU 数量有要求, 请参见 如何利用SLURM在集群上运行程序.

命令行会提示你为你分配的主机名 (如: bigMem1).

例如, 在终端运行以下命令:

aduser@loginNode:~$ salloc -w bigMem1 -c 4 --gres=gpu:1 -t 0:15:00
salloc: Granted job allocation 1884
salloc: Nodes bigMem1 are ready for job
salloc: Usage: ssh bigMem1 -p 10888
aduser@loginNode:~$ ssh -L 127.0.0.1:55555:127.0.0.1:55555 bigMem1
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-97-generic x86_64)
...
aduser@bigMem1:~$

其中, 55555 允许且应该换成一个任意的 50000 到 60000 之间的数字, 这个端口就会被你占用, 其他人就无法使用(直到你退出).

如果报错提示端口占用(bind [127.0.0.1]:55555: Address already in use), 就更换一个数字.

在例子中, bigMem1 是你被分配的主机名. 运行完这行命令后, 你就登上了计算节点.

这个窗口不能关闭, 因为你使用这个窗口打开了一个 SSH 隧道, 你需要这个窗口开着来维持这个隧道 (供你的 Jupyter 通信).

Step 4: (计算节点使用的情况) 在计算节点上启动 Jupyter Notebook

加载你选择的 Python 版本.

module load Python/3.8.12

运行以下命令 (端口是刚才你选择的 50000 到 60000 之间的数字):

jupyter notebook --port=55555 --ip=127.0.0.1

step4

出现红框内的提示表示成功启动.

Step 5: (计算节点使用的情况) 在 VSCode 里打开 Notebook 并选择所使用的 Python

step5-1

点击红框内的 Select Kernel, 选择 Existing Jupyter Server.

step5-2

选择 Enter the URL of the running Jupyter Server.

step5-3

把终端中的 URL 复制粘贴到对话框内.

step5-4

选择 Python 3.

step5-5

最后, 红框内出现 Python 3 (ipykernel) 即成功. 可以在 Notebook 的 code block 内运行以下代码:

!hostname
%pip --version

如果返回了计算节点的主机名, 则连接成功. 你还可以确认 pip 版本是否正确.


Copyright © 2020-2024 Advancedsolver Admin Team.