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
포크된 리포지토리를 로컬로 복제합니다.
git clone https://github.com/YOUR-USERNAME/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>",
(...)
}
비밀 만들기
GitHub에서 리포지토리로 이동합니다.
탐색 메뉴에서 설정으로 이동합니다.
보안 > 비밀 및 변수 > 작업을 선택합니다.
새 리포지토리 비밀을 선택합니다.
Azure CLI 명령의 전체 JSON 출력을 비밀의 값 필드에 붙여넣습니다. 비밀 이름을
AZURE_CREDENTIALS
으로 지정합니다.비밀 추가를 선택합니다.
3단계: Azure Machine Learning 작업 영역에 연결하려면 setup.sh
를 업데이트합니다.
작업 영역과 일치하도록 CLI 설정 파일 변수를 업데이트해야 합니다.
포크된 리포지토리에서
azureml-examples/cli/
(으)로 이동합니다.setup.sh
를 편집하고 파일에서 이러한 변수를 업데이트합니다.변수 설명 GROUP 리소스 그룹의 이름 위치 작업 영역의 위치(예: 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 일정과 일치하는 분기 및 경로에서 끌어오기 요청이 이루어지는 경우에 실행됩니다. 워크플로를 트리거하는 이벤트에 대해 자세히 알아봅니다. - 워크플로의 작업 섹션에서 코드를 체크 아웃하고 서비스 주체 비밀을 사용하여 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@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
보기 실행을 선택합니다.
내 워크플로를 이해하고 계속 진행합니다를 선택하여 워크플로를 사용하도록 설정합니다.
cli-jobs-pipelines-nyc-taxi-pipeline 워크플로를 선택하고 워크플로 활성화를 선택합니다.
워크플로 실행을 선택하고 지금 워크플로 실행 옵션을 선택합니다.
6단계: 워크플로 실행 확인
완료된 워크플로 실행을 열고 빌드 작업이 성공적으로 실행되었는지 확인합니다. 작업 옆에 녹색 확인 표시가 표시됩니다.
Azure Machine Learning 스튜디오 열고 nyc-taxi-pipeline-example로 이동합니다. 작업의 각 부분(준비, 변환, 학습, 예측, 점수 매기기)이 완료되었고 녹색 확인 표시가 표시되는지 확인합니다.
리소스 정리
리소스 그룹 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹과 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.