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

目录

  • 一、环境准备
  • 二、工作区限制
  • 三、什么是计算目标?
  • 四、本地计算机
  • 五、远程虚拟机
  • 六、Apache Spark 池
  • 七、Azure HDInsight
  • 八、Azure Batch
  • 九、Azure Databricks
  • 十、Azure Data Lake Analytics
  • 十一、Azure 容器实例
  • 十二、Kubernetes

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

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

一、环境准备

  • Azure 机器学习工作区。 有关详细信息,请参阅创建工作区资源。

  • 机器学习服务的 Azure CLI 扩展、Azure 机器学习 Python SDK 或 Azure 机器学习 Visual Studio Code 扩展。


二、工作区限制

  • 请勿在工作区中为同一计算创建多个同步附件。 例如,使用两个不同的名称将一个 Azure Kubernetes 服务群集附加到工作区。 每个新附件都会破坏先前存在的附件。

    如果要重新附加计算目标来实现某个目的(例如,更改 TLS 或其他群集配置设置),则必须先删除现有附件。


三、什么是计算目标?

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


四、本地计算机

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

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


五、远程虚拟机

file
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/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Compute/virtualMachines/<vm_name>

    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)
    

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

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

  3. 配置:为 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 池

file
通过 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/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.HDInsight/clusters/<cluster_name>
    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

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

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

compute_target.detach()

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/123153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11-Docker-Redis集群部署

00-前言 在工作环境中&#xff0c;我们常常被要求配置多种集群&#xff0c;Redis 集群是最常见的入门需要掌握的集群配置方法&#xff0c;在之前的学习中&#xff0c;我们学习掌握了分布式存储的算法&#xff0c;本质上集群的部署就是通过分布式存储算法将数据分发部署好的不同…

windows上 Nexus 批量上传 maven依赖npm依赖

windows上 Nexus 批量上传 maven依赖/npm依赖 前言&#xff1a;windows系统上要有git环境&#xff0c;不然sh文件执行不了 1.批量上传maven依赖 设置脚本&#xff0c;把脚本放在依赖包的根目录执行&#xff0c;脚本名为upload.sh #!/bin/bash# 定义变量 while getopts &quo…

零信任安全:构建无懈可击的网络防护体系

随着网络技术的飞速发展&#xff0c;信息安全问题日益凸显&#xff0c;传统的安全防护手段已经无法满足复杂多变的安全需求。在此背景下&#xff0c;零信任安全模型逐渐受到广泛关注。本文将探讨零信任安全的概念、优势以及如何构建无懈可击的网络防护体系。 一、零信任安全概念…

Flink(三)【运行时架构】

前言 今天学习 Flink 的一些原理性的东西&#xff0c;比较偏概念&#xff0c;但是十分重要。有人觉得上来框框敲代码才能学到东西&#xff0c;那是狗屁不通的道理&#xff08;虽然我以前也这么认为&#xff09;。个人认为&#xff0c;学习 JavaEE那些框架&#xff0c;你上来就敲…

图的基本操作

基本操作 Adjacent(G,x,y):判断图G是否存在边<x,y>或(x,y)Neighbors(G,x):列出图G中与结点x邻接的边InsertVertex(G,x):在图G中插入顶点xDeleteVertex(G,x):从图G中删除顶点xAddEdge(G,x,y):若无向边(x,y)或有向边<x,y>不存在&#xff0c;则向图G中添加该边Remove…

安卓学习记录

文章目录 Text_View基础属性字体阴影跑马灯**activity_main.xml**MyTextview button Text_View ctrl右键可以看到属性 代码整理采用的快捷键是ctrlaltL(电脑qq锁定快捷键&#xff0c;退一下qq就行了) 基础属性 字体阴影 <?xml version"1.0" encoding"utf-…

网络安全深入学习第八课——代理与端口转发

文章目录 一、什么是代理二、正向代理三、反向代理四、正向和反向代理模拟复现 一、什么是代理 代理服务器英文全称是Proxy Server&#xff0c;其功能就是代理网络用户去取得网络信息。 形象的说&#xff1a;它是网络信息的中转站。在一般情况下&#xff0c;我们使用网络浏览…

PyCharm 无法登陆 Codeium 的解决方法

PyCharm 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述PyCharm 使用 token 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述 使用 PyCharm 登录 Codeium 时&#xff0c;单击 Login 无反应&#xff0c;单击侧边栏的 Codeium 图标也一直显示连接失败。 PyCharm 使用 to…

RHCE8 资料整理(五)

RHCE8 资料整理 第五篇 系统管理第18章 进程管理18.1 进程介绍18.2 查看进程18.3 向进程发送信号18.4 进程优先级 第19章 日志19.1 rsyslog的配置19.2 查看日志 第20章 网络时间服务器20.1 时间同步必要性20.2 配置时间服务器20.3 配置客户端 第21章 计划任务21.1 at21.2 cront…

基于Pytorch框架的LSTM算法(一)——单维度单步滚动预测(2)

#项目说明&#xff1a; 说明&#xff1a;1time_steps滚动预测代码 y_norm scaler.fit_transform(y.reshape(-1, 1)) y_norm torch.FloatTensor(y_norm).view(-1)# 重新预测 window_size 12 future 12 L len(y)首先对模型进行训练&#xff1b; 然后选择所有数据的后wind…

如何做游戏软件开发?怎么和软件开发公司合作?

随着科技的发展和普及&#xff0c;游戏软件已经成为人们日常生活和工作中不可或缺的一部分&#xff0c;许多企业也开始涉足游戏软件开发领域&#xff0c;希望能够打造出一款受欢迎的游戏&#xff0c;那么&#xff0c;如何做游戏软件开发?怎么和软件开发公司合作呢?下面我们来…

cmake vs2022编译opencv4.5.2 x86 版本

cmake 编译opencv 452 x86 版本 where is the source code 选项放置你的源文件 where to build the binaries 放置你生成结果的文件夹 点击按钮Configure,弹出提示&#xff0c;选择Win32&#xff0c;finishi 等待生成 列表中出现红色的选项&#xff0c;根据你的需要取消或…

Django框架简介

文章目录 Django框架介绍MVC与MVT模型MVCMTV 版本问题运行django注意事项 Django的下载与基本命令下载Django方式一&#xff1a;在命令界面使用pip安装方式二&#xff1a;使用pycharm安装 Django的基础命令命令行操作pycharm操作 Django项目命令行操作与Pycharm操作的区别应用D…

关于变电站综合自动化系统的案例应用分析-安科瑞 蒋静

摘 要&#xff1a;变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计&#xff0c;利用先进的计算机技术、通信技术、信号处理技术&#xff0c;实现对全变电站的主要设备和输、配电线路的自动监视、测量、控制、保护、并与上级调度通信的综合性自动化功能。 …

浏览器加get请求导致参数+变空格

场景: 参数有号。取值也取的正确数值&#xff0c;但是传到后台 号就变成了空格 在传参的时候在参数外面包一层encodeURIComponent即可 encodeURIComponent(this.chooseRow.offerId)

SDL2 简单介绍以及Windows开发环境搭建

1.简介 SDL&#xff08;Simple DirectMedia Layer&#xff09;是一个跨平台的多媒体开发库&#xff0c;使用C语言写成&#xff0c;用于实现音频、图形、输入以及窗口功能的处理。它提供了一个简单、易用的API&#xff0c;可以帮助开发者快速构建跨平台的多媒体应用程序。 SDL…

蓝桥杯练习

即约分数 题目 思路 遍历所有的x&#xff0c;y&#xff0c;判断x/y是不是即越约分数。 代码 #include <iostream> using namespace std; int gcd(int x,int y) {int r;while(y!0){rx%y;xy;yr;}return x; } int main() {// 请在此输入您的代码int sum4039;//1/y和x/1都…

Vue 循环el-select 并且不能重复选择相同数据

根据已选择的属性 , 禁用相同属性的选项 ,如果重复则不能再选择 <template><div class"container"><h3>需求&#xff1a;一共4台车 每人只能选择不一样的车 选过的不能再选</h3><divv-for"(item, index) in person.model.selectList…

Microsoft Dynamics 365 CE 扩展定制 - 9. Dynamics 365扩展

在本章中,我们将介绍以下内容: Dynamics 365应用程序Dynamics 365通用数据服务构建Dynamics 365 PowerApp使用Flow在CDS和Dynamics 365之间移动数据从AppSource安装解决方案使用数据导出服务解决方案进行数据复制从CRM数据构建Power BI仪表板简介 多年来,Dynamics CRM已从一…

【遮天】荒古禁地采取圣药,姬老自己走上绝路,故事扣人心悬

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料&#xff0c;《遮天》动漫第30话最新剧情解析&#xff0c;姬云峰&#xff0c;姬家的长老&#xff0c;地位崇高&#xff0c;深受家族成员的尊敬和信赖。他的智慧和经验在家族中享有极高的声望&#xf…