Share via


온라인 엔드포인트에 모델 패키지 배포(미리 보기)

모델 패키지는 기계 학습 모델을 제공 플랫폼에 배포하는 데 필요한 모든 종속성을 수집할 수 있는 Azure Machine Learning의 기능입니다. 모델을 배포하기 전에 패키지를 만들면 강력하고 안정적인 배포와 보다 효율적인 MLOps 워크플로가 제공됩니다. 패키지는 작업 영역 간 및 Azure Machine Learning 외부로도 이동할 수 있습니다. 모델 패키지(미리 보기)에 대해 자세히 알아보기

Important

이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.

자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

이 문서에서는 모델을 패키지하고 Azure Machine Learning의 온라인 엔드포인트에 배포하는 방법을 알아봅니다.

필수 조건

이 문서의 단계를 수행하기 전에 다음과 같은 필수 구성 요소가 있는지 확인합니다.

  • Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다. Azure Machine Learning 평가판 또는 유료 버전을 사용해 보세요.

  • Azure Machine Learning 작업 영역 작업 영역이 없으면 작업 영역 관리 방법 문서의 단계에서 작업 영역을 만듭니다.

  • Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 Azure Machine Learning 작업 영역에 대한 소유자 또는 기여자 역할이 할당되거나 사용자 지정 역할이 할당되어야 합니다. 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.

이 예에 대해

이 예제에서는 사용자 지정 형식의 모델을 패키지하고 온라인 유추를 위해 온라인 엔드포인트에 배포합니다.

이 문서의 예는 azureml-examples 리포지토리에 포함된 코드 샘플을 기반으로 합니다. YAML 및 기타 파일을 복사/붙여넣기하지 않고 로컬로 명령을 실행하려면 먼저 리포지토리를 복제한 후 디렉터리를 폴더로 변경합니다.

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

이 섹션에서는 폴더 endpoints/online/deploy-packages/custom-model의 예제를 사용합니다.

작업 영역에 연결

작업을 수행할 Azure Machine Learning 작업 영역에 연결합니다.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

모델 패키지

패키징 작업을 수행하는 방법을 제어할 수 있도록 모델 패키지를 명시적으로 만들 수 있습니다. 다음을 지정하여 모델 패키지를 만들 수 있습니다.

  • 패키지할 모델: 각 모델 패키지는 단일 모델만 포함할 수 있습니다. Azure Machine Learning은 동일한 모델 패키지에서 여러 모델의 패키징을 지원하지 않습니다.
  • 기본 환경: 환경은 기본 이미지를 나타내는 데 사용되며 Python 패키지에서 모델에 필요한 종속성을 나타냅니다. MLflow 모델의 경우 Azure Machine Learning은 기본 환경을 자동으로 생성합니다. 사용자 지정 모델의 경우 기본 환경을 지정해야 합니다.
  • 서비스 기술: 모델을 실행하는 데 사용되는 유추 스택입니다.

모델이 MLflow인 경우 모델 패키지를 수동으로 만들 필요가 없습니다. 배포 전에 자동으로 패키지할 수 있습니다. 온라인 엔드포인트에 MLflow 모델 배포를 참조하세요.

  1. 모델 패키지를 사용하려면 작업 영역이나 Azure Machine Learning 레지스트리에 모델을 등록해야 합니다. 이 예에서는 리포지토리에 모델의 로컬 복사본이 있으므로 작업 영역의 레지스트리에 모델을 게시하기만 하면 됩니다. 배포하려는 모델이 이미 등록된 경우 이 섹션을 건너뛸 수 있습니다.

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. 모델을 실행하려면 다음 패키지가 필요하며 conda 파일에 지정되어 있습니다.

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    참고 항목

    어떻게 모델의 요구 사항만 conda YAML에 표시되는지 알아봅니다. 유추 서버에 필요한 모든 패키지는 패키지 작업에 포함됩니다.

    모델에 프라이빗 피드에 호스트된 패키지가 필요한 경우 패키지를 포함하도록 구성할 수 있습니다. 프라이빗 Python 피드에 종속성이 있는 모델 패키지를 읽어보세요.

  3. 모델 요구 사항 및 기본 이미지를 포함하는 기본 환경을 만듭니다. 모델에 필요한 종속성만 기본 환경에 표시됩니다. MLflow 모델의 경우 기본 환경은 선택 사항이며, 이 경우 Azure Machine Learning에서 자동으로 생성합니다.

    다음과 같이 기본 환경 정의를 만듭니다.

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    그런 후 다음과 같이 환경을 만듭니다.

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. 다음과 같이 패키지 사양을 만듭니다.

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. 다음과 같이 모델 패키지 작업을 시작합니다.

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. 패키지 작업의 결과는 환경입니다.

모델 패키지 배포

모델 패키지는 Azure Machine Learning의 온라인 엔드포인트에 직접 배포할 수 있습니다. 다음 단계에 따라 온라인 엔드포인트에 패키지를 배포합니다.

  1. 패키지 배포를 호스트할 엔드포인트의 이름을 선택하고 만듭니다.

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. 패키지를 사용하여 배포를 만듭니다. environment에서 사용자가 만든 패키지가 구성되는 방법을 확인합니다.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    이 예제에서는 모델 또는 채점 스크립트를 지정하지 않습니다. 모두 패키지의 일부이기 때문입니다.

  3. 다음과 같이 배포를 시작합니다.

    az ml online-deployment create -f deployment.yml
    
  4. 이 시점에서 배포를 사용할 준비가 된 것입니다. 샘플 요청 파일을 만들어 작동 방식을 테스트할 수 있습니다.

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. 엔드포인트에 요청 보내기

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

다음 단계