적용 대상: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 v2용 Azure Machine Learning SDK. SDK를 설치하려면 다음 명령을 사용합니다.
pip install azure-ai-ml azure-identity
기존 SDK 설치를 최신 버전으로 업데이트하려면 다음 명령을 사용합니다.
pip install --upgrade azure-ai-ml azure-identity
자세한 내용은 Python용 Azure Machine Learning 패키지 클라이언트 라이브러리를 참조하세요.
- 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 애플리케이션
- Azure Portal, Azure CLI 또는 Azure PowerShell에서 서비스 주체를 사용하여 Microsoft Entra 애플리케이션을 만듭니다.
- 클라이언트 ID, 구독 ID 및 디렉터리(테넌트) ID의 값을 복사하여 나중에 GitHub Actions 워크플로에서 사용합니다.
- Azure Portal, Azure CLI 또는 Azure PowerShell을 통해 서비스 주체에 적절한 역할을 할당합니다.
- GitHub Actions에서 발급한 토큰을 GitHub 리포지토리에 신뢰하도록 Microsoft Entra 애플리케이션 에서 페더레이션 ID 자격 증명을 구성합니다.
옵션 2: 사용자 할당 관리 ID
- 사용자 할당 관리 ID 만들기의 지침에 따라 만듭니다.
- 클라이언트 ID, 구독 ID 및 디렉터리(테넌트) ID의 값을 복사하여 나중에 GitHub Actions 워크플로에서 사용합니다.
- 사용자 할당 관리 ID에 적절한 역할을 할당합니다.
- GitHub Actions에서 발급한 토큰을 GitHub 리포지토리에 신뢰하도록 사용자 할당 관리 ID에서 페더레이션 ID 자격 증명을 구성합니다.
비밀 만들기
로그인 작업에 애플리케이션의 클라이언트 ID, 디렉터리(테넌트) ID 및 구독 ID 를 제공해야 합니다. 이러한 값은 워크플로에서 직접 제공하거나 GitHub 비밀에 저장하고 워크플로에서 참조할 수 있습니다. 값을 GitHub 비밀로 저장하는 것이 더 안전한 옵션입니다.
GitHub에서 리포지토리로 이동합니다.
보안 > 비밀 및 변수 > 작업을 선택합니다.
새 리포지토리 비밀을 선택합니다.
참고 항목
공용 리포지토리에서 워크플로 보안을 강화하려면 리포지토리 비밀 대신 환경 비밀을 사용합니다. 환경에 승인이 필요한 경우 필수 검토자 중 한 명이 승인할 때까지 작업에서 환경 비밀에 액세스할 수 없습니다.
AZURE_CLIENT_ID
,AZURE_TENANT_ID
및AZURE_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 설정 파일 변수를 업데이트해야 합니다.
포크된 리포지토리에서
azureml-examples/cli/
(으)로 이동합니다.setup.sh
를 편집하고 파일에서 이러한 변수를 업데이트합니다.변수 설명 그룹 리소스 그룹의 이름 위치 작업 영역의 위치(예: eastus2
)작업 영역 Azure Machine Learning 작업 영역의 이름
4단계: 컴퓨팅 클러스터 이름으로 pipeline.yml
업데이트
파일을 사용하여 pipeline.yml
Azure Machine Learning 파이프라인을 배포합니다. 파이프라인은 DevOps 파이프라인이 아닌 기계 학습 파이프라인입니다. 컴퓨터 클러스터 이름에 cpu-cluster
가 아닌 다른 이름을 사용하는 경우에만 이 업데이트를 수행해야 합니다.
- 포크된 리포지토리에서
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
(으)로 이동합니다. -
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 택시 데이터를 사용하여 모델을 학습시킵니다.
워크플로 사용
포크된 리포지토리에서
.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@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
보기 실행을 선택합니다.
내 워크플로를 이해하고 계속 진행합니다를 선택하여 워크플로를 사용하도록 설정합니다.
cli-jobs-pipelines-nyc-taxi-pipeline 워크플로를 선택하고 워크플로 활성화를 선택합니다.
워크플로 실행을 선택하고 지금 워크플로 실행 옵션을 선택합니다.
6단계: 워크플로 실행 확인
완료된 워크플로 실행을 열고 빌드 작업이 성공적으로 실행되었는지 확인합니다. 작업 옆에 녹색 확인 표시가 표시됩니다.
Azure Machine Learning 스튜디오 열고 nyc-taxi-pipeline-example로 이동합니다. 작업의 각 부분(준비, 변환, 학습, 예측, 점수 매기기)이 완료되었고 녹색 확인 표시가 표시되는지 확인합니다.
리소스 정리
리소스 그룹 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹과 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.