이 문서에서는 실시간 유추에 사용하기 위해 모델을 온라인 엔드포인트에 배포하는 방법을 알아봅니다. 먼저 로컬 컴퓨터에 모델을 배포하여 오류를 디버깅합니다. 그런 다음 Azure에서 모델을 배포 및 테스트하고, 배포 로그를 보고, SLA(서비스 수준 계약)를 모니터링합니다. 이 문서가 끝나면 실시간 유추에 사용할 수 있는 확장 가능한 HTTPS/REST 엔드포인트를 갖게 됩니다.
온라인 엔드포인트란 실시간 유추에 사용되는 엔드포인트입니다. 온라인 엔드포인트에는 관리형 온라인 엔드포인트와 Kubernetes 온라인 엔드포인트의 두 가지 유형이 있습니다. 엔드포인트 및 관리형 온라인 엔드포인트와 Kubernetes 온라인 엔드포인트 간의 차이점에 대한 자세한 내용은 Azure Machine Learning 엔드포인트란?을 참조하세요.
관리형 온라인 엔드포인트는 턴키 방식으로 기계 학습 모델을 배포하는 데 도움이 됩니다. 관리형 온라인 엔드포인트는 확장성 있는 완전 관리형 방식으로 Azure의 강력한 CPU 및 GPU 머신에서 작동합니다. 관리형 온라인 엔드포인트는 모델 제공, 크기 조정, 보안 및 모니터링을 처리하여 기본 인프라를 설정하고 관리하는 오버헤드로부터 벗어날 수 있습니다.
이 문서의 주요 예제에서는 배포에 관리형 온라인 엔드포인트를 사용합니다. Kubernetes를 대신 사용하려면 이 문서의 참고 사항을 관리형 온라인 엔드포인트에 대한 설명과 함께 참조하세요.
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 Azure Machine Learning 작업 영역에 대한 소유자 또는 기여자 역할이 할당되거나 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*를 허용하는 사용자 지정 역할이 할당되어야 합니다. Studio를 사용하여 온라인 엔드포인트/배포를 만들기/관리하는 경우 리소스 그룹 소유자로부터 "Microsoft.Resources/deployments/write" 권한이 추가로 필요합니다. 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.
(선택 사항) 로컬로 배포하려면 로컬 컴퓨터에 Docker 엔진을 설치해야 합니다. 문제를 더 쉽게 디버그할 수 있도록 이 옵션을 권장합니다.
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 Azure Machine Learning 작업 영역에 대한 소유자 또는 기여자 역할이 할당되거나 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*를 허용하는 사용자 지정 역할이 할당되어야 합니다. 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.
(선택 사항) 로컬로 배포하려면 로컬 컴퓨터에 Docker 엔진을 설치해야 합니다. 문제를 더 쉽게 디버그할 수 있도록 이 옵션을 권장합니다.
Azure Machine Learning 작업 영역 및 컴퓨팅 인스턴스. 이러한 리소스가 없고 이를 만들려면 빠른 시작: 작업 영역 리소스 만들기 문서의 단계를 따릅니다.
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 Azure Machine Learning 작업 영역에 대한 소유자 또는 기여자 역할이 할당되거나 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*를 허용하는 사용자 지정 역할이 할당되어야 합니다. 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.
참고 항목
기계 학습을 위한 Azure CLI 및 CLI 확장은 이러한 단계에서 사용되지만 기본 포커스가 아닙니다. 유틸리티로 더 많이 사용되고, 템플릿을 Azure에 전달하며, 템플릿 배포의 상태 확인합니다.
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 Azure Machine Learning 작업 영역에 대한 소유자 또는 기여자 역할이 할당되거나 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*를 허용하는 사용자 지정 역할이 할당되어야 합니다. 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.
배포를 위해 할당된 VM(가상 머신) 할당량이 충분한지 확인합니다. Azure Machine Learning은 일부 VM SKU에서 업그레이드를 수행하기 위해 컴퓨팅 리소스의 20%를 예약합니다. 예를 들어, 배포에서 10개의 인스턴스를 요청하는 경우 VM SKU의 각 코어 수에 대해 12개의 할당량이 있어야 합니다. 추가 컴퓨팅 리소스를 고려하지 않으면 오류가 발생합니다. 추가 할당량 예약에서 제외되는 일부 VM SKU가 있습니다. 할당량 할당에 대한 자세한 내용은 배포를 위한 가상 머신 할당량 할당을 참조하세요.
또는 제한된 시간 동안 Azure Machine Learning의 공유 할당량 풀에서 할당량을 사용할 수 있습니다. Azure Machine Learning은 다양한 지역의 사용자가 할당량에 액세스하여 가용성에 따라 제한된 시간 동안 테스트를 수행할 수 있는 공유 할당량 풀을 제공합니다.
스튜디오를 사용하여 모델 카탈로그의 Llama-2, Phi, Nemotron, Mistral, Dolly 및 Deci-DeciLM 모델을 관리형 온라인 엔드포인트에 배포하는 경우 Azure Machine Learning을 사용하면 잠시 공유 할당량 풀에 액세스하여 테스트를 수행할 수 있습니다. 공유 할당량 풀에 대한 자세한 내용은 Azure Machine Learning 공유 할당량을 참조하세요.
작업 영역은 Azure Machine Learning의 최상위 리소스로, Azure Machine Learning을 사용할 때 만든 모든 아티팩트를 사용할 수 있는 중앙 집중식 환경을 제공합니다. 이 섹션에서는 배포 작업을 수행하는 작업 영역에 연결합니다. 따라하려면 online-endpoints-simple-deployment.ipynb Notebook을 엽니다.
필요한 라이브러리 가져오기:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
참고 항목
Kubernetes 온라인 엔드포인트를 사용하는 경우 azure.ai.ml.entities 라이브러리에서 KubernetesOnlineEndpoint 및 KubernetesOnlineDeployment 클래스를 가져옵니다.
작업 영역 세부 정보를 구성하고 작업 영역에 대한 핸들을 가져옵니다.
작업 영역에 연결하려면 구독, 리소스 그룹 및 작업 영역 이름과 같은 식별자 매개 변수가 필요합니다. azure.ai.ml의 MLClient에서 이러한 세부 정보를 사용하여 필요한 Azure Machine Learning 작업 영역에 대한 핸들을 가져옵니다. 이 예제에서는 기본 Azure 인증을 사용합니다.
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
로컬 컴퓨터에 Git이 설치되어 있는 경우 지침에 따라 예제 리포지토리를 복제할 수 있습니다. 그렇지 않으면 지침에 따라 예제 리포지토리에서 파일을 다운로드합니다.
예제 리포지토리 복제
이 문서를 따라하려면 먼저 예제 리포지토리(azureml-examples)를 복제한 다음 azureml-examples/cli/endpoints/online/model-1 디렉터리로 변경합니다.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
팁
--depth 1을 사용하여 최신 커밋만 리포지토리에 복제하여 작업을 완료하는 데 걸리는 시간을 줄입니다.
예제 리포지토리에서 파일 다운로드
예제 리포지토리를 복제한 경우 로컬 컴퓨터에는 이미 이 예제에 대한 파일 복사본이 있으므로 다음 섹션으로 건너뛸 수 있습니다. 리포지토리를 복제하지 않은 경우 로컬 컴퓨터에 다운로드할 수 있습니다.
폴더 /cli/endpoints/online/model-1/model 및 /cli/endpoints/online/model-1/onlinescoring/score.py 파일을 찾습니다.
환경 변수 설정
이 문서의 예제에서 사용되는 다음 환경 변수를 설정합니다. 값을 Azure 구독 ID, 작업 영역이 있는 Azure 지역, 작업 영역이 포함된 리소스 그룹 및 작업 영역 이름으로 바꿉니다.
export SUBSCRIPTION_ID="your Azure subscription ID"
export LOCATION="Azure region where your workspace is located"
export RESOURCE_GROUP="Azure resource group that contains your workspace"
export WORKSPACE="Azure Machine Learning workspace name"
몇 가지 템플릿 예제를 사용하려면 작업 영역에 대한 Azure Blob 저장소에 파일을 업로드해야 합니다. 다음 단계에서는 작업 영역을 쿼리하고 이 정보를 예제에 사용된 환경 변수에 저장합니다.
엔드포인트 YAML 형식에 대한 참조는 다음 표에 설명되어 있습니다. 이러한 특성을 지정하는 방법을 알아보려면 온라인 엔드포인트 YAML 참조를 참조하세요. 관리형 엔드포인트 관련 한도에 대한 자세한 내용은 온라인 엔드포인트에 대한 한도를 참조하세요.
키
설명
$schema
(선택 사항) YAML 스키마입니다. YAML 파일에서 사용 가능한 모든 옵션을 보려면 브라우저에서 이전 코드 조각의 스키마를 볼 수 있습니다.
name
엔드포인트의 이름입니다.
auth_mode
키 기반 인증의 경우 key를 사용합니다. Azure Machine Learning 토큰 기반 인증에 대해 aml_token을 사용합니다. Microsoft Entra 토큰 기반 인증(미리 보기)에는 aad_token을 사용합니다. 인증에 대한 자세한 내용은 온라인 엔드포인트에 대한 클라이언트 인증을 참조하세요.
엔드포인트 구성
먼저 온라인 엔드포인트의 이름을 정의한 다음 엔드포인트를 구성합니다.
엔드포인트 이름은 Azure 지역에서 고유해야 합니다. 명명 규칙에 대한 자세한 내용은 엔드포인트 제한을 참조하세요.
# Define an endpoint name
endpoint_name = "my-endpoint"
# Example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
이전 코드는 키 기반 인증에 key를 사용합니다. Azure Machine Learning 토큰 기반 인증을 사용하려면 aml_token을 사용합니다. Microsoft Entra 토큰 기반 인증(미리 보기)을 사용하려면 aad_token을 사용합니다. 인증에 대한 자세한 내용은 온라인 엔드포인트에 대한 클라이언트 인증을 참조하세요.
엔드포인트 구성
스튜디오에서 Azure에 배포할 때 엔드포인트와 여기에 추가할 배포를 만듭니다. 이때 엔드포인트 및 배포에 대한 이름을 입력하라는 메시지가 표시됩니다.
엔드포인트 이름 설정
엔드포인트 이름을 설정하려면 다음 명령을 실행합니다. YOUR_ENDPOINT_NAME을 Azure 지역에서 고유한 이름으로 바꿉니다. 명명 규칙에 대한 자세한 내용은 엔드포인트 제한을 참조하세요.
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를 대상으로 지정합니다. compute의 값을 등록된 컴퓨팅 대상의 이름으로 변경하려면 YAML을 편집해야 합니다. Kubernetes 배포에 적용할 수 있는 추가 속성이 있는 이 deployment.yaml을 사용할 수 있습니다.
이 문서에서 관리형 온라인 엔드포인트에 사용되는 모든 명령은 Kubernetes 엔드포인트에 적용되지 않는 다음 기능을 제외하고 Kubernetes 엔드포인트에도 적용됩니다.
Model - path(파일을 업로드할 위치)를 사용하여 모델 속성을 인라인으로 지정합니다. SDK는 자동으로 모델 파일을 업로드하고 자동 생성된 이름으로 모델을 등록합니다.
Environment - 파일을 업로드할 위치가 포함된 인라인 정의를 사용하여 SDK는 자동으로 conda.yaml 파일을 업로드하고 환경을 등록합니다. 나중에 환경을 빌드하기 위해 배포는 기본 이미지에 대해 image(이 예에서는 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest)를 사용하고 conda_file 종속성은 기본 이미지 위에 설치됩니다.
CodeConfiguration - 배포하는 동안 채점 모델의 Python 원본과 같은 로컬 파일이 개발 환경에서 업로드됩니다.
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 CLI 또는 Python 탭을 참조하세요.
템플릿은 로컬 엔드포인트를 지원하지 않습니다. 엔드포인트를 로컬로 테스트하는 단계는 Azure CLI 또는 Python 탭을 참조하세요.
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 -h 및 az ml environment create -h를 실행합니다.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
환경 등록:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
배포 정의에 등록된 자산(모델 및 환경)을 사용합니다. 다음 코드 조각은 배포를 구성하는 데 필요한 모든 입력이 포함된 endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml 파일을 보여 줍니다.
로컬 배포와 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 이미지를 선택합니다.
로컬 배포와 Azure 배포 모두에 대한 배포 구성에서 CPU 또는 GPU 인스턴스 형식과 이미지를 지정할 수 있습니다.
이전에는 범용 형식 Standard_DS3_v2 인스턴스와 비 GPU Docker 이미지 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest를 사용하는 배포를 구성했습니다. GPU 컴퓨팅의 경우 GPU 컴퓨팅 유형 SKU 및 GPU Docker 이미지를 선택합니다.
환경의 이전 등록은 dockerImage 매개 변수를 사용하여 environment-version.json 템플릿에 값을 전달하여 GPU가 아닌 Docker 이미지(mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04)를 지정합니다. GPU 컴퓨팅의 경우 템플릿에 GPU Docker 이미지의 값을 제공하고(dockerImage 매개 변수 사용) online-endpoint-deployment.json 템플릿에 GPU 컴퓨팅 형식 SKU를 제공합니다(skuName 매개 변수 사용).
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
엔드포인트 아래에 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"입니다.
엔드포인트 만들기:
이전에 정의한 endpoint와 이전에 만든 MLClient를 사용하여 이제 작업 영역에서 엔드포인트를 만들 수 있습니다. 이 명령은 엔드포인트 만들기를 시작하고 엔드포인트 만들기가 계속되는 동안 확인 응답을 반환합니다.
스튜디오를 사용하여 브라우저에서 직접 관리형 온라인 엔드포인트를 만듭니다. 스튜디오에서 관리형 온라인 엔드포인트를 만들 때 초기 배포를 정의해야 합니다. 비어 있는 관리형 온라인 엔드포인트를 만들 수 없습니다.
스튜디오에서 관리형 온라인 엔드포인트를 만드는 한 가지 방법은 모델 페이지에서 사용하는 것입니다. 이 방법은 또한 기존의 관리형 온라인 배포에 모델을 추가하는 쉬운 방법을 제공합니다. 이전에 모델 및 환경 등록 섹션에서 등록한 model-1이라는 모델을 배포하려면 다음 안내를 따릅니다.
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
이 메서드는 ManagedOnlineEndpoint 엔터티의 목록(반복기)을 반환합니다.
추가 매개 변수를 지정하면 더 많은 정보를 가져올 수 있습니다. 예를 들어 테이블과 같은 엔드포인트 목록을 출력합니다.
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
관리형 온라인 엔드포인트 보기
엔드포인트 페이지에서 모든 관리형 온라인 엔드포인트를 볼 수 있습니다. 엔드포인트 세부 정보 페이지로 이동하여 엔드포인트 URI, 상태, 테스트 도구, 작업 모니터, 배포 로그 및 샘플 사용 코드를 비롯한 중요한 정보를 찾을 수 있습니다.
왼쪽 탐색 모음에서 엔드포인트를 선택합니다. 여기에서 작업 영역의 모든 엔드포인트 목록을 볼 수 있습니다.
(선택 사항) 관리형 컴퓨팅 유형만 표시하도록 컴퓨팅 유형에 대한 필터를 만듭니다.
엔드포인트의 세부 정보 페이지를 보려면 엔드포인트 이름을 선택합니다.
팁
템플릿은 리소스를 배포하는 데 유용하지만 리소스를 나열, 표시 또는 호출하는 데 사용할 수 없습니다. Azure CLI, Python SDK 또는 스튜디오를 사용하여 이러한 작업을 수행합니다. 다음 코드는 Azure CLI를 사용합니다.
엔드포인트 및 배포에 대한 정보를 provisioning_state에 표시하려면 show 명령을 사용합니다.
로그 출력을 보려면 엔드포인트 페이지에서 로그 탭을 선택합니다. 엔드포인트에 여러 배포가 있는 경우 드롭다운을 사용하여 로그를 보려는 배포를 선택합니다.
기본적으로 로그는 유추 서버에서 풀합니다. 스토리지 이니셜라이저 컨테이너에서 로그를 보려면 Azure CLI 또는 Python SDK를 사용합니다(자세한 내용은 각 탭 참조). 스토리지 이니셜라이저의 로그에는 코드 및 모델 데이터가 컨테이너에 성공적으로 다운로드되었는지 여부에 대한 정보가 포함됩니다. 배포 로그에 대한 자세한 내용은 컨테이너 로그 가져오기를 참조하세요.
팁
템플릿은 리소스를 배포하는 데 유용하지만 리소스를 나열, 표시 또는 호출하는 데 사용할 수 없습니다. Azure CLI, Python SDK 또는 스튜디오를 사용하여 이러한 작업을 수행합니다. 다음 코드는 Azure CLI를 사용합니다.
컨테이너에서 로그 출력을 보려면 다음 CLI 명령을 사용합니다.
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
기본적으로 로그는 유추 서버에서 풀합니다. 스토리지 이니셜라이저 컨테이너에서 로그를 보려면 --container storage-initializer 플래그를 추가합니다. 배포 로그에 대한 자세한 내용은 컨테이너 로그 가져오기를 참조하세요.
선택한 invoke 명령 또는 REST 클라이언트를 사용하여 엔드포인트를 호출하고 일부 데이터를 채점합니다.
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
엔드포인트에 인증하는 데 사용되는 키를 가져옵니다.
팁
Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action 및 Microsoft.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)
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
인증 자격 증명을 가져오려면 show 및 get-credentials 명령을 사용합니다. 또한 필요한 특성만 필터링하기 위해 --query 플래그를 사용하고 있다는 점에 유의해야 합니다. --query 플래그에 대해 자세히 알아보려면 Azure CLI 명령 출력 쿼리를 참조하세요.
호출 로그를 보려면 get-logs를 다시 실행합니다.
이전에 만들어진 MLClient를 사용하여 엔드포인트에 대한 핸들을 가져옵니다. 그리고 다음 매개 변수와 함께 invoke 명령을 사용하여 엔드포인트를 호출할 수 있습니다.
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
엔드포인트 세부 정보 페이지의 테스트 탭을 사용하여 관리형 온라인 배포를 테스트합니다. 샘플 입력을 입력하고 결과를 봅니다.
코드, 모델 또는 환경을 업데이트하려면 YAML 파일을 업데이트한 다음 az ml online-endpoint update 명령을 실행합니다.
참고 항목
배포 확장을 위해 단일 update 명령에서 인스턴스 수를 다른 모델 설정(코드, 모델 또는 환경)과 함께 업데이트하는 경우 먼저 크기 조정 작업이 수행된 후에 다른 업데이트가 적용됩니다. 프로덕션 환경에서는 이러한 작업을 별도로 수행하는 것이 좋습니다.
update의 작동 방식을 이해하려면 다음을 수행합니다.
online/model-1/onlinescoring/score.py 파일을 엽니다.
init() 함수의 마지막 줄을 변경합니다. logging.info("Init complete") 다음에 logging.info("Updated successfully")를 추가합니다.
파일을 저장합니다.
다음 명령을 실행합니다.
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와 같은 것을 시도해 볼 수 있습니다. 이렇게 하면 기존 구성이 모두 유지되지만 지정된 매개 변수만 업데이트됩니다.
엔드포인트가 생성되거나 업데이트될 때 실행되는 init() 함수를 수정했으므로 로그에 Updated successfully 메시지가 표시됩니다. 다음을 실행하여 로그를 검색합니다.
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
update 명령은 로컬 배포에서도 작동합니다. 동일한 az ml online-deployment update 명령에 --local 플래그를 사용합니다.
코드, 모델 또는 환경을 업데이트하려면 구성을 업데이트한 다음, MLClient의 online_deployments.begin_create_or_update 메서드를 실행하여 배포를 만들거나 업데이트합니다.
참고 항목
배포 확장을 위해 단일 begin_create_or_update 메서드에서 인스턴스 수를 다른 모델 설정(코드, 모델 또는 환경)과 함께 업데이트하는 경우 먼저 크기 조정 작업이 수행된 후에 다른 업데이트가 적용됩니다. 프로덕션 환경에서는 이러한 작업을 별도로 수행하는 것이 좋습니다.
begin_create_or_update의 작동 방식을 이해하려면 다음을 수행합니다.
online/model-1/onlinescoring/score.py 파일을 엽니다.
init() 함수의 마지막 줄을 변경합니다. logging.info("Init complete") 다음에 logging.info("Updated successfully")를 추가합니다.
begin_create_or_update 메서드는 로컬 배포에서도 작동합니다. local=True 플래그와 함께 동일한 메서드를 사용합니다.
현재 스튜디오를 사용하면 배포의 인스턴수 수만 업데이트할 수 있습니다. 다음 지침에 따라 인스턴스 수를 조정하여 개별 배포를 스케일 업 또는 다운합니다.
엔드포인트의 세부 정보 페이지를 열고 업데이트하려는 배포에 대한 카드 찾습니다.
배포 이름 옆에 있는 편집 아이콘(연필 아이콘)을 선택합니다.
배포와 연결된 인스턴스 수를 업데이트합니다. "배포 크기 조정 유형"에 대한 기본 또는 대상 사용률 중에서 선택할 수 있습니다.
기본값을 선택하면 인스턴스 수에 대한 숫자 값도 지정합니다.
대상 사용률을 선택하는 경우 배포를 자동 크기 조정할 때 매개 변수에 사용할 값을 지정할 수 있습니다.
업데이트를 선택하여 배포에 대한 인스턴스 수 업데이트를 완료합니다.
현재 ARM 템플릿을 사용하여 배포를 업데이트하는 옵션은 없습니다.
참고 항목
이 섹션의 배포 업데이트는 현재 위치 롤링 업데이트의 예입니다.
관리형 온라인 엔드포인트의 경우 배포가 한 번에 20%의 노드가 있는 새 구성으로 업데이트됩니다. 즉, 배포에 10개의 노드가 있으면 한 번에 2개의 노드가 업데이트됩니다.
Kubernetes 온라인 엔드포인트의 경우 시스템은 새 구성으로 새 배포 인스턴스를 반복적으로 만들고 이전 인스턴스를 삭제합니다.
프로덕션 사용량의 경우 웹 서비스를 업데이트하기 위한 보다 안전한 대안을 제공하는 파란색-녹색 배포를 고려해야 합니다.
(선택 사항) 자동 크기 조정 구성
자동 크기 조정은 애플리케이션의 로드를 처리하기 위해 적절한 양의 리소스를 자동으로 실행합니다. 관리되는 온라인 엔드포인트는 Azure Monitor 자동 크기 조정 기능과의 통합을 통해 자동 크기 조정을 지원합니다. 자동 크기 조정을 구성하려면 온라인 엔드포인트를 자동 크기 조정하는 방법을 참조하세요.
(선택 사항) Azure Monitor를 사용하여 SLA 모니터링
SLA에 따라 메트릭을 보고 알림을 설정하려면 온라인 엔드포인트 모니터링에 설명된 단계를 완료하세요.
(선택 사항) Log Analytics와 통합
CLI용 get-logs 명령 또는 SDK용 get_logs 메서드는 자동으로 선택된 인스턴스에서 로그의 마지막 수백 줄만 제공합니다. 그러나 Log Analytics는 지속적으로 로그를 저장하고 분석하는 방법을 제공합니다. 로깅 사용에 대한 자세한 내용은 온라인 엔드포인트 모니터링을 참조하세요.