다음을 통해 공유


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) 파일을 사용합니다. 이 정의는 워크플로를 구성하는 다양한 단계와 매개 변수를 포함합니다.

필수 조건

  • GitHub 계정. 아직 없는 경우 무료 계정을 만들 수 있습니다.

1단계: 코드 받기

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

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

포크된 리포지토리를 로컬로 복제합니다.

git clone https://github.com/YOUR-USERNAME/azureml-examples

2단계: Azure로 인증

먼저 Azure를 사용하여 인증하는 방법을 정의합니다. Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID와 함께 OpenID Connect를 사용하여 로그인하는 것이 좋습니다. 필요한 경우 서비스 주체 및 비밀을 사용하여 로그인을 사용할 수도 있습니다. 이 방법은 보안이 떨어지며 권장되지 않습니다.

배포 자격 증명 생성

OIDC에서 Azure 로그인 작업을 사용하려면 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 페더레이션 ID 자격 증명을 구성해야 합니다.

옵션 1: Microsoft Entra 애플리케이션

옵션 2: 사용자 할당 관리 ID

비밀 만들기

로그인 작업에 애플리케이션의 클라이언트 ID, 디렉터리(테넌트) ID구독 ID 를 제공해야 합니다. 이러한 값은 워크플로에서 직접 제공하거나 GitHub 비밀에 저장하고 워크플로에서 참조할 수 있습니다. 값을 GitHub 비밀로 저장하는 것이 더 안전한 옵션입니다.

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

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

    비밀 추가 스크린샷

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

    참고

    공용 리포지토리에서 워크플로 보안을 강화하려면 리포지토리 비밀 대신 환경 비밀을 사용합니다. 환경에 승인이 필요한 경우 필수 검토자 중 한 명이 승인할 때까지 작업에서 환경 비밀에 액세스할 수 없습니다.

  4. AZURE_CLIENT_ID, AZURE_TENANT_IDAZURE_SUBSCRIPTION_ID에 대한 비밀을 만듭니다. GitHub 비밀에 대한 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 다음 값을 복사합니다.

    GitHub 비밀 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID
    AZURE_CLIENT_ID 클라이언트 ID
    AZURE_SUBSCRIPTION_ID 구독 ID
    AZURE_TENANT_ID 디렉터리(테넌트) ID

    참고

    보안상의 이유로 워크플로에 직접 값을 전달하는 대신 GitHub 비밀을 사용하는 것이 좋습니다.

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

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

  1. 포크된 리포지토리에서 azureml-examples/cli/로 이동하십시오.

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

    변수 설명
    GROUP 리소스 그룹의 이름
    LOCATION 작업 영역의 위치(예: eastus2)
    WORKSPACE 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 일정과 일치하는 분기 및 경로에서 끌어오기 요청이 이루어지는 경우에 실행됩니다. 워크플로를 트리거하는 이벤트에 대해 자세히 알아봅니다.
  • 워크플로의 작업 섹션에서 OpenID Connect를 사용하여 Azure 로그인 작업을 사용하여 코드를 체크 아웃하고 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
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    permissions:
      id-token: write
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v4
        - name: azure login
          uses: azure/login@v2
          with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - 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 워크플로를 선택하고 워크플로 활성화를 선택합니다.

    GitHub Actions 워크플로 사용 스크린샷.

  5. 워크플로 실행을 선택하고 지금 워크플로 실행 옵션을 선택합니다.

    GitHub Actions 워크플로 실행 스크린샷.

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

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

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

    성공적인 Machine Learning Studio 실행 스크린샷.

리소스 정리

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

다음 단계