在工作区中运行 Jupyter 笔记本

本文介绍如何在 Azure 机器学习工作室的工作区中运行 Jupyter 笔记本。 还可以使用 JupyterJupyterLabVisual Studio Code 运行笔记本。 VS Code Desktop 可配置为访问计算实例。 或者直接从浏览器使用 VS Code 网页版,而无需任何必需的安装或依赖项。

提示

建议尝试 VS Code 网页版,以利用它提供的简单集成和丰富的开发环境。 VS Code 网页版提供了你喜欢的许多 VS Code Desktop 功能,包括浏览和编辑时搜索和语法突出显示。 有关使用 VS Code Desktop 和 VS Code 网页版的详细信息,请参阅启动与 Azure 机器学习集成的 Visual Studio Code在远程连接到计算实例的 VS Code 中工作

无论使用哪种解决方案来运行笔记本,都可访问工作区中的所有文件。 有关如何创建和管理文件(包括笔记本)的信息,请参阅在工作区中创建和管理文件

本文演示了直接在工作室中运行笔记本的体验。

重要

标记为“(预览版)”的功能在提供时不附带服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。

先决条件

  • Azure 订阅。 如果没有 Azure 订阅,请在开始前创建一个试用版订阅
  • 机器学习工作区。 请参阅创建工作区资源
  • 你的用户标识必须有权访问工作区的默认存储帐户。 能否阅读、编辑或创建笔记本取决于你具有的对工作区的访问级别。 例如,“参与者”可以编辑笔记本,而“读者”只能查看它。
  • 若要运行笔记本中的单元格,需要有一个计算实例。 创建和运行计算实例需要工作区区域中的可用 VM 配额,并在运行时产生费用。

从工作区访问笔记本

使用工作区的“笔记本”部分来编辑和运行 Jupyter 笔记本。

  1. 登录到 Azure 机器学习工作室
  2. 如果尚未打开,请选择您的工作区
  3. 在左侧选择“笔记本”

编辑笔记本

若要编辑笔记本,请打开位于工作区“用户文件”部分的任何笔记本。 选择要编辑的单元格。 如果本部分中没有任何笔记本,请参阅在工作区中创建和管理文件

你可以在不连接到计算实例的情况下编辑笔记本。 要运行笔记本中的单元格时,请选择或创建一个计算实例。 如果选择一个已停止的计算实例,则在你运行第一个单元时,该计算实例会自动启动。

如果计算实例正在运行,还可以在任何 Python Notebook 中使用由 Intellisense 提供支持的代码完成功能。

计算实例运行时,可从笔记本工具栏启动 Jupyter 或 JupyterLab。 Azure 机器学习不提供来自 Jupyter 或 JupyterLab 的更新,也不修复其中的 bug,因为这些开源产品不在 Azure 支持的范围内。

焦点模式

使用焦点模式展开当前视图,以便将焦点放在活动的选项卡上。 焦点模式将隐藏笔记本文件资源管理器。

  1. 在笔记本工具栏中,选择 “焦点”模式 以打开焦点模式。 根据窗口宽度,该工具可能位于工具栏中的 ... 菜单项下。

  2. 在焦点模式下,通过选择“标准视图”返回到标准视图。

    切换焦点模式/标准视图

代码补全 (IntelliSense)

IntelliSense 是一个代码完成辅助插件,其中包括许多功能:“列出成员”、“参数信息”、“快速信息”和“完成单词”。 只需按几下按键,就能:

  • 详细了解所用的代码
  • 随时了解您正在输入的参数
  • 添加对属性和方法的调用

插入代码片段(预览版)

使用 Ctrl+Space 触发 IntelliSense 代码片段。 滚动浏览建议或开始键入以查找要插入的代码。 插入代码后,按 Tab 键逐个切换到各个参数,自定义代码以满足自己的使用需求。

插入代码片段

在 VS Code 中打开笔记本时,可以使用这些相同的代码片段。

可以使用笔记本工具栏打开代码段面板来浏览和搜索代码段列表。

在笔记本工具栏中打开代码段面板工具

在代码片段面板中,还可以提交请求以添加新代码段。

代码段面板允许你提出新的代码段

共享笔记本

笔记本存储在工作区的存储帐户中,并且可以与其他人共享,具体取决于他们对工作区的访问级别。 他们可以打开和编辑笔记本,只要他们具有相应的访问权限。 例如,“参与者”可以编辑笔记本,而“读者”只能查看它。

你的工作区的其他用户可以在 Azure 机器学习工作室的笔记本用户文件部分中找到你的笔记本。 默认情况下,你的笔记本位于以你的用户名命名的文件夹中,其他人可以在该文件夹中访问它们。

此外,还可以在打开笔记本时从浏览器复制 URL,然后将其发送给其他人。 只要他们对你的工作区有相应访问权限,他们就可以打开笔记本。

由于你不共享计算实例,因此运行你的笔记本的其他用户将使用他们自己的计算实例。

通过笔记本评论进行协作

使用笔记本评论与其他有权访问你笔记本的人协作。

在笔记本顶部使用“笔记本注释”工具打开和关闭“注释”窗格。 如果您的屏幕不够宽,请先选择这组工具末尾的 ...,然后找到此工具。

顶部工具栏中笔记本注释工具的屏幕截图。

无论注释窗格是否可见,都可以在任何代码单元格中添加注释:

  1. 在代码单元格中选择一些文本。 你只能对代码单元格中的文本进行注释。
  2. 使用“新建注释线程”工具创建注释。 向代码单元格添加注释的工具的屏幕截图。
  3. 如果“评论”窗格之前处于隐藏状态,它现在会打开。
  4. 使用该工具键入注释并发布,或按 Ctrl+Enter 键。
  5. 发布评论后,选择右上角的 ...,可进行以下操作:
    • 编辑注释
    • 解析线程
    • 删除线程

注释文本在代码中以紫色高亮显示。 当你在“评论”窗格中选择一条评论时,笔记本会滚动到包含高亮显示文本的单元格。

注意

注释将被保存到该代码单元格的元数据中。

清理笔记本(预览版)

在创建笔记本的过程中,通常最终会得到用于数据浏览或调试的单元格。 gather 功能可帮助您创建一个没有这些多余单元格的整洁笔记本。

  1. 运行笔记本中的所有单元格。
  2. 选择包含你希望新笔记本运行的代码的单元格。 例如,用于提交试验的代码,或者用于注册模型的代码。
  3. 选择显示在单元格工具栏上的 Gather 图标。 屏幕截图:选择“收集”图标
  4. 输入新“已收集”笔记本的名称。

新笔记本只包含代码单元格,所有单元格都需要生成与你选择用于收集的单元格相同的结果。

将笔记本保存并设置检查点

当你创建一个 ipynb 文件时,Azure 机器学习会创建一个检查点文件。

在笔记本工具栏中,选择相应菜单,然后选择“文件”>“保存并设置检查点”以手动保存笔记本,它会添加与笔记本关联的检查点文件。

笔记本工具栏中保存工具的屏幕截图

每个笔记本每隔 30 秒会自动保存一次。 自动保存仅更新初始的 ipynb 文件,而不更新检查点文件。

在“笔记本”菜单中选择“检查点”以创建命名检查点,并将笔记本还原为已保存的检查点。

导出笔记本

在笔记本工具栏中选择菜单,然后选择“导出为”,以任一受支持类型导出笔记本:

  • Python
  • HTML
  • LaTeX

将笔记本导出到计算机

导出的文件保存在计算机上。

运行笔记本或 Python 脚本

若要运行笔记本或 Python 脚本,请先连接到正在运行的计算实例

  • 如果没有计算实例,请使用以下步骤创建一个计算实例:

    1. 在笔记本或脚本工具栏中,选择位于“计算资源”下拉列表右侧的 + 新建计算资源。 根据屏幕大小,该控件可能位于“…”菜单下 创建新计算
    2. 为计算资源命名,并选择虚拟机大小。
    3. 选择“创建”。
    4. 计算实例自动连接到文件。 现在可以使用计算实例左侧的工具来运行笔记本单元格或 Python 脚本。
  • 如果有已停止的计算实例,请在“计算”下拉列表右侧选择“开始计算”。 根据屏幕大小,该控件可能位于“…”菜单下

    启动计算实例

连接到计算实例后,使用工具栏运行笔记本中的所有单元格,或使用 Ctrl+Enter 运行选定的单个单元格。

当单元格成功执行完毕后,其执行计数会递增,输出将显示在该单元格下方。 运行完成后,内核状态将返回到空闲状态。

只有本人可以查看和使用自己创建的计算实例。 用户文件与计算机分开存储,并在工作区中的所有计算实例之间共享。

探究笔记本中的变量

在笔记本工具栏上,使用“变量资源管理器”工具显示已在笔记本中创建的所有变量的名称、类型、长度和示例值。

屏幕截图:“变量资源管理器”工具

选择该工具以显示“变量浏览器”窗口。

屏幕截图:变量资源管理器窗口

在笔记本工具栏上,使用“目录”工具显示或隐藏目录。 启动带标题的 Markdown 单元格时,它被添加到目录中。 选择表中的条目可滚动到笔记本中的相应单元格。

屏幕截图:笔记本中的目录

更改笔记本环境

使用笔记本工具栏可以更改笔记本运行的环境。

以下操作不会更改笔记本状态或笔记本中任何变量的值:

操作 结果
关闭内核 停止所有正在运行的单元。 运行单元格时,将自动重启内核。
转到工作区的其他部分 正在运行的单元格已停止。

以下操作会重置笔记本状态,并重置笔记本中的所有变量。

操作 结果
更改内核 笔记本使用新内核
切换计算 笔记本自动使用新的计算。
重置计算 当你尝试运行单元格时会重新启动
停止计算 不会运行任何单元
在 Jupyter 或 JupyterLab 中打开笔记本 笔记本在新选项卡中打开。

添加新内核

使用终端创建新内核,并将其添加到计算实例。 笔记本会自动查找连接的计算实例上安装的所有 Jupyter 内核。

使用右侧的内核下拉菜单,切换到任一已安装的内核。

管理软件包

由于计算实例有多个内核,因此请确保使用 %pip%condamagic 函数,它们会将包安装到当前运行的内核中。 请勿使用 !pip!conda,它们引用所有包(包括当前运行的内核之外的包)。

状态指示器

Compute 下拉列表旁边的指示器会显示其状态。 状态也会显示在下拉列表本身中。

颜色 计算资源状态
绿色 计算运行中
红色 计算失败
黑色 已停止计算
浅蓝色 计算资源创建中、启动中、重启中、设置中
灰色 删除计算资源、停止计算资源

Kernel 下拉列表旁边的指示器会显示其状态。

颜色 内核状态
绿色 内核已连接、空闲、繁忙
灰色 内核未连接

查找计算详细信息

可在studio的Compute页面上查看有关计算实例的详细信息。

有用的键盘快捷方式

与 Jupyter Notebook 类似,Azure 机器学习工作室笔记本有一个模式化用户界面。 键盘根据笔记本单元格的具体模式执行不同的任务。 对于给定的代码单元格,Azure 机器学习工作室笔记本支持以下两种模式:命令模式和编辑模式。

命令模式快捷方式

当没有文本光标提示你键入时,单元格处于命令模式。 当单元格处于命令模式时,可以将笔记本作为一个整体进行编辑,但不能键入单独的单元格。 按 ESC 或使用鼠标选择单元格编辑器区域外部,进入命令模式。

快捷方式 描述
回车键 进入编辑模式
Shift+Enter 运行单元格并选择下方单元格
Control/命令键 + 回车 运行单元格
Alt + 回车键 运行单元格,在下方插入代码单元格
控制键/命令键 + Alt + 回车 运行单元,在下方插入 Markdown 单元
Alt + R 全部运行
Y 将单元格转换为代码
M 将单元格转换为 Markdown
Up/K 选择上方的单元格
下行/J 选择下方的单元格
A 在上方插入代码单元格
B 在下方插入代码单元格
Control(控制)/Command(指令) + Shift(移位) + A 在上方插入 Markdown 单元格
控制/命令 + Shift + B 在下方插入 Markdown 单元格
X 剪切所选单元格
C 复制所选单元格
Shift + V 在上方粘贴所选单元格
V 在下方粘贴所选单元格
D D 删除所选单元格
O 切换输出
Shift + O 打开/关闭输出滚动
I I 中断内核
0 0 重启内核
Shift + 空格键 向上滚动
空格键 向下滚动
选项卡 将焦点更改到下一个可聚焦的项(当 Tab 陷阱被禁用时)
控制/命令 + S 保存笔记本
1 更改为 h1
2 更改为 h2
3 更改为 h3
4 更改为 h4
5 切换到 H5
6 更改为 h6

编辑模式快捷方式

编辑模式由文本光标指示,提示你在编辑器区域中键入内容。 当单元格处于编辑模式时,可以在单元格中键入。 按 Enter 进入编辑模式,或者选择单元格的编辑器区域。 在“编辑”模式下,在单元格中看到光标提示。

使用以下击键快捷方式,可以在“编辑”模式下更轻松地在 Azure 机器学习笔记本中导航并运行代码。

快捷方式 描述
Escape 进入命令模式
Control/Command + 空格键 激活 IntelliSense
Shift+Enter 运行单元,选择下方单元
Control/命令键 + 回车 运行单元格
Alt + 回车键 运行单元,在下面插入代码单元
控制键/命令键 + Alt + 回车 运行单元格,在下方插入 Markdown 单元格
Alt + R 运行所有单元格
向上 将光标上移或移到上一个单元格
向下 将光标下移或移到下一个单元格
控制/命令 + S 保存笔记本
Control/Command + 向上箭头键 转到单元格开头
Control/Command + 向下箭头键 转到单元格末尾
选项卡 代码补全或缩进(如果启用了 Tab 键陷阱)
Control/Command + M 启用/禁用 Tab 陷阱
Control/Command(控制/命令) + ] 缩进
控制键/命令键 + [ 取消缩进
控制/命令 + A 全选
控制/命令 + Z 撤销
Ctrl/Cmd + Shift + Z 重做
按住 Control/Command 键并按 Y 重做
Control/Command + Home(家) 转到单元格开头
Control/Command + 结束 转到单元格末尾
Control/Command + 左方向键 向左移动一个单词
Control/Command + 右箭头键 向右移动一个单词
Control(控制)/Command(命令) + Backspace(退格键) 删除前一个单词
Control/Command(控制/命令键)+ Delete(删除键) 删除后面的单词
键盘快捷键:Control/Command + / 显示/隐藏单元格批注

疑难解答

  • 连接到笔记本:如果无法连接到笔记本,请确保未禁用 WebSocket 通信。 为了让计算实例 Jupyter 功能可以正常运行,必须启用 Web 套接字通信。 确保您的网络允许 WebSocket 连接到 *.instances.ml.azure.cn 和 *.instances.ml.azure.cn。

  • 专用终结点:在具有专用终结点的工作区中部署计算实例时,只能从虚拟网络内部访问它 如果使用自定义 DNS 或 hosts 文件,请为 < instance-name >.< region >.instances.ml.azure.cn 添加一个条目,让该条目包含工作区专用终结点的专用 IP 地址。 有关详细信息,请参阅 自定义 DNS 一文。

  • 内核崩溃:如果内核崩溃并重启,可运行以下命令来查看 Jupyter 日志并查找更多详细信息:sudo journalctl -u jupyter。 如果内核问题仍然存在,请考虑使用具有更多内存的计算实例。

  • 令牌已过期:如果遇到令牌过期的问题,请注销 Azure 机器学习工作室,再重新登录,然后重启笔记本内核。

  • 文件上传限制:通过笔记本的文件资源管理器上传文件时,限制为小于 5 TB 的文件。 如果需要上传大于此大小的文件,建议使用 SDK 将数据上传到数据存储。 有关详细信息,请参阅创建数据资产