적용 대상:
Azure CLI ml 확장 v2(현재)
Python SDK azure-ai-ml v2(현재)
이 문서에서는 온라인 엔드포인트를 사용하여 Azure Machine Learning에서 NVIDIA Triton 유추 서버를 사용하는 방법을 설명합니다.
Triton은 유추에 최적화된 다중 프레임워크 오픈 소스 소프트웨어입니다. TensorFlow, ONNX 런타임, PyTorch 및 NVIDIA TensorRT와 같은 인기 있는 기계 학습 프레임워크를 지원합니다. CPU 또는 GPU 워크로드에 사용할 수 있습니다.
Triton 모델을 온라인 엔드포인트에 배포할 때 사용할 수 있는 두 가지 주요 방법은 코드 없는 배포 또는 전체 코드(Bring Your Own Container) 배포입니다.
- Triton 모델에 대한 코드 없는 배포는 배포할 Triton 모델만 가져와야 하기 때문에 배포하는 간단한 방법입니다.
- Triton 모델에 대한 전체 코드 배포는 Triton 유추 서버에 사용할 수 있는 구성 사용자 지정을 완전히 제어할 수 있으므로 이를 배포하는 고급 방법입니다.
두 옵션 모두 Triton 유추 서버는 NVIDIA에서 정의한 대로 Triton 모델을 기반으로 추론을 수행합니다. 예를 들어, 앙상블 모델은 고급 시나리오에 사용될 수 있습니다.
Triton은 관리형 온라인 엔드포인트와 Kubernetes 온라인 엔드포인트 모두에서 지원됩니다.
이 문서에서는 Triton용 코드 없는 배포를 사용하여 관리되는 온라인 엔드포인트에 모델을 배포하는 방법을 알아봅니다. Azure CLI, Python SDK v2 및 Azure Machine Learning 스튜디오를 사용하기 위한 정보가 제공됩니다. Triton 유추 서버의 구성을 직접 사용하여 추가로 사용자 지정하려면 사용자 지정 컨테이너를 사용하여 모델을 배포 하고 Triton에 대한 BYOC 예제(배포 정의 및 엔드 투 엔드 스크립트)를 참조하세요.
참고
NVIDIA Triton 유추 서버 컨테이너의 사용은 NVIDIA AI 엔터프라이즈 소프트웨어 사용권 계약으로 적용되며 엔터프라이즈 제품 구독 없이 90일 동안 사용할 수 있습니다. 자세한 내용은 Azure Machine Learning의 NVIDIA AI 엔터프라이즈를 참조하세요.
필수 구성 요소
Azure CLI 및
mlAzure CLI에 대한 확장(설치 및 구성됨)입니다. 자세한 내용은 CLI 설치 및 설정(v2)을 참조하세요.Bash 셸 또는 호환되는 셸(예: Linux 시스템의 셸 또는 Linux용 Windows 하위 시스템). 이 문서의 Azure CLI 예제에서는 이 유형의 셸을 사용한다고 가정합니다.
Azure Machine Learning 작업 영역 작업 영역을 만드는 지침은 설정(Set up)을 참조하세요.
작동하는 Python 3.8 이상 환경입니다.
점수 매기기 위해 추가 Python 패키지가 설치되어 있어야 합니다. 다음 코드를 사용하여 설치할 수 있습니다. 해당 기능은 아래와 같습니다.
- NumPy. 배열 및 숫자 컴퓨팅 라이브러리입니다.
- Triton 유추 서버 클라이언트입니다. Triton 유추 서버에 대한 요청을 용이하게 합니다.
- 베개. 이미지 작업을 위한 라이브러리입니다.
- 게벤트. Triton 서버에 연결하는 데 사용되는 네트워킹 라이브러리입니다.
pip install numpy pip install tritonclient[http] pip install pillow pip install geventAzure 구독의 NCv3 시리즈 VM에 대한 액세스
중요합니다
이 VM 시리즈를 사용하려면 먼저 구독에 대한 할당량 증가를 요청해야 할 수도 있습니다. 자세한 내용은 NCv3 시리즈를 참조하세요.
NVIDIA Triton 유추 서버에는 모델 버전에 대한 각 모델 및 하위 디렉터리에 대한 디렉터리가 있는 특정 모델 리포지토리 구조가 필요합니다. 각 모델 버전 하위 디렉터리의 콘텐츠는 모델의 유형과 모델을 지원하는 백 엔드의 요구 사항에 따라 결정됩니다. 모든 모델의 구조에 대한 자세한 내용은 모델 파일을 참조하세요.
이 문서의 정보는 ONNX 형식으로 저장된 모델의 사용을 기반으로 하므로 모델 리포지토리의 디렉터리 구조는
<model-repository>/<model-name>/1/model.onnx입니다. 특히 이 모델은 이미지 식별을 수행합니다.
이 문서의 정보는 azureml-examples 리포지토리에 포함된 코드 샘플을 기준으로 합니다. YAML 및 기타 파일 복사/붙여넣기를 수행할 필요 없이 명령을 로컬로 실행하려면 리포지토리를 복제한 다음, 디렉터리를 리포지토리의 cli 디렉터리로 변경합니다.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
Azure CLI에 대한 기본값을 아직 설정하지 않은 경우 기본 설정을 저장합니다. 구독, 작업 영역 및 리소스 그룹에 대한 값을 여러 번 전달하지 않으려면 다음 명령을 사용합니다. 다음 매개 변수를 특정 구성에 대한 값으로 바꿉니다.
-
<subscription>를 Azure 구독 ID로 바꿉니다. -
<workspace>을(를) Azure Machine Learning 작업 영역 이름으로 바꿉니다. -
<resource-group>을 작업 영역이 포함된 Azure 리소스 그룹으로 바꿉니다. -
<location>을 작업 영역이 포함된 Azure 지역으로 바꿉니다.
팁
현재 기본값은 az configure -l 명령을 사용하여 확인할 수 있습니다.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
배포 구성 정의
적용 대상:
Azure CLI ml 확장 v2(현재)
이 섹션에서는 Machine Learning 확장(v2)과 함께 Azure CLI를 사용하여 관리되는 온라인 엔드포인트에 배포하는 방법을 설명합니다.
중요합니다
Triton 코드 없는 배포의 경우 로컬 엔드포인트를 통한 테스트 는 현재 지원되지 않습니다.
여러 명령에 대한 경로를 입력하지 않으려면 다음 명령을 사용하여
BASE_PATH환경 변수를 설정합니다. 이 변수는 모델 및 관련 YAML 구성 파일이 있는 디렉터리를 가리킵니다.BASE_PATH=endpoints/online/triton/single-model다음 명령을 사용하여 만들 엔드포인트의 이름을 설정합니다. 다음 예제에서는 엔드포인트에 대한 임의의 이름을 만듭니다.
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`엔드포인트에 대한 YAML 구성 파일을 만듭니다. 다음 예제에서는 엔드포인트의 이름과 인증 모드를 구성합니다. 다음 명령에 사용된 파일은 이전에 복제한 azureml-examples 리포지토리에 있습니다
/cli/endpoints/online/triton/single-model/create-managed-endpoint.yml.create-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_token배포에 대한 YAML 구성 파일을 만듭니다. 다음 예제에서는 이전 단계에서 정의된 엔드포인트에 명명된
blue배포를 구성합니다. 다음 명령에 사용된 파일은 이전에 복제한 azureml-examples 리포지토리에 있습니다/cli/endpoints/online/triton/single-model/create-managed-deployment.yml.중요합니다
Triton의 코드 없는 배포가 작동하려면,
type을triton_model으로type: triton_model설정해야 합니다. 자세한 내용은 CLI(v2) 모델 YAML 스키마를 참조하세요.이 배포에서는 Standard_NC6s_v3 VM을 사용합니다. 이 VM을 사용하려면 먼저 구독에 대한 할당량 증가를 요청해야 할 수 있습니다. 자세한 내용은 NCv3 시리즈를 참조하세요.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint model: name: sample-densenet-onnx-model version: 1 path: ./models type: triton_model instance_count: 1 instance_type: STANDARD_NC4AS_T4_V3
Azure에 배포
적용 대상:
Azure CLI ml 확장 v2(현재)
YAML 구성을 사용하여 엔드포인트를 만들려면 다음 명령을 사용합니다.
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yamlYAML 구성을 사용하여 배포를 만들려면 다음 명령을 사용합니다.
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
엔드포인트 테스트
적용 대상:
Azure CLI ml 확장 v2(현재)
배포가 완료되면 다음 명령을 사용하여 배포된 엔드포인트에 점수 매기기 요청을 수행합니다.
팁
azureml-examples 리포지토리의 /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py 파일은 채점에 사용됩니다. 엔드포인트에 전달된 이미지는 크기, 형식 및 형식 요구 사항을 충족하기 위한 전처리와 예측된 레이블을 표시하기 위한 후처리가 필요합니다.
triton_densenet_scoring.py 파일은 tritonclient.http 라이브러리를 사용하여 Triton 추론 서버와 통신합니다. 이 파일은 클라이언트 쪽에서 실행됩니다.
엔드포인트 점수 매기기 URI를 얻으려면 다음 명령을 사용합니다.
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}인증 키를 가져오려면 다음 명령을 사용합니다.
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)엔드포인트를 사용하여 데이터의 점수를 매기려면 다음 명령을 사용합니다. 공작의 이미지를 엔드포인트에 제출합니다.
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpg스크립트의 응답은 다음 응답과 유사합니다.
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
엔드포인트 및 모델 삭제
적용 대상:
Azure CLI ml 확장 v2(현재)
엔드포인트를 완료하면 다음 명령을 사용하여 삭제합니다.
az ml online-endpoint delete -n $ENDPOINT_NAME --yes다음 명령을 사용하여 모델을 보관합니다.
az ml model archive --name sample-densenet-onnx-model --version 1
다음 단계
자세한 내용은 다음 문서를 검토하세요.