다음을 통해 공유


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

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

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

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

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

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

필수 조건

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

  • Azure CLIml Azure CLI에 대한 확장(설치 및 구성됨)입니다. 자세한 내용은 CLI 설치 및 설정(v2)을 참조하세요.

  • Bash 셸 또는 호환되는 셸(예: Linux 시스템의 셸 또는 Linux용 Windows 하위 시스템). 이 문서의 Azure CLI 예제에서는 이 유형의 셸을 사용한다고 가정합니다.

  • Azure Machine Learning 작업 영역 작업 영역을 만드는 지침은 설정(Set up)을 참조하세요.

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

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

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

  • 또는 제한된 시간 동안 Azure Machine Learning 공유 할당량 풀의 할당량을 사용할 수 있습니다. 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 리포지토리를 복제한 다음 리포지토리의 azureml-examples/cli 디렉터리로 변경합니다.

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

리포지토리에 대한 최신 커밋만 복제하여 작업을 완료하는 시간을 단축하는 데 사용합니다 --depth 1 .

이 자습서의 명령은 deploy-local-endpoint.sh 파일에 있으며cli 디렉터리의 deploy-managed-online-endpoint.sh. YAML 구성 파일은 엔드포인트/온라인/관리/샘플/ 하위 디렉터리에 있습니다.

참고 항목

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

엔드포인트 정의

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

엔드포인트 이름 설정

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

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

엔드포인트 구성:

다음 코드 조각은 엔드포인트/온라인/관리/샘플/endpoint.yml 파일을 보여 줍니다.

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

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

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

배포 정의

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

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

배포 구성

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

다음 코드 조각은 배포를 구성하는 데 필요한 모든 입력과 함께 엔드포인트/온라인/관리/샘플/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-ubuntu22.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 파일을 사용합니다.

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_state .입니다 Succeeded.

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

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

설명
Creating 리소스를 만드는 중입니다.
Updating 리소스를 업데이트 중입니다.
Deleting 리소스를 삭제하는 중입니다.
Succeeded 만들기 또는 업데이트 작업이 성공했습니다.
Failed 만들기, 업데이트 또는 삭제 작업이 실패했습니다.

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

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 형식을 사용합니다.

등록을 위해 model 폴더의 environment YAML 정의를 별도의 YAML 파일로 추출하고 명령 및 az ml model create를 사용할 수 있습니다az ml environment create. 이러한 명령에 대해 자세히 알아보려면 az ml model create -haz ml environment create -h를 실행합니다.

  1. 모델에 대한 YAML 정의를 만듭니다. 파일 이름을 model.yml:

    $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 endpoints/online/managed/sample/model.yml
    
  3. 환경에 대한 YAML 정의를 만듭니다. 파일 이름을 environment.yml:

    $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 endpoints/online/managed/sample/environment.yml
    

모델을 자산으로 등록하는 방법에 대한 자세한 내용은 Azure CLI 또는 Python SDK를 사용하여 모델 등록을 참조하세요. 환경을 만드는 방법에 대한 자세한 내용은 사용자 지정 환경 만들기를 참조하세요.

중요합니다

배포에 대한 사용자 지정 환경을 정의할 때 패키지가 azureml-inference-server-http conda 파일에 포함되어 있는지 확인합니다. 이 패키지는 유추 서버가 제대로 작동하기 위해 필수적입니다. 고유한 사용자 정의 환경을 만드는 방법에 익숙하지 않은 경우, minimal-py-inference을 사용하지 않는 모델용 mlflow 또는 mlflow-py-inference을 사용하는 모델용 mlflow와 같은 큐레이팅된 환경 중 하나를 사용하십시오. 이러한 큐레이팅된 환경은 Azure Machine Learning 스튜디오 인스턴스의 환경 탭에서 찾을 수 있습니다.

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

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

배포 정의에 등록된 자산(모델 및 환경)을 사용합니다. 다음 코드 조각은 배포를 구성하는 데 필요한 모든 입력과 함께 엔드포인트/온라인/관리/샘플/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 컴퓨팅 유형 버전 및 GPU Docker 이미지를 선택합니다.

지원되는 범용 및 GPU 인스턴스 유형은 관리형 온라인 엔드포인트 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 플래그를 추가할 수 있습니다. 그러나 이 옵션은 배포 상태의 대화형 표시를 중지합니다.

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

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

온라인 엔드포인트의 상태 확인

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

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

    az ml online-endpoint list --output table
    

온라인 배포 상태 확인

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

컨테이너에서 로그 출력을 보려면 다음 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. 온라인/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의 변경 내용은 기본 Resource Manager 리소스(엔드포인트 및 배포)에 반영됩니다. 선언적 접근 방식은 GitOps를 용이하게 합니다. 엔드포인트 및 배포에 대한 모든 변경 내용(짝수 instance_count)은 YAML을 통과합니다.

    CLI 명령을 사용하여 --set, 예를 들어 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를 기반으로 경고를 설정하려면 Monitor 온라인 엔드포인트에 설명된 단계를 따릅니다.

(선택 사항) Log Analytics와 통합

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

엔드포인트 및 배포 삭제

다음 명령을 사용하여 엔드포인트 및 모든 기본 배포를 삭제합니다.

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