Azure Pipelines

완료됨

워크플로 자동화를 위한 옵션 중 하나는 Azure DevOps Services의 일부분인 Azure Pipelines를 사용하는 것입니다. Azure Pipelines를 이용하면 코드를 자동으로 빌드하고 테스트하여 배포할 수 있습니다.

기계 학습 프로젝트 내에서 Azure Pipelines를 사용하여 작업 영역 자체, 데이터 자산, 컴퓨팅 클러스터 또는 작업과 같은 Azure Machine Learning 작업 영역 자산을 만들어 Azure Machine Learning 파이프라인을 실행할 수 있습니다.

참고

Azure Machine Learning 파이프라인을 통해 Azure Pipelines를 사용하려면 서비스 연결을 통해 Azure DevOps Azure Machine Learning 작업 영역에 연결해야 합니다.

Azure Pipelines를 사용하여 Azure Machine Learning 파이프라인을 실행하는 방법을 알아봅니다.

Azure Pipelines 만들기

Azure Pipelines는 트리거가 발생할 때마다 단계를 실행하여 작업을 자동화하는 데 도움이 됩니다. Azure Pipelines를 사용하여 기계 학습 워크로드를 자동화하려면 Azure Pipelines를 사용하여 Azure Machine Learning 파이프라인을 트리거합니다.

파이프라인 계층 구조 다이어그램

  1. Azure Pipeline을 트리거합니다. 일반적으로는 (커밋 또는 끌어오기 요청을 통해) 리포지토리를 변경합니다.
  2. 여러 단계로 이루어진 작업 그룹인 Azure Pipeline을 실행합니다.
  3. 단계가 Azure Machine Learning 파이프라인을 시작합니다.
  4. Azure Machine Learning 파이프라인은 스크립트나 Azure Machine Learning 구성 요소를 실행합니다.
  5. 스크립트 또는 구성 요소는 기계 학습의 작업을 나타냅니다.

Azure Pipeline을 만들려면 YAML 파일에 포함할 단계를 정의합니다. Azure Pipeline의 YAML 파일에는 다음이 포함됩니다.

  • 트리거: 파이프라인을 시작할 이벤트입니다.
  • 스테이지: 일반적으로 다양한 개발 환경(개발/테스트/프로덕션)과 일치하는 작업 그룹입니다.
  • 작업: 에이전트에서 실행되는 여러 단계들입니다. 기계 학습 워크로드의 경우 Microsoft가 호스트하는 Ubuntu Linux 가상 머신을 사용할 가능성이 높습니다.
  • 단계: 실행하려는 스크립트나 작업입니다. 예를 들면 Azure Machine Learning 파이프라인(az ml job create)을 시작하는 CLI 명령과 같은 것입니다.

Azure Pipelines에 사용되는 핵심 개념에 대해 자세히 알아봅니다.

Azure 리포지토리를 변경할 때 Azure Machine Learning 파이프라인을 실행하려면 다음과 같은 YAML 파일을 사용하면 됩니다.

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

파이프라인의 작업은 실행해야 하는 단계를 나열하기 위해 aml-steps.yml를 사용합니다. pipeline-job.yml에 정의된 Azure Machine Learning 파이프라인을 실행하려면 CLI(v2)를 사용하면 됩니다. Azure Pipeline의 단계 가운데 하나로서 Azure Machine Learning 파이프라인을 실행하려면 다음을 수행합니다.

  1. CLI용 Azure Machine Learning 확장을 설치합니다.
  2. az ml job create 명령을 사용해 Azure Machine Learning에 파이프라인 작업을 실행합니다.

설치 및 Azure Machine Learning 작업 시작용 aml-steps.yml 파일은 다음과 같을 수 있습니다.

parameters:
- name: serviceconnectionname
  default: ''

steps:
- checkout: self

- script: az extension add -n ml -y
  displayName: 'Install Azure ML CLI v2'

- task: AzureCLI@2
  inputs:
    azureSubscription: ${{ parameters.serviceconnectionname }}
    scriptType: bash
    scriptLocation: inlineScript
    workingDirectory: $(Build.SourcesDirectory)
    inlineScript: |
      cd src
      az ml job create --file aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
  displayName: 'Run Azure Machine Learning Pipeline'

예제에 표시된 것처럼 serviceconnectionname 등과 같은 파이프라인 정의를 통해 매개 변수를 사용하여 YAML 파일을 다른 프로젝트에서 더 많이 재사용하도록 할 수 있습니다.

Azure DevOps를 사용하여 파이프라인 실행

YAML 파일을 만들어 Azure 리포지토리에 저장한 후에는 파이프라인을 실행하도록 Azure DevOps를 구성할 수 있습니다.

Azure DevOps의 파이프라인 구성 스크린샷

  1. Azure DevOps 내에서 Pipelines 탭으로 이동하여 Pipelines를 선택합니다.
  2. 새 파이프라인을 만듭니다.
  3. Azure Repos Git을 코드 위치로 선택합니다.
  4. 코드가 포함된 리포지토리를 선택합니다.
  5. 기존 Azure Pipelines YAML 파일을 선택합니다.
  6. Azure Pipeline에 대해 만든 YAML 파일을 가리키는 경로를 선택합니다.
  7. 파이프라인을 검토한 후에는 저장 및 실행이 가능합니다.

파이프라인은 기본 분기에 대한 커밋으로 트리거됩니다. 파이프라인을 구성할 때 Azure Pipelines는 기본 분기에 대한 변경 내용을 커밋하여 파이프라인을 처음으로 실행하도록 트리거합니다. 설정 후에도 언제든지 Visual Studio Code 또는 Azure Repos 리포지토리로 커밋을 푸시하여 파이프라인을 트리거할 수 있습니다.

Azure Pipelines에서 실패한 작업의 스크린샷

작업을 선택하면 해당 프로세스를 볼 수 있습니다. 작업의 각 단계는 왼쪽의 탐색 창에 반영됩니다. 개요에는 성공적으로 실행된 단계와 실패한 단계가 표시됩니다. 해당 단계를 선택하면 명령줄 인터페이스에 잠재적 오류 메시지가 표시됩니다. 출력을 검토하면 해당 오류를 해결할 수 있습니다.

작업이 Azure Machine Learning 파이프라인을 실행하도록 트리거하는 경우에는 Azure Machine Learning 작업 영역에서 파이프라인 실행을 검토해 관심 있는 메트릭이나 오류를 확인할 수도 있습니다.