온라인 엔드포인트를 사용하여 기계 학습 모델 배포 및 점수 매기기

적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)

이 문서에서는 실시간 유추에 사용하기 위해 모델을 온라인 엔드포인트에 배포하는 방법을 알아봅니다. 먼저 로컬 컴퓨터에 모델을 배포하여 오류를 디버깅합니다. 그런 다음 Azure에서 모델을 배포 및 테스트하고, 배포 로그를 보고, SLA(서비스 수준 계약)를 모니터링합니다. 이 문서가 끝나면 실시간 유추에 사용할 수 있는 확장 가능한 HTTPS/REST 엔드포인트를 갖게 됩니다.

온라인 엔드포인트란 실시간 유추에 사용되는 엔드포인트입니다. 온라인 엔드포인트에는 관리형 온라인 엔드포인트Kubernetes 온라인 엔드포인트의 두 가지 유형이 있습니다. 엔드포인트 및 관리형 온라인 엔드포인트와 Kubernetes 온라인 엔드포인트 간의 차이점에 대한 자세한 내용은 Azure Machine Learning 엔드포인트란?을 참조하세요.

관리형 온라인 엔드포인트는 턴키 방식으로 기계 학습 모델을 배포하는 데 도움이 됩니다. 관리형 온라인 엔드포인트는 확장성 있는 완전 관리형 방식으로 Azure의 강력한 CPU 및 GPU 머신에서 작동합니다. 관리형 온라인 엔드포인트는 모델 제공, 크기 조정, 보안 및 모니터링을 처리하여 기본 인프라를 설정하고 관리하는 오버헤드로부터 벗어날 수 있습니다.

이 문서의 주요 예제에서는 배포에 관리형 온라인 엔드포인트를 사용합니다. Kubernetes를 대신 사용하려면 이 문서의 참고 사항을 관리형 온라인 엔드포인트에 대한 설명과 함께 참조하세요.

필수 조건

적용 대상:Azure CLI ml 확장 v2(현재)

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

  • Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 Azure Machine Learning 작업 영역에 대한 소유자 또는 기여자 역할이 할당되거나 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*를 허용하는 사용자 지정 역할이 할당되어야 합니다. Studio를 사용하여 온라인 엔드포인트/배포를 만들기/관리하는 경우 리소스 그룹 소유자로부터 "Microsoft.Resources/deployments/write" 권한이 추가로 필요합니다. 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.

  • (선택 사항) 로컬로 배포하려면 로컬 컴퓨터에 Docker 엔진을 설치해야 합니다. 문제를 더 쉽게 디버그할 수 있도록 이 옵션을 권장합니다.

  • 배포를 위해 할당된 VM(가상 머신) 할당량이 충분한지 확인합니다. Azure Machine Learning은 일부 VM SKU에서 업그레이드를 수행하기 위해 컴퓨팅 리소스의 20%를 예약합니다. 예를 들어, 배포에서 10개의 인스턴스를 요청하는 경우 VM SKU의 각 코어 수에 대해 12개의 할당량이 있어야 합니다. 추가 컴퓨팅 리소스를 고려하지 않으면 오류가 발생합니다. 추가 할당량 예약에서 제외되는 일부 VM SKU가 있습니다. 할당량 할당에 대한 자세한 내용은 배포를 위한 가상 머신 할당량 할당을 참조하세요.

  • 또는 제한된 시간 동안 Azure Machine Learning의 공유 할당량 풀에서 할당량을 사용할 수 있습니다. 사용자는 이 풀의 할당량에 액세스하여 제한된 시간 동안 테스트를 수행할 수 있습니다. 스튜디오를 사용하여 모델 카탈로그의 Llama-2, Phi, Nemotron, Mistral, Dolly 및 Deci-DeciLM 모델을 관리형 온라인 엔드포인트에 배포하는 경우 Azure Machine Learning을 사용하면 잠시 공유 할당량 풀에 액세스하여 테스트를 수행할 수 있습니다. 공유 할당량 풀에 대한 자세한 내용은 Azure Machine Learning 공유 할당량을 참조하세요.

시스템 준비

환경 변수 설정

Azure CLI에 대한 기본값을 아직 설정하지 않은 경우 기본 설정을 저장합니다. 구독, 작업 영역 및 리소스 그룹에 대한 값을 여러 번 전달하지 않으려면 다음 코드를 실행하세요.

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

예제 리포지토리 복제

이 문서를 따르려면 먼저 예제 리포지토리(azureml-examples)를 복제합니다. 그런 후 다음 코드를 실행하여 리포지토리의 cli/ 디렉터리로 이동합니다.

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

--depth 1을 사용하여 최신 커밋만 리포지토리에 복제하여 작업을 완료하는 데 걸리는 시간을 줄입니다.

이 자습서의 명령은 cli 디렉터리의 deploy-local-endpoint.shdeploy-managed-online-endpoint.sh에 있고 YAML 구성 파일은 endpoints/online/managed/sample/ 하위 디렉터리에 있습니다.

참고 항목

Kubernetes 온라인 엔드포인트에 대한 YAML 구성 파일은 endpoints/online/kubernetes/ 하위 디렉터리에 있습니다.

엔드포인트 정의

온라인 엔드포인트를 정의하려면 엔드포인트 이름인증 모드를 지정합니다. 관리형 온라인 엔드포인트에 대한 자세한 내용은 온라인 엔드포인트를 참조하세요.

엔드포인트 이름 설정

엔드포인트 이름을 설정하려면 다음 명령을 실행합니다. YOUR_ENDPOINT_NAME을 Azure 지역에서 고유한 이름으로 바꿉니다. 명명 규칙에 대한 자세한 내용은 엔드포인트 제한을 참조하세요.

Linux의 경우 다음 명령을 실행합니다.

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

엔드포인트 구성:

다음 코드 조각은 endpoints/online/managed/sample/endpoint.yml 파일을 보여줍니다.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key

엔드포인트 YAML 형식에 대한 참조는 다음 표에 설명되어 있습니다. 이러한 특성을 지정하는 방법을 알아보려면 온라인 엔드포인트 YAML 참조를 참조하세요. 관리형 엔드포인트 관련 한도에 대한 자세한 내용은 온라인 엔드포인트에 대한 한도를 참조하세요.

설명
$schema (선택 사항) YAML 스키마입니다. YAML 파일에서 사용 가능한 모든 옵션을 보려면 브라우저에서 이전 코드 조각의 스키마를 볼 수 있습니다.
name 엔드포인트의 이름입니다.
auth_mode 키 기반 인증의 경우 key를 사용합니다.
Azure Machine Learning 토큰 기반 인증에 대해 aml_token을 사용합니다.
Microsoft Entra 토큰 기반 인증(미리 보기)에는 aad_token을 사용합니다.
인증에 대한 자세한 내용은 온라인 엔드포인트에 대한 클라이언트 인증을 참조하세요.

배포 정의

배포는 실제 유추를 수행하는 모델을 호스팅하는 데 필요한 리소스의 세트입니다. 이 예에서는 회귀를 수행하는 scikit-learn 모델을 배포하고 채점 스크립트 score.py를 사용하여 지정된 입력 요청에 따라 모델을 실행합니다.

배포의 주요 특성에 대해 알아보려면 온라인 배포를 참조하세요.

배포 구성

배포 구성은 배포하려는 모델의 위치를 사용합니다.

다음 코드 조각은 endpoints/online/managed/sample/blue-deployment.yml 파일을 배포를 구성하는 데 필요한 모든 입력과 함께 보여줍니다.

blue-deployment.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: 
  conda_file: ../../model-1/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

blue-deployment.yml 파일은 다음 배포 특성을 지정합니다.

  • model - path(파일을 업로드할 위치)를 사용하여 모델 속성을 인라인으로 지정합니다. CLI는 자동으로 모델 파일을 업로드하고 자동 생성된 이름으로 모델을 등록합니다.
  • environment - 파일을 업로드할 위치가 포함된 인라인 정의를 사용하여 CLI는 자동으로 conda.yaml 파일을 업로드하고 환경을 등록합니다. 나중에 환경을 빌드하기 위해 배포는 기본 이미지에 대해 image(이 예에서는 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest)를 사용하고 conda_file 종속성은 기본 이미지 위에 설치됩니다.
  • code_configuration - 배포하는 동안 채점 모델의 Python 원본과 같은 로컬 파일이 개발 환경에서 업로드됩니다.

YAML 스키마에 대한 자세한 내용은 온라인 엔드포인트 YAML 참조를 참조하세요.

참고 항목

관리형 온라인 엔드포인트 대신 Kubernetes 엔드포인트를 컴퓨팅 대상으로 사용하려면 다음 안내를 따릅니다.

  1. Azure Machine Learning 스튜디오를 사용하여 Kubernetes 클러스터를 만들고 Azure Machine Learning 작업 영역에 컴퓨팅 대상으로 연결합니다.
  2. 관리형 엔드포인트 YAML 대신 엔드포인트 YAML을 사용하여 Kubernetes를 대상으로 지정합니다. compute의 값을 등록된 컴퓨팅 대상의 이름으로 변경하려면 YAML을 편집해야 합니다. Kubernetes 배포에 적용할 수 있는 추가 속성이 있는 이 deployment.yaml을 사용할 수 있습니다.

이 문서에서 관리형 온라인 엔드포인트에 사용되는 모든 명령은 Kubernetes 엔드포인트에 적용되지 않는 다음 기능을 제외하고 Kubernetes 엔드포인트에도 적용됩니다.

채점 스크립트 이해

온라인 엔드포인트의 점수 매기기 스크립트의 형식은 이전 버전의 CLI 및 Python SDK에서 사용된 것과 동일한 형식입니다.

code_configuration.scoring_script에 지정된 채점 스크립트에는 init() 함수와 run() 함수가 있어야 합니다.

이 예제에서는 이 score.py 파일: score.py를 사용합니다.

import os
import logging
import json
import numpy
import joblib


def init():
    """
    This function is called when the container is initialized/started, typically after create/update of the deployment.
    You can write the logic here to perform init operations like caching the model in memory
    """
    global model
    # AZUREML_MODEL_DIR is an environment variable created during deployment.
    # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
    # Please provide your model's folder name if there is one
    model_path = os.path.join(
        os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
    )
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)
    logging.info("Init complete")


def run(raw_data):
    """
    This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
    In the example we extract the data from the json input and call the scikit-learn model's predict()
    method and return the result back
    """
    logging.info("model 1: request received")
    data = json.loads(raw_data)["data"]
    data = numpy.array(data)
    result = model.predict(data)
    logging.info("Request processed")
    return result.tolist()

컨테이너가 초기화/시작되면 init() 함수가 호출됩니다. 초기화는 일반적으로 배포를 만들거나 업데이트한 직후에 발생합니다. init 함수에서 메모리에 모델을 캐싱하는 것과 같은 전역 초기화 작업을 위한 논리를 작성합니다(이 score.py 파일에 표시됨).

run() 함수는 엔드포인트가 호출될 때마다 호출되며 실제 채점 및 예측을 수행합니다. 이 score.py 파일의 run() 함수는 JSON 입력에서 데이터를 추출하고 scikit-learn 모델의 predict() 메서드를 호출한 다음 예측 결과를 반환합니다.

로컬 엔드포인트를 사용하여 로컬로 배포 및 디버그

Azure에 배포하기 전에 로컬에서 엔드포인트를 테스트 실행하여 코드와 구성의 유효성을 검사하고 디버그하는 것이 적극 권장됩니다. Azure CLI 및 Python SDK는 로컬 엔드포인트 및 배포를 지원하지만 Azure Machine Learning 스튜디오 및 ARM 템플릿은 지원하지 않습니다.

로컬로 배포하려면 Docker 엔진 을 설치하고 실행해야 합니다. Docker 엔진은 일반적으로 컴퓨터가 시작될 때 시작됩니다. 그렇지 않은 경우 Docker 엔진 문제를 해결할 수 있습니다.

Azure Machine Learning 유추 HTTP 서버 Python 패키지를 사용하여 Docker 엔진 없이 로컬로 채점 스크립트를 디버그할 수 있습니다. 유추 서버를 사용하여 디버깅하면 로컬 엔드포인트에 배포하기 전에 채점 스크립트를 디버그하여 배포 컨테이너 구성의 영향을 받지 않고 디버그할 수 있습니다.

Azure에 배포하기 전에 로컬에서 온라인 엔드포인트를 디버깅하는 방법에 대한 자세한 내용은 온라인 엔드포인트 디버깅을 참조하세요.

로컬에서 모델 배포

먼저 엔드포인트를 만듭니다. 선택적으로, 로컬 엔드포인트의 경우 이 단계를 건너뛰고 다음 단계에서 배포를 만들 수 있습니다. 그러면 필요한 메타데이터가 만들어집니다. 모델을 로컬로 배포하는 것은 개발 및 테스트 목적으로 유용합니다.

az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml

이제 엔드포인트 아래에 blue라는 배포를 만듭니다.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

--local 플래그는 Docker 환경에 엔드포인트를 배포하도록 CLI에 지시합니다.

Visual Studio Code를 사용하여 로컬로 엔드포인트를 테스트하고 디버그합니다. 자세한 내용은 Visual Studio Code에서 로컬로 온라인 엔드포인트 디버그를 참조하세요.

로컬 배포가 성공했는지 확인

모델이 오류 없이 배포되었는지 확인하려면 배포 상태를 확인합니다.

az ml online-endpoint show -n $ENDPOINT_NAME --local

출력은 다음 JSON과 비슷합니다. provisioning_stateSucceeded인 경우

{
  "auth_mode": "key",
  "location": "local",
  "name": "docs-endpoint",
  "properties": {},
  "provisioning_state": "Succeeded",
  "scoring_uri": "http://localhost:49158/score",
  "tags": {},
  "traffic": {}
}

다음 표에는 provisioning_state에 대해 가능한 값이 포함되어 있습니다.

설명
만드는 중 리소스를 만드는 중입니다.
업데이트 중 리소스를 업데이트 중입니다.
삭제 중 리소스를 삭제하는 중입니다.
성공함 만들기/업데이트 작업이 성공했습니다.
실패함 만들기/업데이트/삭제 작업이 실패했습니다.

로컬 엔드포인트를 호출하여 모델로 데이터 채점

invoke 명령을 사용하고 JSON 파일에 저장된 쿼리 매개 변수를 전달하여 엔드포인트를 호출하여 모델 점수를 매깁니다.

az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json

REST 클라이언트(예: curl)를 사용하려면 채점 URI가 있어야 합니다. 채점 URI를 얻으려면 az ml online-endpoint show --local -n $ENDPOINT_NAME을 실행합니다. 반환된 데이터에서 scoring_uri 특성을 찾습니다.

호출 작업의 출력에 대한 로그를 검토합니다.

예제 score.py 파일에서 run() 메서드는 콘솔에 일부 출력을 로그합니다.

get-logs 명령을 사용하여 이 출력을 볼 수 있습니다.

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

Azure에 온라인 엔드포인트 배포

다음으로, Azure에 온라인 엔드포인트를 배포합니다. 프로덕션을 위한 모범 사례로 배포에 사용할 모델과 환경을 등록하는 것이 좋습니다.

모델 및 환경 등록

배포 중에 등록된 이름과 버전을 지정할 수 있도록 Azure에 배포하기 전에 모델과 환경을 등록하는 것이 좋습니다. 자산을 등록하면 배포를 만들 때마다 업로드할 필요 없이 자산을 재사용할 수 있으므로 재현성과 추적 가능성이 향상됩니다.

참고 항목

Azure에 대한 배포와 달리 로컬 배포는 등록된 모델 및 환경 사용을 지원하지 않습니다. 오히려 로컬 배포에서는 로컬 모델 파일을 사용하고 로컬 파일만 있는 환경을 사용합니다. Azure에 배포하려면 로컬 또는 등록된 자산(모델 및 환경)을 사용할 수 있습니다. 문서의 이 섹션에서는 Azure에 배포할 때 등록된 자산을 사용하지만 대신 로컬 자산을 사용하는 옵션이 있습니다. 로컬 배포에 사용할 로컬 파일을 업로드하는 배포 구성의 예는 배포 구성을 참조하세요.

모델 및 환경을 등록하려면 model: azureml:my-model:1 또는 environment: azureml:my-env:1 형식을 사용합니다. 등록을 수행하려면 modelenvironment의 YAML 정의를 별도의 YAML 파일에 추출하고 az ml model createaz ml environment create 명령을 사용할 수 있습니다. 이러한 명령에 대해 자세히 알아보려면 az ml model create -haz ml environment create -h를 실행합니다.

  1. 모델에 대한 YAML 정의를 만듭니다.

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. 모델 등록:

    az ml model create -n my-model -v 1 -f ./model.yaml
    
  3. 환경에 대한 YAML 정의를 만듭니다.

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: my-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    conda_file: ../../model-1/environment/conda.yaml
    
  4. 환경 등록:

    az ml environment create -n my-env -v 1 -f ./environment.yaml
    

모델을 자산으로 등록하는 방법에 대한 자세한 내용은 CLI를 사용하여 Machine Learning에서 모델을 자산으로 등록을 참조하세요. 환경을 만드는 방법에 대한 자세한 내용은 CLI & SDK(v2)를 통해 Azure Machine Learning 환경 관리를 참조하세요.

등록된 자산을 사용하는 배포 구성

배포 구성은 배포하려는 등록된 모델과 등록된 환경을 사용합니다.

배포 정의에 등록된 자산(모델 및 환경)을 사용합니다. 다음 코드 조각은 배포를 구성하는 데 필요한 모든 입력이 포함된 endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml 파일을 보여 줍니다.

blue-deployment-with-registered-assets.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1

다른 CPU 및 GPU 인스턴스 유형과 이미지 사용

로컬 배포와 Azure 배포 모두에 대해 배포 정의에서 CPU 또는 GPU 인스턴스 형식과 이미지를 지정할 수 있습니다.

blue-deployment-with-registered-assets.yml 파일의 배포 정의에서 범용 형식 Standard_DS3_v2 인스턴스와 비 GPU Docker 이미지 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest를 사용했습니다. GPU 컴퓨팅의 경우 GPU 컴퓨팅 유형 SKU 및 GPU Docker 이미지를 선택합니다.

지원되는 범용 및 GPU 인스턴스 유형을 보려면 관리형 온라인 엔드포인트에서 지원되는 VM SKU를 참조하세요. Azure Machine Learning CPU 및 GPU 기본 이미지 목록은 Azure Machine Learning 기본 이미지를 참조하세요.

참고 항목

관리 엔드포인트 대신 Kubernetes를 컴퓨팅 대상으로 사용하려면 Kubernetes 컴퓨팅 대상 소개를 참조하세요.

다음으로, Azure에 온라인 엔드포인트를 배포합니다.

Azure에 배포

  1. Azure 클라우드에서 엔드포인트를 만듭니다.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. 엔드포인트 아래에 blue라는 배포를 만듭니다.

    az ml online-deployment create -name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
    

    배포 만들기에는 기본 환경이나 이미지가 처음으로 빌드되는지 여부에 따라 최대 15분이 걸릴 수 있습니다. 동일한 환경을 사용하는 후속 배포는 더 빠르게 처리됩니다.

    • CLI 콘솔을 차단하지 않으려는 경우 명령에 --no-wait 플래그를 추가할 수 있습니다. 그러나 이 옵션은 배포 상태의 대화형 표시를 중지합니다.

    Important

    배포를 만드는 데 사용되는 코드 az ml online-deployment create--all-traffic 플래그는 새로 만들어진 파란색 배포에 엔드포인트 트래픽의 100%를 할당합니다. 이는 개발 및 테스트 목적으로 유용하지만 프로덕션의 경우 명시적 명령을 통해 트래픽을 새 배포로 라우팅할 수 있습니다. 예들 들어 az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"입니다.

배포 오류를 디버깅하려면 온라인 엔드포인트 배포 문제 해결을 참조하세요.

클러스터의 상태를 확인합니다.

  1. 엔드포인트 및 배포에 대한 정보를 provisioning_state에 표시하려면 show 명령을 사용합니다.

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. list 명령을 사용하여 작업 영역의 모든 엔드포인트를 테이블 형식으로 나열합니다.

    az ml online-endpoint list --output table
    

온라인 배포 상태 확인

로그를 확인하여 모델이 오류 없이 배포되었는지 확인합니다.

  1. 컨테이너에서 로그 출력을 보려면 다음 CLI 명령을 사용합니다.

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

    기본적으로 로그는 유추 서버에서 풀합니다. 스토리지 이니셜라이저 컨테이너에서 로그를 보려면 --container storage-initializer 플래그를 추가합니다. 배포 로그에 대한 자세한 내용은 컨테이너 로그 가져오기를 참조하세요.

엔드포인트를 호출하여 모델을 사용하여 데이터 채점

  1. 선택한 invoke 명령 또는 REST 클라이언트를 사용하여 엔드포인트를 호출하고 일부 데이터를 채점합니다.

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. 엔드포인트에 인증하는 데 사용되는 키를 가져옵니다.

    Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/actionMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action을 허용하는 사용자 지정 역할에 할당하여 인증 키를 가져올 수 있는 Microsoft Entra 보안 주체를 제어할 수 있습니다. 작업 영역에 대한 권한 부여 관리에 대한 자세한 내용은 Azure Machine Learning 작업 영역에 대한 액세스 관리를 참조하세요.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. curl을 사용하여 데이터 점수를 매깁니다.

    SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
    
    curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
    

    인증 자격 증명을 가져오려면 showget-credentials 명령을 사용합니다. 또한 필요한 특성만 필터링하기 위해 --query 플래그를 사용하고 있다는 점에 유의해야 합니다. --query 플래그에 대해 자세히 알아보려면 Azure CLI 명령 출력 쿼리를 참조하세요.

  4. 호출 로그를 보려면 get-logs를 다시 실행합니다.

(선택 사항) 배포 업데이트

코드, 모델 또는 환경을 업데이트하려면 YAML 파일을 업데이트한 다음 az ml online-endpoint update 명령을 실행합니다.

참고 항목

배포 확장을 위해 단일 update 명령에서 인스턴스 수를 다른 모델 설정(코드, 모델 또는 환경)과 함께 업데이트하는 경우 먼저 크기 조정 작업이 수행된 후에 다른 업데이트가 적용됩니다. 프로덕션 환경에서는 이러한 작업을 별도로 수행하는 것이 좋습니다.

update의 작동 방식을 이해하려면 다음을 수행합니다.

  1. online/model-1/onlinescoring/score.py 파일을 엽니다.

  2. init() 함수의 마지막 줄을 변경합니다. logging.info("Init complete") 다음에 logging.info("Updated successfully")를 추가합니다.

  3. 파일을 저장합니다.

  4. 다음 명령을 실행합니다.

    az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
    

    참고 항목

    YAML을 사용한 업데이트는 선언적입니다. 즉, YAML의 변경 내용이 기본 Azure Resource Manager 리소스(엔드포인트 및 배포)에 반영됩니다. 선언적 접근 방식은 GitOps를 용이하게 합니다. 엔드포인트 및 배포에 대한 모든 변경 사항(instance_count 포함)은 YAML을 거칩니다.

    • --setCLI 명령을 사용하여 매개 변수update와 같은 일반 업데이트 매개 변수를 사용하여 YAML의 특성을 재정의하거 YAML 파일에 전달하지 않고 특정 특성을 설정할 수 있습니다. 단일 특성에 --set를 사용하는 것은 개발 및 테스트 시나리오에서 특히 중요합니다. 예를 들어 첫 번째 배포의 instance_count 값을 스케일 업하려면 --set instance_count=2 플래그를 사용하면 됩니다. 그러나 YAML이 업데이트되지 않으므로 이 기법을 사용하면 GitOps가 용이하지 않습니다.
    • YAML 파일 지정은 필수가 아닙니다. 예를 들어, 특정 배포에 대해 다양한 동시성 설정을 테스트하려는 경우 az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4와 같은 것을 시도해 볼 수 있습니다. 이렇게 하면 기존 구성이 모두 유지되지만 지정된 매개 변수만 업데이트됩니다.
  5. 엔드포인트가 생성되거나 업데이트될 때 실행되는 init() 함수를 수정했으므로 로그에 Updated successfully 메시지가 표시됩니다. 다음을 실행하여 로그를 검색합니다.

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

update 명령은 로컬 배포에서도 작동합니다. 동일한 az ml online-deployment update 명령에 --local 플래그를 사용합니다.

이 섹션의 배포 업데이트는 현재 위치 롤링 업데이트의 예입니다.

  • 관리형 온라인 엔드포인트의 경우 배포가 한 번에 20%의 노드가 있는 새 구성으로 업데이트됩니다. 즉, 배포에 10개의 노드가 있으면 한 번에 2개의 노드가 업데이트됩니다.
  • Kubernetes 온라인 엔드포인트의 경우 시스템은 새 구성으로 새 배포 인스턴스를 반복적으로 만들고 이전 인스턴스를 삭제합니다.
  • 프로덕션 사용량의 경우 웹 서비스를 업데이트하기 위한 보다 안전한 대안을 제공하는 파란색-녹색 배포를 고려해야 합니다.

(선택 사항) 자동 크기 조정 구성

자동 크기 조정은 애플리케이션의 로드를 처리하기 위해 적절한 양의 리소스를 자동으로 실행합니다. 관리되는 온라인 엔드포인트는 Azure Monitor 자동 크기 조정 기능과의 통합을 통해 자동 크기 조정을 지원합니다. 자동 크기 조정을 구성하려면 온라인 엔드포인트를 자동 크기 조정하는 방법을 참조하세요.

(선택 사항) Azure Monitor를 사용하여 SLA 모니터링

SLA에 따라 메트릭을 보고 알림을 설정하려면 온라인 엔드포인트 모니터링에 설명된 단계를 완료하세요.

(선택 사항) Log Analytics와 통합

CLI용 get-logs 명령 또는 SDK용 get_logs 메서드는 자동으로 선택된 인스턴스에서 로그의 마지막 수백 줄만 제공합니다. 그러나 Log Analytics는 지속적으로 로그를 저장하고 분석하는 방법을 제공합니다. 로깅 사용에 대한 자세한 내용은 온라인 엔드포인트 모니터링을 참조하세요.

엔드포인트 및 배포 삭제

엔드포인트 및 모든 기본 배포 삭제:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait