教程:开始在 Azure 机器学习中使用 Python 脚本(SDK v1,第 1 部分,共 3 部分)

适用于:Python SDK azureml v1

在本教程中,你将使用 Azure 机器学习在云中运行第一个 Python 脚本。 本教程是由两个部分构成的教程系列的第 1 部分

本教程避免了训练机器学习模型的复杂性。 你将在云中运行“Hello World”Python 脚本。 你将了解如何使用控制脚本在 Azure 机器学习中配置和创建一个运行。

在本教程中,将:

  • 创建并运行“Hello World!”Python 脚本。
  • 创建一个 Python 控制脚本,将“Hello world!”提交到 Azure 机器学习。
  • 了解控制脚本中的 Azure 机器学习概念。
  • 提交并运行“Hello world!”脚本。
  • 在云中查看代码输出。

先决条件

创建并运行一个 Python 脚本

本教程将使用计算实例作为开发计算机。 首先创建几个文件夹和脚本:

  1. 登录 Azure 机器学习工作室,然后选择工作区(如果出现提示)。
  2. 在左侧选择“笔记本”
  3. 在“文件”工具栏中,选择“+”,然后选择“创建新文件夹”。 屏幕截图显示在工具栏中创建新的文件夹工具。
  4. 将文件夹命名为“get-started”。
  5. 在文件夹名称的右侧,使用“...”在 get-started 下创建另一个文件夹 。 屏幕截图显示创建子文件夹菜单。
  6. 将新文件夹命名为“src”。 如果文件位置不正确,请使用“编辑位置”链接
  7. 在 src 文件夹的右侧,使用“...”在 src 文件夹中创建新文件 。
  8. 将文件命名为“hello.py”。 将“文件类型”切换为 Python (.py)*。

将以下代码复制到文件中:

# src/hello.py
print("Hello world!")

你的项目文件夹结构现在将如下所示:

文件夹结构显示 src 子文件夹中的 hello.py。

测试你的脚本

可以在本地运行代码,在本例中意味着在计算实例上运行。 在本地运行代码具有可对代码进行交互式调试的好处。

如果之前已停止计算实例,现在使用计算下拉列表右侧“开始计算”工具启动它。 等待大约一分钟,状态更改为“正在运行”。

屏幕截图显示正在启动计算实例(如果已停止)

选择“保存并在终端中运行脚本”来运行脚本。

屏幕截图显示工具栏中的“保存并在终端中运行脚本”工具

将在打开的终端窗口中看到该脚本的输出。 关闭选项卡,选择“终止”以关闭会话。

创建控制脚本

通过“控制脚本”,你可以在不同的计算资源上运行 hello.py 脚本。 可以使用控制脚本来控制如何运行以及在何处运行机器学习代码。

选择“get-started”文件夹末尾的“...”,创建新文件 。 创建名为 run-hello.py 的新 Python 文件,然后将以下代码复制并粘贴到该文件中:

# get-started/run-hello.py
from azureml.core import Workspace, Experiment, Environment, ScriptRunConfig

ws = Workspace.from_config()
experiment = Experiment(workspace=ws, name='day1-experiment-hello')

config = ScriptRunConfig(source_directory='./src', script='hello.py', compute_target='cpu-cluster')

run = experiment.submit(config)
aml_url = run.get_portal_url()
print(aml_url)

提示

如果在创建计算群集时使用了其他名称,请确保也调整代码中 compute_target='cpu-cluster' 的名称。

了解代码

下面是有关控制脚本工作方式的说明:

ws = Workspace.from_config()

工作区连接到你的 Azure 机器学习工作区,以便你可以与 Azure 机器学习资源通信。

experiment = Experiment( ... )

可以通过试验轻松地将多个作业组织到单个名称下。 稍后,你可以了解如何使用试验轻松地在数十个作业之间比较指标。

config = ScriptRunConfig( ... )

ScriptRunConfig 包装你的 hello.py 代码并将其传递到你的工作区。 顾名思义,你可以使用此类来配置你希望脚本如何在 Azure 机器学习中运行。 此类还会指定该脚本将会在哪个计算目标上运行。 在此代码中,目标是在设置教程中创建的计算群集。

run = experiment.submit(config)

提交脚本。 此提交被称为运行。 在 v2 中,它已重命名为一项作业。 运行/作业会封装代码的单次执行。 可以使用作业来监视脚本进度、捕获输出、分析结果、将指标可视化等。

aml_url = run.get_portal_url()

run 对象提供了一个便于执行你的代码的句柄。 可以使用从 Python 脚本输出的 URL 从 Azure 机器学习工作室中监视代码执行进度。

在云中提交并运行代码

  1. 选择“保存并在终端中运行脚本”运行你的控制脚本,该脚本继而会在设置教程中创建的计算群集上运行 hello.py

  2. 在终端中,系统可能会要求你登录以进行身份验证。 复制代码,然后访问链接完成此步骤。

  3. 经过身份验证后,终端中会显示一个链接。 选择该链接以查看作业。

在工作室的云中监视代码

来自脚本的输出中将包含一个指向工作室的链接,该链接类似于:https://studio.ml.azure.cn/experiments/hello-world/runs/<run-id>?wsid=/subscriptions/<subscription-id>/resourcegroups/<resource-group>/workspaces/<workspace-name>

访问该链接。 首先,你会看到状态为“已排队”或“正在准备”。 第一个运行需要 5-10 分钟才能完成。 这是因为发生了以下情况:

  • docker 映像在云中构建
  • 计算群集的大小从 0 个节点调整到 1 个节点
  • docker 映像被下载到该计算。

由于 docker 映像已缓存在计算中,因此后续作业更快(约 15 秒)。 可以通过在第一次作业完成后重新提交以下代码来进行测试。

请等待大约 10 分钟。 你将看到一条消息,指出作业已完成。 然后使用“刷新”,查看状态更改为“已完成”。 作业完成后,转到“输出 + 日志”选项卡。可以在 user_logs 文件夹中看到 std_log.txt 文件。 脚本的输出保存在此文件中。

azureml-logssystem-logs 文件夹包含可在云中调试远程作业时使用的文件。

下一步

在本教程中,你使用了一个简单的“Hello world!”脚本并在 Azure 上运行了它。 你了解了如何连接到 Azure 机器学习工作区、如何创建试验,以及如何将 hello.py 代码提交到云中。

在接下来的教程中,你将在这些知识的基础上通过运行比 print("Hello world!") 更有趣的脚本来进一步学习。

注意

如果你想就此完成本教程系列,不再继续进行下一步,请记得清理你的资源