You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure ML JupyterLab中通过Papermill prepare_only模式设置默认内核

在Azure ML JupyterLab的prepare_only模式下设置默认内核

问题描述

  • 核心需求:在Azure ML笔记本的JupyterLab中,为prepare_only模式设置默认内核,避免每日重复手动切换的操作。
  • 已尝试但无效的方案:
    1. 编辑Jupyter配置文件/home/azureuser/.jupyter/jupyter_notebook_config.py,添加c.MultiKernelManager.default_kernel_name = 'py38',但重启计算实例或JupyterLab后配置文件会被自动覆盖。
    2. 使用Papermill执行笔记本时,指定kernel_name='py38'并配合prepare_only=True参数,无效果。

可行解决方案

方法1:通过计算实例启动脚本持久化配置

Azure ML计算实例支持自定义启动脚本,可利用该特性在每次启动时自动写入内核配置,避免被覆盖:

  1. 创建启动脚本文件(例如set_default_kernel.sh),内容如下:
    # 确保.jupyter目录存在
    mkdir -p /home/azureuser/.jupyter
    # 向JupyterLab优先读取的配置文件写入默认内核设置
    echo "c.MultiKernelManager.default_kernel_name = 'py38'" >> /home/azureuser/.jupyter/jupyter_server_config.py
    
  2. 在Azure ML工作区找到目标计算实例,进入高级设置,将上述脚本设置为启动脚本。
  3. 重启计算实例,配置会在每次启动时自动生效。

方法2:直接修改笔记本元数据(适配Papermill prepare_only模式)

prepare_only=True时Papermill不会运行内核,但可以通过修改笔记本的元数据直接指定默认内核:

import nbformat

# 读取原始笔记本文件
with open("your_input_notebook.ipynb", "r") as f:
    notebook = nbformat.read(f, as_version=4)

# 设置内核元数据
notebook.metadata.kernelspec = {
    "name": "py38",
    "display_name": "Python 3.8",
    "language": "python"
}

# 保存修改后的笔记本
with open("prepared_notebook.ipynb", "w") as f:
    nbformat.write(notebook, f)

后续可直接使用这个已设置内核的笔记本,或用Papermill以prepare_only模式处理它。

方法3:创建带指定内核的笔记本模板

通过JupyterLab UI创建模板,从根源避免手动切换:

  1. 打开JupyterLab,新建一个笔记本,切换到目标内核py38。
  2. 点击File > Save as Template,将该笔记本保存为模板。
  3. 后续新建笔记本时,直接从该模板创建,默认即为py38内核。

内容的提问来源于stack exchange,提问作者Tickon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:42:44