在 AIStudio 开发机上安装和使用 Jupyter Lab
本指南将带你完成在 AIStudio 开发机上安装 Jupyter Lab,并像使用本地环境一样使用开发机上的 JupyterLab,提高在数据科学和机器学习项目中的生产力。
什么是 Jupyter Lab?
Jupyter Lab 是一个基于网络的交互式开发环境,支持笔记本、代码和数据可视化,特别适合数据科学和机器学习工作流程,为各种编程语言提供灵活且强大的界面。
实验环境
- 开发机
- Ubuntu 镜像:
cr.infini-ai.com/infini-ai-dev/ubuntu:20.04-20231109
。你也可选用其他镜像。 - 可 SSH 远程登录开发机,如需帮助,可参考教程添加 SSH 公钥指南
手动安装 Jupyter Lab
由于 AIStudio 平台未集成 Jupyter Lab,也未提供包含 Jupyter Lab 的预置镜像,我们可以手动安装 Jupyter Lab。
以下实验步骤以 Ubuntu 基础镜像为例。
TIP
如果想要直接获取预装 Jupyter Lab 的镜像,也可以使用 构建自定义镜像 · 基于现有镜像中的示例创建一个自定义镜像。镜像构建完成后,使用该自定义镜像创建开发机,其中已安装 Jupyter Lab。
pip
最简单的方式,直接用 pip 安装 jupyterlab:
python3 -m install jupyterlab
conda
建议先阅读 在开发机中使用 Conda。以下步骤推荐在开发机 Web Terminal 中完成。
初始化镜像自带的 Miniconda。
bashconda init
创建虚拟环境
bash# 检查已安装的 python 版本 python --version # 创建虚拟环境,指定 python 版本 conda create --name jupyterlab python=3.12.4
激活虚拟环境
bashconda activate jupyterlab
安装 Jupyter Lab。根据 Jupyter 官方建议,以下命令通过
-c
指定使用 conda-forge channel。bashconda config --add channels conda-forge conda install -c conda-forge jupyterlab
启动 Jupyter Lab
TIP
如果你了解如何在 VS Code 中 SSH 远程连接开发机,建议使用 VS Code 集成终端启动 Jupyter Lab。Jupyter Lab 会自动完成端口转发配置。通过 Shift+Command+P(Win:Shift+Ctrl+P)打开命令面板,输入 forward a port
,可查看当前端口转发配置。
SSH 连接到开发机,或从云平台访问开发机 Web Terminal 终端界面,启动 Jupyter Lab。
# 直接启动 Jupyter Lab
jupyter lab --no-browser --port=9999 --allow-root
# 你也可以直接在 tmux 会话中启动 Jupyter Lab(实验镜像中已含 tmux)
tmux new-session -s jupyterlab9999 'jupyter lab --no-browser --port=9999 --allow-root'
参数说明:
--no-browser
: 表示无需自动打开浏览器窗口。--port=9999
: 指定端口。不指定端口时,Jupyter Lab 默认使用8888
,这里指定使用非默认端口9999
。
TIP
你可以在开发机中启动多个 Jupyter Lab 实例,并指定不同的端口。
获取 Jupyter Lab 验证 Token
启动 Jupyter Lab 后,开发机会输出类似以下的信息。复制其中的 Token,后续远程访问 Jupyter Lab 时需要使用该 Token 验证身份。
[C 2024-08-01 14:04:27.028 ServerApp]
To access the server, open this file in a browser:
file:///home/janedoe/.local/share/jupyter/runtime/jpserver-12155-open.html
Or copy and paste one of these URLs:
http://localhost:9999/lab?token=0b303eb33e5dec93448d7f64b8be496777323dfc09c52f3a
http://127.0.0.1:9999/lab?token=0b303eb33e5dec93448d7f64b8be496777323dfc09c52f3a
TIP
你可以用 jupyter server
列出所有 Jupyter Lab 实例,查看端口及 Token。
在智算云平台直接访问 Jupyter 界面
AIStudio 平台为了方便用户访问应用 UI 界面,提供了 Web 应用预览功能,可转发开发机实例内的 Web UI 服务。
创建或改配 AIStudio 开发机,填写预期使用的 Web 应用预览端口号(例如
9999
)。开发机启动后生效。启动 JupyterLab 服务,并绑定到所有网络接口(0.0.0.0)。
bash# 假设当前开发机 Web 应用预览端口号已被配置为 9999,则需要使用 --port 指定同样的端口号 jupyter lab --no-browser --ip 0.0.0.0 --port=9999 --allow-root
IMPORTANT
在启动 Web 服务时,请绑定到所有网络接口(
0.0.0.0
),否则无法预览。
NOTE
访问 Web 应用预览界面要求登录 AIStudio 账号。
远程访问
智算云平台仅开放 SSH 访问。如果需要远程访问 Jupyter Lab,需在本地机器上配置 SSH 端口转发。
方案概述
我们将在远程开发机上安装 Jupyter Lab,并通过 SSH 端口转发在本地机器上访问开发机上的 Jupyter Lab 实例。以下是该解决方案的架构图:
Jupyter Lab 有本地客户端吗?
“Jupyter Server” is Jupyter Notebook without a front end bundled in its installation. That is, it does not include a “client” web application and is merely a web server. Jupyter Lab, and its various extensions, utilize the REST API exposed by Jupyter Server. “Jupyter Server” is more than kernel management, in that it also provides content services for maintaining notebook files within a directory structure and exposes a Session manager through which most interactions occur.
Ref: https://discourse.jupyter.org/t/single-user-setups-for-local-client-remote-kernel/13882/6
如果使用 VS Code 的 Jupyter 插件,可以集成远程 Jupyter server 为 Remote Kernel。
本地 SSH 端口转发配置
智算云平台仅开放 SSH 访问。如果需要远程访问 Jupyter Lab,需在本地机器上配置 SSH 端口转发。
IMPORTANT
推荐通过 VS Code 连接到开发机,并在 VS Code 的集成终端启动 Jupyter Lab,VS Code 将自动在本地机器上配置 SSH 端口转发,无需手动配置。
获取开发机 SSH 连接信息
请登录智算云平台,查看开发机的 SSH 连接命令。
SSH 连接命令示例:-p 33260 root@8.140.242.203
其中包含当前开发机的 SSH 端口号、用户名、SSH 主机 IP,下一步中将会使用。root
为默认 SSH 登录用户名(部分旧版实例展示为非 root 普通用户名,请重启)。
配置 SSH 端口转发
WARNING
继续之前,请确保本地计算机可 SSH 远程访问开发机。如需帮助,请参考 添加 SSH 公钥指南 进行操作和验证。
手动配置 SSH 端口转发
在本地机器上运行以下命令,设置 SSH 端口转发(隧道)以安全连接到远程 Jupyter 服务器。
ssh -N -f -L 8888:localhost:9999 -p 43500 root@8.140.242.203
上面命令中,有三个 SSH 命令选项。
-N
:不发送任何命令,只用来建立连接。没有这个参数,会在 SSH 服务器打开一个 Shell。-f
:将 SSH 连接放到后台。没有这个参数,暂时不用 SSH 连接时,终端会失去响应。-L 8888:localhost:9999
:指定端口转发。8888
为本地端口,可按需改为其他端口号。目标是远程机器上的 localhost 上的端口9999
。Jupyter Lab 服务运行在 9999 端口)。root@8.140.242.203
: 替换为开发机的 SSH 连接信息。请从智算云平台获取。root
为默认 SSH 登录用户名(部分旧版实例展示为非 root 普通用户名,请重启)。
远程使用 Jupyter Lab
你可以通过两种方式使用远程的 Jupyter Lab。
远程访问 Jupyter Lab 界面
采用「远程访问 Jupyter Lab 界面」方式,无需提前登录 AIStudio 账号,即可使用 Jupyter Lab 界面。
在本地机器上打开网络浏览器,访问 http://localhost:8888
。首次打开 Jupyter Notebook 界面后,输入之前复制的 Token。使用这种方式将直接登录远程主机,因此无法使用本地计算机上的 Notebook 文件。
连接成功后,Jupyter Lab 界面如下。
TIP
在开发机中运行 Jupyter Lab 服务时,Jupyter Lab 默认使用当前路径为 Notebook 工作目录,即 Jupyter Lab 界面左侧的根目录。你也可以在运行 jupyter lab
前设置环境变量 export JUPYTER_PATH="/path/to/your/desired/directory"
指定一个 Notebook 工作目录。
集成 Remote Kernel
采用「本地集成 Remote Kernel」方式,支持将 Notebook 文件保存在本地计算机上,并通过 Remote Kernel 使用远程开发机上的 GPU。
配置完 SSH 端口转发后,在 VS Code 界面中,点击右上角的选择内核按钮,选择现有 Jupyter 服务器。
在弹出的对话框中,输入本地访问 Jupyter 服务器的地址。
在 SSH 端口转发配置中,如果你配置本地访问 Jupyter Server 的端口号为 8888
, Jupyter 服务器的地址即为 http://localhost:8888
。另外,你还需要从开发机上复制自己的 Token,追加在地址后。完整输入示例:
http://localhost:8888/?token=261a745f042ffa450cd4b9718098ba4a0e7b67251c844c91
点击确认,VS Code 将自动配置 Remote Kernel。下图展示了配置成功界面,可以在 MacOS 本地的 Notebook 文件中使用 Remote Kernel 运行 Cell。通过 nvidia-smi
命令,可以看到可以直接使用远程开发机上的 Nvidia GPU。
结论
通过以上步骤,你已经成功在远程开发机上安装了 Jupyter Lab,并通过三种方式使用 Jupyter Lab。
- 在智算云平台通过跳转方式,直接打开 Jupyter Lab 界面。
- 通过 SSH 端口转发在本地安全地访问 Jupyter Lab 界面。
- 通过 SSH 端口转发集成远程 Jupyter 内核,在本地的 Notebook 中直接使用 AIStudio 开发机上的 GPU。