Azure 机器学习 - 使用Python SDK训练模型

简介: Azure 机器学习 - 使用Python SDK训练模型

了解如何用 SDK v1 将 Azure 计算资源附加到 Azure 机器学习工作区。 然后,可以将这些资源用作机器学习任务中的训练和推理计算目标


一、环境准备

  • Azure 机器学习工作区。 有关详细信息,请参阅创建工作区资源。
  • 机器学习服务的 Azure CLI 扩展、Azure 机器学习 Python SDK 或 Azure 机器学习 Visual Studio Code 扩展。

二、工作区限制

  • 请勿在工作区中为同一计算创建多个同步附件。 例如,使用两个不同的名称将一个 Azure Kubernetes 服务群集附加到工作区。 每个新附件都会破坏先前存在的附件。
    如果要重新附加计算目标来实现某个目的(例如,更改 TLS 或其他群集配置设置),则必须先删除现有附件。

三、什么是计算目标?

使用 Azure 机器学习,可在不同的资源或环境(统称为计算目标)中训练模型。 计算目标可以是本地计算机,也可以是云资源,例如 Azure 机器学习计算、Azure HDInsight 或远程虚拟机。 还可以使用计算目标进行模型部署,如部署模型的位置和方式中所述。


四、本地计算机

使用本地计算机进行训练时,无需创建计算目标。 只需从本地计算机提交训练运行。

使用本地计算机进行推理时,必须安装 Docker。 若要执行部署,请使用 LocalWebservice.deploy_configuration() 来定义 Web 服务将使用的端口。 然后使用通过 Azure 机器学习部署模型中所述的常规部署流程。


五、远程虚拟机

Azure 机器学习还支持连接 Azure 虚拟机。 VM 必须是 Azure Data Science Virtual Machine (DSVM)。 此 VM 提供精选的工具和框架用于满足整个机器学习开发生命周期的需求。 有关如何将 DSVM 与 Azure 机器学习配合使用的详细信息,请参阅配置开发环境。

  1. 创建:Azure 机器学习无法为你创建远程 VM。 你需要自行创建 VM,然后将其附加到 Azure 机器学习工作区。 要详细了解如何创建 DSVM,请参阅预配适用于 Linux (Ubuntu) 的 Data Science Virtual Machine。
    Azure 机器学习仅支持运行 Ubuntu 的虚拟机。 创建 VM 或选择现有 VM 时,必须选择使用 Ubuntu 的 VM。
    Azure 机器学习还要求虚拟机具有公共 IP 地址。
  2. 附加:若要附加现有虚拟机作为计算目标,必须提供虚拟机的资源 ID、用户名和密码。 可以使用订阅 ID、资源组名称和 VM 名称按以下字符串格式构造 VM 的资源 ID:/subscriptions//resourceGroups//providers/Microsoft.Compute/virtualMachines/
from azureml.core.compute import RemoteCompute, ComputeTarget
# Create the compute config 
compute_target_name = "attach-dsvm"
attach_config = RemoteCompute.attach_configuration(resource_id='<resource_id>',
                                                ssh_port=22,
                                                username='<username>',
                                                password="<password>")
# Attach the compute
compute = ComputeTarget.attach(ws, compute_target_name, attach_config)
compute.wait_for_completion(show_output=True)
  1. 或者,可以使用 Azure 机器学习工作室将 DSVM 附加到工作区。
    请勿在工作区中为同一 DSVM 创建多个同步附件。 每个新附件都会破坏先前存在的附件。
  2. 配置:为 DSVM 计算目标创建运行配置。 Docker 与 conda 用于在 DSVM 上创建和配置训练环境。
from azureml.core import ScriptRunConfig
from azureml.core.environment import Environment
from azureml.core.conda_dependencies import CondaDependencies
# Create environment
myenv = Environment(name="myenv")
# Specify the conda dependencies
myenv.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
# If no base image is explicitly specified the default CPU image "azureml.core.runconfig.DEFAULT_CPU_IMAGE" will be used
# To use GPU in DSVM, you should specify the default GPU base Docker image or another GPU-enabled image:
# myenv.docker.enabled = True
# myenv.docker.base_image = azureml.core.runconfig.DEFAULT_GPU_IMAGE
# Configure the run configuration with the Linux DSVM as the compute target and the environment defined above
src = ScriptRunConfig(source_directory=".", script="train.py", compute_target=compute, environment=myenv)

如果要从工作区中删除(拆离)VM,请使用 RemoteCompute.detach() 方法。

Azure 机器学习不会为你删除 VM。 必须使用 Azure 门户、CLI 或适用于 Azure VM 的 SDK 手动删除 VM。


六、Apache Spark 池

通过 Azure Synapse Analytics 与 Azure 机器学习的集成(预览版),你可以附加由 Azure Synapse 提供支持的 Apache Spark 池,以进行交互式数据探索和准备。 借助这种集成,你可使用专用计算大规模地进行数据整理。 有关详细信息,请参阅如何附加由 Azure Synapse Analytics 提供支持的 Apache Spark 池。


七、Azure HDInsight

Azure HDInsight 是用于大数据分析的热门平台。 该平台提供的 Apache Spark 可用于训练模型。

  1. 创建:Azure 机器学习无法为你创建 HDInsight 群集。 你需要自行创建群集,然后将其附加到 Azure 机器学习工作区。 有关详细信息,请参阅在 HDInsight 中创建 Spark 群集。

Azure 机器学习要求 HDInsight 群集具有公共 IP 地址。 创建群集时,必须指定 SSH 用户名和密码。 请记下这些值,因为在将 HDInsight 用作计算目标时需要用到这些值。 创建群集后,使用主机名 clustername-ssh.azurehdinsight.net 连接到该群集,其中,clustername是为该群集提供的名称。

  1. 附加:若要将 HDInsight 群集附加为计算目标,必须提供该 HDInsight 群集的资源 ID、用户名和密码。 可以使用订阅 ID、资源组名称和 HDInsight 群集名称按以下字符串格式构造 HDInsight 群集的资源 ID:/subscriptions//resourceGroups//providers/Microsoft.HDInsight/clusters/
from azureml.core.compute import ComputeTarget, HDInsightCompute
    from azureml.exceptions import ComputeTargetException
    try:
    # if you want to connect using SSH key instead of username/password you can provide parameters private_key_file and private_key_passphrase
    attach_config = HDInsightCompute.attach_configuration(resource_id='<resource_id>',
                                                          ssh_port=22, 
                                                          username='<ssh-username>', 
                                                          password='<ssh-pwd>')
    hdi_compute = ComputeTarget.attach(workspace=ws, 
                                       name='myhdi', 
                                       attach_configuration=attach_config)
    except ComputeTargetException as e:
    print("Caught = {}".format(e.message))
    hdi_compute.wait_for_completion(show_output=True)

或者,可以使用 Azure 机器学习工作室将 HDInsight 群集附加到工作区。

请勿在工作区中为同一 HDInsight 创建多个同步附件。 每个新附件都会破坏先前存在的附件。

  1. 配置:为 HDI 计算目标创建运行配置。
    ``` from azureml.core.runconfig import RunConfiguration from azureml.core.conda_dependencies import CondaDependencies
# use pyspark framework
run_hdi = RunConfiguration(framework="pyspark")
# Set compute target to the HDI cluster
run_hdi.target = hdi_compute.name
# specify CondaDependencies object to ask system installing numpy
cd = CondaDependencies()
cd.add_conda_package('numpy')
run_hdi.environment.python.conda_dependencies = cd
```

如果要从工作区中删除(拆离)HDInsight 群集,请使用 HDInsightCompute.detach() 方法。

Azure 机器学习不会为你删除 HDInsight 群集。 必须使用 Azure 门户、CLI 或适用于 Azure HDInsight 的 SDK 将其手动删除。


八、Azure Batch

Azure Batch 用于在云中高效运行大规模并行高性能计算 (HPC) 应用程序。 可以在 Azure 机器学习管道中使用 AzureBatchStep 将作业提交到 Azure Batch 计算机池。

若要将 Azure Batch 附加为计算目标,必须使用 Azure 机器学习 SDK 并提供以下信息:

  • Azure Batch 计算名称:在工作区中用于计算的易记名称
  • Azure Batch 帐户名称:Azure Batch 帐户的名称
  • 资源组:包含 Azure Batch 帐户的资源组。

以下代码演示如何将 Azure Batch 附加为计算目标:

from azureml.core.compute import ComputeTarget, BatchCompute
from azureml.exceptions import ComputeTargetException
# Name to associate with new compute in workspace
batch_compute_name = 'mybatchcompute'
# Batch account details needed to attach as compute to workspace
batch_account_name = "<batch_account_name>"  # Name of the Batch account
# Name of the resource group which contains this account
batch_resource_group = "<batch_resource_group>"
try:
    # check if the compute is already attached
    batch_compute = BatchCompute(ws, batch_compute_name)
except ComputeTargetException:
    print('Attaching Batch compute...')
    provisioning_config = BatchCompute.attach_configuration(
        resource_group=batch_resource_group, account_name=batch_account_name)
    batch_compute = ComputeTarget.attach(
        ws, batch_compute_name, provisioning_config)
    batch_compute.wait_for_completion()
    print("Provisioning state:{}".format(batch_compute.provisioning_state))
    print("Provisioning errors:{}".format(batch_compute.provisioning_errors))
print("Using Batch compute:{}".format(batch_compute.cluster_resource_id))

请勿在工作区中为同一 Azure Batch 创建多个同步附件。 每个新附件都会破坏先前存在的附件。

九、Azure Databricks

Azure Databricks 是 Azure 云中基于 Apache Spark 的环境。 它可以用作 Azure 机器学习管道的计算目标。

Azure 机器学习无法创建 Azure Databricks 计算目标。 而必须由你自行创建一个 Azure Databricks 工作区,然后将其附加到 Azure 机器学习工作区。 若要创建工作区资源,请参阅在 Azure Databricks 中运行 Spark 作业文档。

若要从不同 Azure 订阅附加 Azure Databricks 工作区,你(你的 Microsoft Entra 帐户)必须被授予 Azure Databricks 工作区的“参与者”角色。 查看 Azure 门户中的访问权限。

要将 Azure Databricks 附加为计算目标,请提供以下信息:

  • Databricks 计算名称:要分配给此计算资源的名称。
  • Databricks 工作区名称:Azure Databricks 工作区的名称。
  • Databricks 访问令牌:用于对 Azure Databricks 进行身份验证的访问令牌。 若要生成访问令牌,请参阅身份验证文档。

以下代码演示如何使用 Azure 机器学习 SDK 将 Azure Databricks 附加为计算目标:

import os
from azureml.core.compute import ComputeTarget, DatabricksCompute
from azureml.exceptions import ComputeTargetException
databricks_compute_name = os.environ.get(
    "AML_DATABRICKS_COMPUTE_NAME", "<databricks_compute_name>")
databricks_workspace_name = os.environ.get(
    "AML_DATABRICKS_WORKSPACE", "<databricks_workspace_name>")
databricks_resource_group = os.environ.get(
    "AML_DATABRICKS_RESOURCE_GROUP", "<databricks_resource_group>")
databricks_access_token = os.environ.get(
    "AML_DATABRICKS_ACCESS_TOKEN", "<databricks_access_token>")
try:
    databricks_compute = ComputeTarget(
        workspace=ws, name=databricks_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('databricks_compute_name {}'.format(databricks_compute_name))
    print('databricks_workspace_name {}'.format(databricks_workspace_name))
    print('databricks_access_token {}'.format(databricks_access_token))
    # Create attach config
    attach_config = DatabricksCompute.attach_configuration(resource_group=databricks_resource_group,
                                                           workspace_name=databricks_workspace_name,
                                                           access_token=databricks_access_token)
    databricks_compute = ComputeTarget.attach(
        ws,
        databricks_compute_name,
        attach_config
    )
    databricks_compute.wait_for_completion(True)

有关更详细的示例,请参阅 GitHub 上的 示例笔记本。

请勿在工作区中为同一 Azure Databricks 创建多个同步附件。 每个新附件都会破坏先前存在的附件。

十、Azure Data Lake Analytics

Azure Data Lake Analytics 是 Azure 云中的大数据分析平台。 它可以用作 Azure 机器学习管道的计算目标。

使用该平台之前,请先创建 Azure Data Lake Analytics 帐户。 若要创建此资源,请参阅 Azure Data Lake Analytics 入门文档。

若要将 Data Lake Analytics 附加为计算目标,必须使用 Azure 机器学习 SDK 并提供以下信息:

  • 计算名称:要分配给此计算资源的名称。
  • 资源组:包含 Data Lake Analytics 帐户的资源组。
  • 帐户名称:Data Lake Analytics 帐户名。

以下代码演示如何将 Data Lake Analytics 附加为计算目标:

import os
from azureml.core.compute import ComputeTarget, AdlaCompute
from azureml.exceptions import ComputeTargetException
adla_compute_name = os.environ.get(
    "AML_ADLA_COMPUTE_NAME", "<adla_compute_name>")
adla_resource_group = os.environ.get(
    "AML_ADLA_RESOURCE_GROUP", "<adla_resource_group>")
adla_account_name = os.environ.get(
    "AML_ADLA_ACCOUNT_NAME", "<adla_account_name>")
try:
    adla_compute = ComputeTarget(workspace=ws, name=adla_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('adla_compute_name {}'.format(adla_compute_name))
    print('adla_resource_id {}'.format(adla_resource_group))
    print('adla_account_name {}'.format(adla_account_name))
    # create attach config
    attach_config = AdlaCompute.attach_configuration(resource_group=adla_resource_group,
                                                     account_name=adla_account_name)
    # Attach ADLA
    adla_compute = ComputeTarget.attach(
        ws,
        adla_compute_name,
        attach_config
    )
    adla_compute.wait_for_completion(True)

有关更详细的示例,请参阅 GitHub 上的 示例笔记本。

请勿在工作区中为同一 ADLA 创建多个同步附件。 每个新附件都会破坏先前存在的附件。

Azure 机器学习管道只能处理 Data Lake Analytics 帐户的默认数据存储中存储的数据。 如果需要处理的数据不在默认存储中,可以在训练之前使用 DataTransferStep复制数据。


十一、Azure 容器实例

Azure 容器实例 (ACI) 是在部署模型时动态创建的。 不能以任何其他方式创建 ACI 和将其附加到工作区。 有关详细信息,请参阅将模型部署到 Azure 容器实例。

十二、Kubernetes

Azure 机器学习提供了用于为训练和推理附加你自己的 Kubernetes 群集的选项。 请参阅配置 Kubernetes 群集以进行 Azure 机器学习。

若要从工作区分离 Kubernetes 群集,请使用以下方法:

compute_target.detach()
目录
相关文章
|
8天前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
55 7
|
6天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
8天前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
4月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
225 6
|
14天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
|
11天前
|
人工智能 编解码 算法
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
410 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
解锁机器学习的新维度:元学习的算法与应用探秘
元学习作为一个重要的研究领域,正逐渐在多个应用领域展现其潜力。通过理解和应用元学习的基本算法,研究者可以更好地解决在样本不足或任务快速变化的情况下的学习问题。随着研究的深入,元学习有望在人工智能的未来发展中发挥更大的作用。
|
2月前
|
机器学习/深度学习 算法 网络安全
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
64 14
|
3月前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
120 2

热门文章

最新文章