GenStudio 推出 Infini 编码套餐(Coding Plan)GenStudio 推出 Infini 编码套餐(Coding Plan) ,接入多家顶尖厂商的主流编程模型了解更多
Skip to content
回到全部文章

在 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 基础镜像为例。

提示

如果不想在开发机中手动安装 Jupyter Lab,可以自行获取已预装 Jupyter Lab 的公共镜像,或者参考 构建自定义镜像 · 基于现有镜像中的示例,在 AIStudio 现有镜像的基础上添加 Jupyter Lab。镜像准备完成,使用您的自定义镜像创建开发机即可。

pip

最简单的方式,直接用 pip 安装 jupyterlab:

bash
python3 -m pip install jupyterlab

conda

如果需要在虚拟环境中使用 jupyterlab,建议先阅读 在开发机中使用 Conda。以下步骤推荐在开发机 Web Terminal 中完成。

  1. 初始化镜像自带的 Miniconda。

    bash
    conda init
  2. 创建虚拟环境

    bash
    # 检查已安装的 python 版本
    python --version
    # 创建虚拟环境,指定 python 版本
    conda create --name jupyterlab python=3.12.4
  3. 激活虚拟环境

    bash
    conda activate jupyterlab
  4. 安装 Jupyter Lab。根据 Jupyter 官方建议,以下命令通过 -c 指定使用 conda-forge channel

    bash
    conda config --add channels conda-forge
    conda install -c conda-forge jupyterlab

启动 Jupyter Lab

提示

如果你了解如何在 VS Code 中 SSH 远程连接开发机,建议使用 VS Code 集成终端启动 Jupyter Lab。Jupyter Lab 会自动完成端口转发配置。通过 Shift+Command+P(Win:Shift+Ctrl+P)打开命令面板,输入 forward a port,可查看当前端口转发配置。

SSH 连接到开发机,或从云平台访问开发机 Web Terminal 终端界面,启动 Jupyter Lab。

bash
# 直接在前台启动 Jupyter Lab
jupyter lab --no-browser --port=9999 --allow-root
# 关键:如果你希望断线/关闭 VS Code 后服务仍继续运行,需要在持久化会话中启动(例如 tmux)
tmux new-session -s jupyterlab9999 'jupyter lab --no-browser --port=9999 --allow-root'

参数说明:

  • --no-browser: 表示无需自动打开浏览器窗口。
  • --port=9999: 指定端口。不指定端口时,Jupyter Lab 默认使用 8888,这里指定使用非默认端口 9999

提示

你可以在开发机中启动多个 Jupyter Lab 实例,并指定不同的端口。

获取 Jupyter Lab 验证 Token

启动 Jupyter Lab 后,开发机会输出类似以下的信息。复制其中的 Token,后续远程访问 Jupyter Lab 时需要使用该 Token 验证身份。

bash
[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

提示

你可以用 jupyter server 列出所有 Jupyter Lab 实例,查看端口及 Token。

在智算云平台直接访问 Jupyter 界面

AIStudio 平台为了方便用户访问应用 UI 界面,提供了 Web 应用预览功能,可转发开发机实例内的 Web UI 服务。

  1. 创建或改配 AIStudio 开发机,填写预期使用的 Web 应用预览端口号(例如 9999)。开发机启动后生效。

  2. 启动 JupyterLab 服务,并绑定到所有网络接口(0.0.0.0)。

    bash
    # 假设当前开发机 Web 应用预览端口号已被配置为 9999,则需要使用 --port 指定同样的端口号
    jupyter lab --no-browser --ip 0.0.0.0 --port=9999 --allow-root

    重要

    在启动 Web 服务时,请绑定到所有网络接口(0.0.0.0),否则无法预览。

注意

访问 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 端口转发。

重要

推荐通过 VS Code 连接到开发机,并在 VS Code 的集成终端启动 Jupyter Lab,VS Code 将自动在本地机器上配置 SSH 端口转发,无需手动配置。

获取开发机 SSH 连接信息

请登录智算云平台,查看开发机的 SSH 连接命令。

alt text

SSH 连接命令示例:-p 33260 root@8.140.242.203

其中包含当前开发机的 SSH 端口号、用户名、SSH 主机 IP,下一步中将会使用。root 为默认 SSH 登录用户名(部分旧版实例展示为非 root 普通用户名,请重启)。

配置 SSH 端口转发

警告

继续之前,请确保本地计算机可 SSH 远程访问开发机。如需帮助,请参考 添加 SSH 公钥指南 进行操作和验证。

手动配置 SSH 端口转发

在本地机器上运行以下命令,设置 SSH 端口转发(隧道)以安全连接到远程 Jupyter 服务器。

bash
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 界面如下。

提示

在开发机中运行 Jupyter Lab 服务时,Jupyter Lab 默认使用当前路径为 Notebook 工作目录,即 Jupyter Lab 界面左侧的根目录。你也可以在运行 jupyter lab 前设置环境变量 export JUPYTER_PATH="/path/to/your/desired/directory" 指定一个 Notebook 工作目录。

集成 Remote Kernel(推荐长任务使用)

采用「本地集成 Remote Kernel」方式,你可以在本地 VS Code 中编写代码,而代码实际运行在远程开发机的 Jupyter Kernel 中。

为什么推荐这种方式? 相比直接使用 VS Code Remote SSH 启动的内核,连接到已有的 Jupyter Server(特别是运行在 tmux/nohup 中的 Server)有以下巨大优势:

  • 防断连:即使 VS Code 关闭或 SSH 断开,远程的 Jupyter Server 和训练进程依然在后台运行。
  • 可恢复:重新连接后,可以继续查看之前的运行状态和变量。

配置步骤

  1. 在远程启动 Jupyter Server:关键是让 Jupyter Server 运行在持久化会话中(例如 tmux),从而在 VS Code 关闭、SSH 断开或网络波动时仍能继续运行。

    bash
    # 在远程终端执行
    tmux new -s jupyter 'jupyter lab --no-browser --port=8888 --allow-root'
  2. 在 VS Code 中连接

    • 点击 VS Code 右上角的选择内核按钮(或运行命令 Jupyter: Specify Jupyter Server for Connections)。
    • 选择现有 Jupyter 服务器 (Existing Jupyter Server)。
    • 输入 Jupyter Server 的 URL(包含 Token)。如果使用了 VS Code Remote SSH 连接开发机,通常直接输入 http://localhost:8888/?token=... 即可(VS Code 会自动处理转发)。

  3. 验证连接: 点击确认后,VS Code 将连接到远程内核。你可以在 Notebook 中运行 !nvidia-smi 验证是否成功调用了远程 GPU。

一键启动(可选):用 tasks.json 启动 tmux + Jupyter

为了简化每次手动输入命令的繁琐,你可以配置 VS Code 的 tasks.json 来一键启动 "tmux + Jupyter" 环境。

  1. .vscode/tasks.json 中添加以下任务:

    json
    {
      "version": "2.0.0",
      "tasks": [
        {
          "label": "启动后台 Jupyter Lab",
          "type": "shell",
          "command": "tmux new-session -d -s jupyter 'jupyter lab --no-browser --port=8888 --allow-root' || echo 'Jupyter session already exists'",
          "presentation": {
            "echo": true,
            "reveal": "always",
            "focus": false,
            "panel": "shared"
          },
          "problemMatcher": []
        }
      ]
    }
  2. 使用方法:

    • Cmd+Shift+P (macOS) 或 Ctrl+Shift+P (Windows),输入 Run Task
    • 选择 "启动后台 Jupyter Lab"
    • 任务会在后台启动 tmux 会话。你可以随时通过 tmux attach -t jupyter 查看日志或获取 Token。

提示

如果希望 VS Code 终端本身也能防断连(自动进入 tmux),请参考 VS Code 远程开发 - 配置终端自动进入 tmux 会话

结论

通过以上步骤,你已经成功在远程开发机上安装了 Jupyter Lab,并通过三种方式使用 Jupyter Lab。

  • 在智算云平台通过跳转方式,直接打开 Jupyter Lab 界面。
  • 通过 SSH 端口转发在本地安全地访问 Jupyter Lab 界面。
  • 通过 SSH 端口转发集成远程 Jupyter 内核,在本地的 Notebook 中直接使用 AIStudio 开发机上的 GPU。

参考资料

找不到想要的答案?
让 AI 助手为您解答