Share via


Azure Machine Learning 외부에서 모델 패키지 및 배포(미리 보기)

모델 패키지(미리 보기)를 만들어 온라인 제공을 위해 Azure Machine Learning 외부에 모델을 배포할 수 있습니다. Azure Machine Learning을 사용하면 기계 학습 모델을 서비스 플랫폼에 배포하는 데 필요한 모든 종속성을 수집하는 모델 패키지를 만들 수 있습니다. 작업 영역 간에는 물론 Azure Machine Learning 외부에서도 모델 패키지를 이동할 수 있습니다. 모델 패키지에 대해 자세히 알아보려면 배포용 모델 패키지(미리 보기)를 참조하세요.

Important

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

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

이 문서에서는 모델을 패키지하고 Azure App Service에 배포하는 방법을 알아봅니다.

필수 조건

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

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

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

    참고 항목

    프라이빗 링크 지원 작업 영역은 Azure Machine Learning 외부 배포를 위한 패키지 모델을 지원하지 않습니다.

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

시스템 준비

다음 단계에 따라 시스템을 준비합니다.

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

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

    이 문서에서는 endpoints/online/deploy-with-packages/mlflow-model 폴더의 예를 사용합니다.

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

    az account set --subscription <subscription>
    az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
    
  3. 패키지를 사용하려면 작업 영역이나 Azure Machine Learning 레지스트리에 모델을 등록해야 합니다. 이 예에서는 리포지토리에 모델의 로컬 복사본이 있으므로 작업 영역의 레지스트리에 모델을 게시하기만 하면 됩니다. 배포하려는 모델이 이미 등록된 경우 이 단계를 건너뛸 수 있습니다.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Azure App Service에 모델 패키지 배포

이 섹션에서는 이전에 등록한 MLflow 모델을 패키지하고 Azure App Service에 배포합니다.

  1. Azure Machine Learning 외부에 모델을 배포하려면 패키지 사양을 만들어야 합니다. Azure Machine Learning에서 완전히 연결이 끊긴 패키지를 만들려면 모델 구성에서 copy 모드를 지정합니다. copy 모드는 패키지 내부에 아티팩트를 복사하도록 패키지에 지시합니다. 다음 코드는 모델 구성에 대한 복사 모드를 지정하는 방법을 보여 줍니다.

    패키지 YAML 사양을 만듭니다.

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    mode 속성에 대해 copy을 사용하여 모델 구성을 지정하면 모든 모델 아티팩트가 Azure Machine Learning 모델에서 다운로드되는 대신 생성된 Docker 이미지 내부에 복사됩니다. Azure Machine Learning 외부로의 진정한 이식성을 허용합니다. 패키지 만들 때 모든 옵션에 대한 전체 사양을 보려면 패키지 사양 만들기를 참조하세요.

  2. 패키지 작업을 시작합니다.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. 패키지 작업의 결과는 Azure Machine Learning의 환경입니다. 이 환경의 장점은 각 환경에 외부 배포에서 사용할 수 있는 해당 Docker 이미지가 있다는 것입니다. 이미지는 Azure Container Registry에서 호스트됩니다. 다음 단계에서는 생성된 이미지의 이름을 가져오는 방법을 보여 줍니다.

    1. Azure Machine Learning Studio로 이동합니다.

    2. 환경 섹션을 선택합니다.

    3. 사용자 지정 환경 탭을 선택합니다.

    4. 방금 만든 패키지 이름인 heart-classifier-mlflow-package라는 환경을 찾습니다.

    5. Azure Container Registry 필드에 있는 값을 복사합니다.

    A screenshot showing the section where the Azure container registry image name is displayed in Azure Machine Learning studio.

  4. 이제 이 패키지를 App Service에 배포합니다.

    1. Azure Portal로 이동하여 새 App Service 리소스를 만듭니다.

    2. 만들기 마법사에서 사용 중인 구독 및 리소스 그룹을 선택합니다.

    3. 인스턴스 세부 정보 섹션에서 앱 이름을 지정합니다.

    4. 게시에서 Docker 컨테이너를 선택합니다.

    5. 운영 체제에서 Linux를 선택합니다.

      A screenshot showing how to configure the app service to deploy the generated docker container image.

    6. 필요에 따라 페이지의 나머지 부분을 구성하고 다음을 선택합니다.

    7. Docker 탭으로 이동합니다.

    8. 옵션에서 단일 컨테이너를 선택합니다.

    9. 이미지 원본에서 Azure Container Registry를 선택합니다.

    10. 다음과 같이 Azure Container Registry 옵션을 구성합니다.

      1. 레지스트리에서 Azure Machine Learning 작업 영역과 연결된 Azure Container Registry를 선택합니다.

      2. 이미지의 경우 이 자습서의 3(e)단계에서 찾은 이미지를 선택합니다.

      3. 태그에서 최신을 선택합니다.

      A screenshot showing the section Docker of the wizard, where the docker image associated with the package is indicated.

    11. 필요에 따라 마법사의 나머지 부분을 구성합니다.

    12. 만들기를 실행합니다. 이제 모델이 만들어진 App Service에 배포됩니다.

    13. 예측을 호출하고 가져오는 방법은 사용한 유추 서버에 따라 다릅니다. 이 예에서는 /score 경로에서 예측을 만드는 Azure Machine Learning 유추 서버를 사용했습니다. 입력 형식 및 기능에 대한 자세한 내용은 azureml-inference-server-http 패키지의 세부 정보를 참조하세요.

    14. 요청 페이로드를 준비합니다. Azure Machine Learning 유추 서버와 함께 배포된 MLflow 모델의 형식은 다음과 같습니다.

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. 모델 배포를 테스트하여 작동하는지 확인합니다.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

다음 단계