将 Recommenders 示例无缝迁移到 AzureML 云平台

引言

随着推荐系统规模的扩大和对训练效率要求的提高,将本地实验迁移到云平台成为一种趋势。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 提供了丰富的功能和灵活的配置选项,可以满足不同规模和需求的推荐系统开发。

0 0 投票数
Article Rating
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x