Azure机器学习——计算目标02:使用 Python SDK配置Azure机器学习计算目标(下)

使用 Python SDK配置Azure机器学习计算目标(下)

  • 远程虚拟机
  • Azure HDInsight
  • 总结

本节承接上节: Azure机器学习——计算目标01:使用 Python SDK配置Azure机器学习计算目标(上),主要介绍 使用Python SDK来配置远程虚拟机和Azure HDInsight这两种计算目标
Azure机器学习——计算目标02:使用 Python SDK配置Azure机器学习计算目标(下)_第1张图片
图1 配置Azure机器学习计算目标

一般来说,配置上面提到的计算目标都遵循以下工作流:

  1. 创建所需要的计算目标。
  2. 附加已有的计算目标(Azure机器学习计算集群)或者将计算目标附加到工作区(VM)。
  3. 配置计算目标,使其包含脚本所需的 Python 环境和包依赖项。

远程虚拟机

Azure 机器学习还支持将自己的计算资源附加到工作区。任何远程 VM(只要可从 Azure 机器学习访问)都可以作为这种计算资源。 该资源可以是 Azure VM,也可以是组织内部或本地的远程服务器。 具体而言,在指定IP 地址和凭据(用户名和密码,或 SSH 密钥)的情况下,你可以使用这些VM执行远程训练任务。
你可以使用系统自带的 conda 环境、已有的 Python 环境或者 Docker 容器。 若要在 Docker 容器中执行计算任务,你必须在 VM 上安装 Docker 引擎。 当你需要一个比本地计算机更灵活的基于云的开发/试验环境时,这个功能会特别有用。
接下来通过Azure Data Science Virtual Machine (DSVM)这种规格的VM来演示。这种 VM 在 Azure 中预配置了数据科学和 AI 开发环境。 它提供了合适的工具和框架来满足整个机器学习开发生命周期的需求。 有关如何将 DSVM 与 Azure 机器学习配合使用的详细信息,请参阅Azure机器学习——配置 Azure 机器学习开发环境。

  1. 创建:首先你需要有一台DSVM,如果没有请先创建。创建方法:快速入门:设置适用于 Linux (Ubuntu) 的 Data Science Virtual Machine。
    注意:Azure 机器学习仅支持运行 Ubuntu 的虚拟机。 创建 VM 或选择现有 VM 时,必须选择使用 Ubuntu 的 VM。
    Azure机器学习——计算目标02:使用 Python SDK配置Azure机器学习计算目标(下)_第2张图片
    图2 在Azure门户中新建Data Science Virtual Machine - Linux (Ubuntu)

Azure机器学习——计算目标02:使用 Python SDK配置Azure机器学习计算目标(下)_第3张图片
图3 创建DSVM过程中需要设置凭据(用户名和密码)

  1. 附加: 要将现有虚拟机附加到计算目标,必须为虚拟机提供完全限定的域名 (FQDN)、用户名和密码。 在本示例中,请将fqdn替换为 VM 的 FQDN,或替换为公共 IP 地址。 请将 username和 password替换为 VM 的 SSH 用户名和密码(创建DSVM时设置)。
    Azure机器学习——计算目标02:使用 Python SDK配置Azure机器学习计算目标(下)_第4张图片
    图4 DSVM启动后会被分配一个公共IP
    注意:一定要是Ubuntu 的DSVM,其他VM运行下面代码不会成功。
from azureml.core.compute import RemoteCompute, ComputeTarget

# Create the compute config 
compute_target_name = "attach-dsvm"
attach_config = RemoteCompute.attach_configuration(address='fqdn',
                                                 ssh_port=22,
                                                 username='username',
                                                 password="password")
# If in US East, US West 2, or US South Central, use the following instead:
# attach_config = RemoteCompute.attach_configuration(resource_id='',
#                                                 ssh_port=22,
#                                                 username='',
#                                                 password="")

# If you authenticate with SSH keys instead, use this code:
#                                                  ssh_port=22,
#                                                  username='',
#                                                  password=None,
#                                                  private_key_file="",
#                                                  private_key_passphrase="")

# Attach the compute
compute = ComputeTarget.attach(ws, compute_target_name, attach_config)

compute.wait_for_completion(show_output=True)

运行成功后,可以从Azure门户中查看到已附加的计算目标。Azure机器学习——计算目标02:使用 Python SDK配置Azure机器学习计算目标(下)_第5张图片
图5 成功将DSVM添加到Azure机器学习计算目标

  1. 配置:为 DSVM 计算目标创建运行配置。 使用Docker 和 conda 为 DSVM 创建和配置训练环境。
import azureml.core
from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies

run_dsvm = RunConfiguration(framework = "python")

# Set the compute target to the Linux DSVM
run_dsvm.target = compute_target_name 

# Use Docker in the remote VM
run_dsvm.environment.docker.enabled = True

# Use the CPU base image 
# To use GPU in DSVM, you must also use the GPU base Docker image "azureml.core.runconfig.DEFAULT_GPU_IMAGE"
run_dsvm.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE
print('Base Docker image is:', run_dsvm.environment.docker.base_image)

# Specify the CondaDependencies object
run_dsvm.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])

上述环境配置在AzureChinaCloud和Azure Global都可以运行,但是因为conda和pip源的问题,AzureChinaCloud在创建docker镜像的时候可能会慢一些。如果想更改源请参考Azure机器学习——配置 Azure 机器学习Python环境。
指定好计算目标后,下一步是配置环境和提交训练运行。可参考Azure机器学习——训练01:通过RunConfiguration 对象和ScriptRunConfig 对象训练模型。

Azure HDInsight

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

  1. 创建:在使用 HDInsight集群训练模型之前,需要先创建该集群。 若要在 HDInsight 集群中创建 Spark,请参阅在 HDInsight 中创建 Spark 集群。
    创建集群时,需要设置 SSH 用户名和密码。 请记下这些值,之后在将 HDInsight 用作计算目标时需要用到这些值。
    创建集群后,使用主机名 clustername-ssh.azurehdinsight.net 连接到该集群,其中,clustername是该集群的名称。
  2. 附加: 要将 HDInsight 集群附加到计算目标,必须为 HDInsight 集群提供主机名、用户名和密码。 下面的示例使用 SDK 将集群附加到工作区。 在该示例中,请将 clustername替换为集群名称。 请将 username 和 password替换为集群的 SSH 用户名和密码。
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(address='clustername-ssh.azurehdinsight.net', 
                                                       ssh_port=22, 
                                                       username='ssh-username', 
                                                       password='ssh-pwd')
 # If you are in US East, US West 2, or US South Central, use the following instead:
 # attach_config = HDInsightCompute.attach_configuration(resource_id='',
 #                                                      ssh_port=22, 
 #                                                      username='', 
 #                                                      password='')
 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)
  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

上述环境配置在AzureChinaCloud和Azure Global都可以运行,但是因为conda和pip源的问题,AzureChinaCloud在创建docker镜像的时候可能会慢一些。如果想更改源请参考Azure机器学习——配置 Azure 机器学习Python环境。
指定好计算目标后,下一步是配置环境和提交训练运行。可参考Azure机器学习——训练01:通过RunConfiguration 对象和ScriptRunConfig 对象训练模型。

总结

本节主要介绍了使用Python SDK来配置远程虚拟机和Azure HDInsight这两种计算目标。

你可能感兴趣的:(Azure机器学习,机器学习,azure,machine,learning,人工智能,python)