如何让Azure ML通过Papermill执行参数化Jupyter Notebook?
Azure ML 对 Papermill 的支持及使用方法
是的,Azure ML 完全支持使用 Papermill 来参数化和执行 Jupyter Notebook,下面是具体的实现步骤和核心要点:
1. 准备参数化 Notebook
先在你的 Jupyter Notebook 里标记出可接收参数的单元格,只需在目标单元格顶部添加 # parameters 注释,然后定义参数变量即可,示例:
# parameters input_data_path = "./default_data.csv" learning_rate = 0.01 epochs = 10
2. 在 Azure ML 环境中安装 Papermill
无论是使用 Azure ML Compute Instance 还是自定义计算环境,都需要确保 Papermill 已安装:
- 如果是在 Compute Instance 的 Notebook 中临时安装,可直接运行:
!pip install papermill - 如果是构建长期使用的自定义环境,可在
conda.yml或requirements.txt中添加papermill依赖项,确保环境启动时自动安装。
3. 在 Azure ML 中执行参数化 Notebook
有两种常用的执行方式:
方式一:直接在 Compute Instance 终端运行 Papermill 命令
打开 Compute Instance 的终端,执行类似命令即可完成参数化执行:
papermill input_notebook.ipynb output_notebook.ipynb \ -p input_data_path "azureml://datastores/workspaceblobstore/paths/training_data" \ -p learning_rate 0.005 \ -p epochs 20
执行完成后,output_notebook.ipynb 会记录所有参数替换后的执行结果。
方式二:通过 Azure ML Pipeline 编排批量/定时执行
如果需要将参数化 Notebook 纳入自动化工作流,可使用 Azure ML Python SDK 构建 Pipeline,示例代码片段:
from azureml.core import Workspace, Experiment import papermill as pm # 加载工作区配置 ws = Workspace.from_config() exp = Experiment(ws, "papermill-pipeline-demo") # 定义参数集合 execution_params = { "input_data_path": "azureml://datastores/workspaceblobstore/paths/training_data", "learning_rate": 0.005, "epochs": 20 } # 执行参数化 Notebook pm.execute_notebook( input_path="./input_notebook.ipynb", output_path="./output_notebook.ipynb", parameters=execution_params, kernel_name="python3" ) # 提交实验并监控运行 run = exp.submit(None) # 若需整合到Pipeline,可替换为对应的Step定义 run.wait_for_completion(show_output=True)
4. 关键注意事项
- 确保 Notebook 使用的内核版本与 Azure ML 环境中的 Python 版本兼容;
- 如果访问 Azure ML 数据存储或数据集,需为计算资源配置对应的访问权限;
- 执行后的输出 Notebook 会被自动保存,可在 Azure ML 实验的运行记录中查看或下载。
内容的提问来源于stack exchange,提问作者Antebios
相关产品推荐
相关产品推荐

