Azure Machine Learning 파이프라인

완료됨

데이터 과학자는 주로 Azure Machine Learning을 활용해 모델을 학습시키고 관리하는 업무를 합니다. 실험 후에는 자신의 작업을 프로덕션 Python 코드로 변환해 Azure(DevOps) Pipelines 또는 GitHub Actions를 통해 자동화할 수 있도록 해야 합니다.

Azure Machine Learning 실험

Azure Machine Learning은 작업 구성에 도움을 주는 여러 가지 기능을 제공합니다. 예를 들어 Azure Machine Learning을 사용하면 다음 작업들이 가능합니다.

  • 데이터 레이크에 저장된 데이터를 간단히 재사용할 수 있도록 데이터 세트를 등록합니다.
  • 요구 사항에 따라 원격 컴퓨팅 인스턴스나 클러스터의 모델을 학습시킵니다.
  • 작업 비교를 용이하게 하기 위해 실행된 모든 스크립트를 실험으로 추적합니다.
  • 학습된 모델을 등록하고 일괄 처리 또는 실시간 사용을 위한 모델을 배포합니다.

데이터 과학자로서 수행할 대부분의 작업에는 실험이 포함되며, 실험에서는 모델을 학습시키기 위해 다양한 구성을 테스팅하는 작업과 프로덕션에 배포할 모델을 결정하기 위해 성능 메트릭을 검토하는 작업을 수행합니다.

Jupyter Notebook(.ipynb 파일)에서 실험하는 경우에는 다음을 통해 실험을 프로덕션 Python 코드로 변환합니다.

  • 불필요한 코드 모두 제거.
  • 코드를 함수로 리팩터링.
  • Python 스크립트(.py 파일)에서 관련 함수 결합.
  • 개별 Python 스크립트에 대해 단위 테스트 제작.
  • 스크립트를 자동화할 수 있는 워크플로로 그룹화하기 위한 파이프라인을 만듭니다.

코드를 프로덕션에 사용할 준비가 되면 Azure Machine Learning 파이프라인을 사용하여 스크립트 실행을 자동화할 수 있습니다.

Azure Machine Learning 파이프라인 만들기

파이프라인의 개념은 다양한 도구에서 찾을 수 있으며, 특정 순서로 작업을 그룹화할 수 있는 방법을 제공하는 경우가 많습니다. 파이프라인의 주요 이점은 파이프라인의 실행을 예약하거나 트리거할 수 있다는 것입니다.

Azure Machine Learning 파이프라인은 Azure Machine Learning 작업 영역 내에 만들어집니다. 파이프라인을 만들기 위해 Python 스크립트를 사용하여 단계를 정의할 수 있습니다.

필요에 따라 Azure Machine Learning 구성 요소를 사용하여 파이프라인을 만들 수 있습니다. 구성 요소를 만들 때 스크립트는 Azure Machine Learning 작업 영역에 필요한 환경과 같은 메타데이터와 함께 저장됩니다. 구성 요소는 동일한 작업 영역 내의 모든 사용자가 공유하고 사용할 수 있으므로 다른 사용자가 나의 작업을 기반으로 새 파이프라인을 빠르게 만들 수 있습니다.

자동화에 사용할 수 있는 파이프라인을 만들려면 CLI(v2) 명령을 사용하여 트리거할 수 있는 파이프라인 작업을 YAML에서 정의하는 것이 좋습니다.

파이프라인을 정의하는 YAML 파일은 다음 정보를 지정해야 합니다.

  • 실행 대상: Python 스크립트 또는 구성 요소로 정의된 단계입니다.
  • 실행 방법: 해당 단계가 예상할 수 있는 모든 입력 또는 출력입니다.
  • 실행 위치: 대상 코드를 실행하는 데 필요한 컴퓨팅(일반적으로는 Azure Machine Learning 컴퓨팅 클러스터)입니다.

예를 들어 원시 데이터를 입력으로 사용하고, 변환하고, 모델을 학습시키는 파이프라인은 파일에 정의pipeline-job.yml할 수 있습니다.

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc-taxi-pipeline-example
experiment_name: nyc-taxi-pipeline-example
jobs:

  transform-job:
    type: command
      raw_data: 
          type: uri_folder 
          path: ./data
    outputs:
      transformed_data:
        mode: rw_mount
    code: src/transform
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python transform.py 
      --raw_data ${{inputs.raw_data}} 
      --transformed_data ${{outputs.transformed_data}}
  
  train-job:
    type: command
    inputs:
      training_data: ${{parent.jobs.transform-job.outputs.transformed_data}}
    outputs:
      model_output: 
        mode: rw_mount
      test_data: 
        mode: rw_mount
    code: src/train
    environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
    compute: azureml:cpu-cluster
    command: >-
      python train.py 
      --training_data ${{inputs.training_data}} 
      --test_data ${{outputs.test_data}} 
      --model_output ${{outputs.model_output}}

Azure Machine Learning 내에서 파이프라인을 실행하려면 다음 CLI 명령을 사용합니다.

az ml job create --file pipeline-job.yml

파이프라인 실행이 완료되면 Azure Machine Learning 작업 영역에서 해당 파이프라인 및 실행된 단계를 검토할 수 있습니다.

기계 학습 워크로드를 Python 스크립트로 변환하고 파이프라인 내의 작업을 그룹화하면 모델을 프로덕션에 사용할 준비가 된 것입니다. YAML 파일에서 파이프라인을 정의하면 CLI(v2)를 통해 파이프라인 실행을 트리거하여 학습 및 재학습을 자동화할 수 있습니다. Azure(DevOps) Pipelines 또는 GitHub Actions에서 파이프라인 YAML 파일을 참조하는 CLI 명령을 실행할 수 있습니다.