使用 GitHub Actions 进行模型训练

已完成

GitHub Actions 是一个平台,让你能够自动执行由 GitHub 存储库中发生的事件触发的任务。 GitHub Actions 工作流由作业组成。 作业将一组你可以定义的步骤分组在一起。 其中一个步骤可以使用 CLI (v2) 运行 Azure 机器学习作业来训练模型

若要使用 GitHub Actions 自动执行模型训练,需要:

  • 使用 Azure CLI 创建服务主体。
  • 将 Azure 凭据存储在 GitHub 机密中。
  • 在 YAML 中定义 GitHub 操作。

创建服务主体

使用 GitHub Actions 自动执行 Azure 机器学习作业时,需要使用服务主体对 GitHub 进行身份验证以管理 Azure 机器学习工作区。 例如,要使用 Azure 机器学习计算训练模型,你或你使用的任何工具都需要获得使用该计算的授权。

提示

详细了解如何使用 GitHub Actions 连接到 Azure

存储 Azure 凭据

需要进行身份验证的 Azure 凭据不应存储在代码或纯文本中,而是应该存储在 GitHub 机密中。

若要将机密添加到 GitHub 存储库:

  1. 导航至 Settings 选项卡。

    GitHub 存储库中“设置”选项卡的屏幕截图。

  2. 在“设置”选项卡的“安全性”下,展开“机密”选项,并选择“操作”

    “安全性”部分中“机密”选项的屏幕截图。

  3. 输入 Azure 凭据作为机密并将该机密命名为 AZURE_CREDENTIALS

  4. 若要在 GitHub 操作中使用包含 Azure 凭据的机密,请参阅 YAML 文件中的机密。

    on: [push]
    
    name: Azure Login Sample
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Log in with Azure
            uses: azure/login@v1
            with:
              creds: '${{secrets.AZURE_CREDENTIALS}}'
    

定义 GitHub 操作

若要定义工作流,需要创建 YAML 文件。 可以手动触发训练模型的工作流,也可以使用推送事件触发。 手动触发工作流非常适合测试,而使用事件自动触发工作流更适合自动化。

若要配置 GitHub Actions 工作流,以便可以手动触发它,请使用 on: workflow_dispatch。 若要使用推送事件触发工作流,请使用 on: [push]

触发 GitHub Actions 工作流后,可以向作业添加各种步骤。 例如,可以使用步骤运行 Azure 机器学习作业:

name: Manually trigger an Azure Machine Learning job

on:
  workflow_dispatch:

jobs:
  train-model:
    runs-on: ubuntu-latest
    steps:
    - name: Trigger Azure Machine Learning job
      run: |
        az ml job create --file src/job.yml