Azure Machine Learning에서 GitHub Actions 사용

적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)

Azure Machine Learning에서 모델을 학습하려면 GitHub Actions로 시작하세요.

이 문서에서는 기계 학습 모델을 빌드하고 Azure Machine Learning에 배포하는 GitHub Actions 워크플로를 만드는 방법을 설명합니다. NYC Taxi 데이터 세트에서 scikit-learn 선형 회귀 모델을 학습합니다.

GitHub Actions는 리포지토리의 /.github/workflows/ 경로에서 워크플로 YAML(.yml) 파일을 사용합니다. 이 정의에는 워크플로를 구성하는 다양한 단계 및 매개 변수가 포함됩니다.

필수 조건

이 문서의 단계를 수행하기 전에 다음과 같은 필수 구성 요소가 있는지 확인합니다.

  • Azure Machine Learning 작업 영역 리소스가 없으면 빠른 시작: 작업 영역 리소스 만들기 문서의 단계에서 리소스를 만듭니다.

  • Python SDK v2를 설치하려면 다음 명령을 사용합니다.

    pip install azure-ai-ml azure-identity
    

    기존 SDK 설치를 최신 버전으로 업데이트하려면 다음 명령을 사용합니다.

    pip install --upgrade azure-ai-ml azure-identity
    

    자세한 내용은 Azure Machine Learning용 Python SDK v2 설치를 참조하세요.

  • GitHub 계정. 없는 경우 평가판에 등록하세요.

1단계: 코드 받기

GitHub에서 다음 리포지토리를 포크합니다.

https://github.com/azure/azureml-examples

2단계: Azure로 인증

먼저 Azure로 인증하는 방법을 정의해야 합니다. 서비스 주체 또는 OpenID Connect를 사용할 수 있습니다.

배포 자격 증명 생성

Azure CLI에서 az ad sp create-for-rbac 명령을 사용하여 서비스 주체를 만듭니다. 이 명령은 Azure Portal에서 Azure Cloud Shell을 사용하거나 사용해 보세요 단추를 선택하여 실행합니다.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

매개 변수 --json-auth 는 Azure CLI 버전 >= 2.51.0에서 사용할 수 있습니다. 사용 중단 경고와 함께 사용하기 --sdk-auth 이전 버전입니다.

위의 예시에서 자리 표시자를 구독 ID, 리소스 그룹 이름 및 앱 이름으로 바꿉니다. 출력은 아래와 비슷한 App Service 앱에 대한 액세스를 제공하는 역할 할당 자격 증명이 있는 JSON 개체입니다. 나중에 사용할 수 있도록 이 JSON 개체를 복사합니다.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

비밀 만들기

  1. GitHub에서 리포지토리로 이동합니다.

  2. 탐색 메뉴에서 설정으로 이동합니다.

  3. 보안 > 비밀 및 변수 > 작업을 선택합니다.

    Screenshot of adding a secret

  4. 새 리포지토리 비밀을 선택합니다.

  5. Azure CLI 명령의 전체 JSON 출력을 비밀의 값 필드에 붙여넣습니다. 비밀 이름을 AZURE_CREDENTIALS으로 지정합니다.

  6. 비밀 추가를 선택합니다.

3단계: Azure Machine Learning 작업 영역에 연결하려면 setup.sh를 업데이트합니다.

작업 영역과 일치하도록 CLI 설정 파일 변수를 업데이트해야 합니다.

  1. 복제된 리포지토리에서 azureml-examples/cli/로 이동합니다.

  2. setup.sh를 편집하고 파일에서 이러한 변수를 업데이트합니다.

    변수 설명
    GROUP 리소스 그룹의 이름
    위치 작업 영역의 위치(예: eastus2)
    작업 영역 Azure Machine Learning 작업 영역의 이름

4단계: 컴퓨팅 클러스터 이름으로 pipeline.yml 업데이트

파일을 사용하여 pipeline.yml Azure Machine Learning 파이프라인을 배포합니다. 이는 DevOps 파이프라인이 아니라 기계 학습 파이프라인입니다. 컴퓨터 클러스터 이름에 cpu-cluster가 아닌 다른 이름을 사용하는 경우에만 이 업데이트를 수행해야 합니다.

  1. 복제된 리포지토리에서 azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml로 이동합니다.
  2. compute: azureml:cpu-cluster가 표시될 때마다 컴퓨팅 클러스터 이름으로 cpu-cluster 값을 업데이트합니다. 예를 들어 클러스터 이름이 my-cluster인 경우 새 값은 azureml:my-cluster가 됩니다. 5개의 업데이트가 있습니다.

5단계: GitHub Actions 워크플로 실행

워크플로는 Azure를 사용하여 인증하고, Azure Machine Learning CLI를 설정하고, CLI를 사용하여 Azure Machine Learning에서 모델을 학습합니다.

워크플로 파일은 트리거 섹션 및 작업으로 구성됩니다.

  • 트리거는 on 섹션에서 워크플로를 시작합니다. 워크플로는 기본적으로 cron 일정과 일치하는 분기 및 경로에서 끌어오기 요청이 이루어지는 경우에 실행됩니다. 워크플로를 트리거하는 이벤트에 대해 자세히 알아봅니다.
  • 워크플로의 작업 섹션에서 코드를 체크 아웃하고 서비스 주체 비밀을 사용하여 Azure에 로그인합니다.
  • 작업 섹션에는 Machine Learning CLI(v2)를 설치 및 설정하는 설치 작업도 포함되어 있습니다. CLI가 설치되면 작업 실행 작업은 Azure Machine Learning pipeline.yml 파일을 실행하여 NYC 택시 데이터를 사용하여 모델을 학습시킵니다.

워크플로 사용

  1. 복제된 리포지토리에서 .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml을 열고 워크플로가 다음과 같은지 확인합니다.

    name: cli-jobs-pipelines-nyc-taxi-pipeline
    on:
      workflow_dispatch:
      schedule:
        - cron: "0 0/4 * * *"
      pull_request:
        branches:
          - main
          - sdk-preview
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v2
        - name: azure login
          uses: azure/login@v1
          with:
            creds: ${{secrets.AZURE_CREDENTIALS}}
        - name: setup
          run: bash setup.sh
          working-directory: cli
          continue-on-error: true
        - name: run job
          run: bash -x ../../../run-job.sh pipeline.yml
          working-directory: cli/jobs/pipelines/nyc-taxi
    
  2. 보기 실행을 선택합니다.

  3. 내 워크플로를 이해하고 계속 진행합니다를 선택하여 워크플로를 사용하도록 설정합니다.

  4. cli-jobs-pipelines-nyc-taxi-pipeline 워크플로를 선택하고 워크플로 활성화를 선택합니다. Screenshot of enable GitHub Actions workflow.

  5. 워크플로 실행을 선택하고 지금 워크플로 실행 옵션을 선택합니다. Screenshot of run GitHub Actions workflow.

6단계: 워크플로 실행 확인

  1. 완료된 워크플로 실행을 열고 빌드 작업이 성공적으로 실행되었는지 확인합니다. 작업 옆에 녹색 확인 표시가 표시됩니다.

  2. Azure Machine Learning 스튜디오 열고 nyc-taxi-pipeline-example로 이동합니다. 작업의 각 부분(준비, 변환, 학습, 예측, 점수 매기기)이 완료되었고 녹색 확인 표시가 표시되는지 확인합니다.

    Screenshot of successful Machine Learning Studio run.

리소스 정리

리소스 그룹 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹 및 GitHub 리포지토리를 삭제하여 배포한 리소스를 클린.

다음 단계