标签: AI

  • 将 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 提供了丰富的功能和灵活的配置选项,可以满足不同规模和需求的推荐系统开发。

  • 微软 Recommenders:推荐系统实战宝典

    引言

    构建一个高效的推荐系统并非易事,需要对数据进行预处理、选择合适的算法、进行模型训练和评估,最终才能将其部署到生产环境。为了帮助开发者和研究人员更好地应对这些挑战,微软开源了 Recommenders 工具,并提供了一系列 Jupyter Notebook 示例和最佳实践,涵盖了推荐系统开发的完整流程。

    示例概览

    Recommenders 的示例 Notebook 按照功能和用途被组织在不同的目录下,具体如下表所示:

    目录是否支持本地运行描述
    00_quick_start快速入门示例,演示如何在本地环境中使用推荐算法构建推荐系统。
    01_prepare_data数据准备示例,为不同的推荐算法准备和加载数据。
    02_model_collaborative_filtering协同过滤算法模型训练和评估示例,深入探讨算法原理和实现细节。

    本地运行示例

    大部分示例 Notebook 都可以在本地 Linux 机器上直接运行,只需按照 说明 正确设置环境即可。

    注意: 某些示例可能需要异构计算实例,例如安装了 Spark 框架的 CPU 机器集群或配备 GPU 设备的机器。因此,建议在 Linux 数据科学虚拟机 (Ubuntu) 上运行这些 Notebook,因为该虚拟机预先配置了单节点 Spark 和/或 GPU 设备。

    Azure 云端增强

    为了提高大规模开发推荐系统的效率,部分示例 Notebook 还使用了 Azure 云产品和服务,例如:

    • Azure 机器学习服务: 用于训练、部署、自动化和管理机器学习模型的云服务,在示例中广泛用于超参数调整、指标跟踪和监控、计算资源扩展以及 Web 服务部署等任务。
    • Azure 数据科学虚拟机: 主要用作远程服务器,用户可以轻松配置本地和云环境以运行示例 Notebook。
    • Azure Cosmos DB: 用于存储数据,例如在模型部署示例中,将模型生成的推荐结果存储在 Cosmos DB 中以实现实时服务。
    • Azure Databricks: 主要用于在分布式计算环境中开发基于 Spark 的推荐系统,例如 Spark ALS 算法。
    • Azure Kubernetes 服务: 用于服务推荐模型或使用推荐结果为应用程序服务。

    将现有 Notebook 提交到 Azure 机器学习

    run_notebook_on_azureml 示例 Notebook 提供了一个框架,可以直接将现有 Notebook 提交到 Azure 机器学习计算目标。设置好计算目标并创建运行配置后,只需替换 Notebook 文件名即可直接提交 Notebook。

    cfg = NotebookRunConfig(source_directory='../',
                                notebook='examples/00_quick_start/' + NOTEBOOK_NAME,
                                output_notebook='outputs/out.ipynb',
                                parameters={"MOVIELENS_DATA_SIZE": "100k", "TOP_K": 10},
                                run_config=run_config)

    所有使用 store_metadata 记录的指标和参数都将作为跟踪指标存储在运行中。最初提交的 Notebook 将作为输出 Notebook out.ipynb 存储在 Azure 门户的输出选项卡中。

    总结

    微软 Recommenders 提供的示例 Notebook 为开发者和研究人员提供了一个宝贵的学习资源,可以帮助他们快速掌握构建高性能推荐系统的最佳实践。无论是本地运行还是借助 Azure 云平台,Recommenders 都能帮助您轻松构建个性化推荐体验。

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 知差(chai)网