引言
随着推荐系统规模的扩大和对训练效率要求的提高,将本地实验迁移到云平台成为一种趋势。Azure 机器学习服务(AzureML)为开发者提供了一个强大的云端环境,可以用于数据准备、模型训练、测试、部署、管理和跟踪。
本指南将以 run_notebook_on_azureml.ipynb
为例,介绍如何将 Recommenders 示例 Notebook 提交到 AzureML 计算目标,利用云平台的优势加速推荐系统开发流程。
AzureML 简介
AzureML 提供了丰富的功能,包括:
- 管理云资源,用于监控、记录和组织机器学习实验。
- 支持本地和云端训练模型,包括 GPU 加速训练。
- 易于扩展,只需创建并指向新的计算目标即可应对数据集增长。
准备工作
使用 AzureML 之前,需要完成以下准备工作:
- 拥有 Azure 订阅。如果没有,可以创建一个免费帐户,并试用 Azure 机器学习服务的免费或付费版本。
- 安装
azure.contrib.notebook
包。
#!pip install "azureml.contrib.notebook>=1.0.21.1"
连接到 AzureML 工作区
AzureML 工作区是用于组织和协调机器学习工作流的 Azure 资源,它协调存储、数据库和计算资源,为实验、部署、推理和模型监控提供额外功能。
以下代码将获取或创建一个 AzureML 工作区,并将配置保存到 aml_config/config.json
文件中。
ws = Workspace.create(
name="<WORKSPACE_NAME>",
subscription_id="<SUBSCRIPTION_ID>",
resource_group="<RESOURCE_GROUP>",
location="<WORKSPACE_REGION>"
exist_ok=True,
)
创建或连接 Azure 机器学习计算资源
Azure 机器学习计算是一种托管计算基础设施,允许用户轻松创建单节点到多节点的计算资源。
以下代码将创建一个 CPU 集群作为远程计算目标。
# 远程计算(集群)配置
VM_SIZE = 'STANDARD_D2_V2'
MIN_NODES = 0
MAX_NODES = 2
CLUSTER_NAME = 'cpucluster'
try:
compute_target = ComputeTarget(workspace=ws, name=CLUSTER_NAME)
print("找到现有计算目标")
except:
print("正在创建新的计算目标...")
# 指定新集群的配置
compute_config = AmlCompute.provisioning_configuration(
vm_size=VM_SIZE,
min_nodes=MIN_NODES,
max_nodes=MAX_NODES
)
# 使用指定的名称和配置创建集群
compute_target = ComputeTarget.create(ws, CLUSTER_NAME, compute_config)
# 等待集群完成,显示输出日志
compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)
提交 Notebook
以下代码将 sar_movielens.ipynb
Notebook 提交到 AzureML 计算目标。
NOTEBOOK_NAME = 'sar_movielens.ipynb'
experiment_name = NOTEBOOK_NAME.strip(".ipynb")
# ... 设置运行配置 ...
cfg = NotebookRunConfig(source_directory='../',
notebook='notebooks/00_quick_start/' + NOTEBOOK_NAME,
output_notebook='outputs/out.ipynb',
parameters={"MOVIELENS_DATA_SIZE": "100k", "TOP_K": 10},
run_config=run_config)
run = exp.submit(cfg)
run
监控运行进度
可以使用 Jupyter 小部件监控运行进度。小部件会每隔 10-15 秒提供一次实时更新,直到作业完成。
RunDetails(run).show()
查看指标
运行完成后,可以使用 run.get_metrics()
查看记录的指标。
metrics = run.get_metrics()
print(metrics)
释放计算资源
为避免不必要的费用,请确保在使用后释放创建的计算目标。
# 删除计算目标
compute_target.delete()
总结
通过将 Recommenders 示例 Notebook 提交到 AzureML 云平台,可以充分利用云计算的优势,加速推荐系统开发流程。AzureML 提供了丰富的功能和灵活的配置选项,可以满足不同规模和需求的推荐系统开发。