다음을 통해 공유


Triton Inference Server를 사용한 고성능 서비스 제공

적용 대상: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 CLIml Azure 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 gevent
    
  • Azure 구독의 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 코드 없는 배포의 경우 로컬 엔드포인트를 통한 테스트 는 현재 지원되지 않습니다.

  1. 여러 명령에 대한 경로를 입력하지 않으려면 다음 명령을 사용하여 BASE_PATH 환경 변수를 설정합니다. 이 변수는 모델 및 관련 YAML 구성 파일이 있는 디렉터리를 가리킵니다.

    BASE_PATH=endpoints/online/triton/single-model
    
  2. 다음 명령을 사용하여 만들 엔드포인트의 이름을 설정합니다. 다음 예제에서는 엔드포인트에 대한 임의의 이름을 만듭니다.

    export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
    
  3. 엔드포인트에 대한 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
    
  4. 배포에 대한 YAML 구성 파일을 만듭니다. 다음 예제에서는 이전 단계에서 정의된 엔드포인트에 명명된 blue 배포를 구성합니다. 다음 명령에 사용된 파일은 이전에 복제한 azureml-examples 리포지토리에 있습니다 /cli/endpoints/online/triton/single-model/create-managed-deployment.yml .

    중요합니다

    Triton의 코드 없는 배포가 작동하려면, typetriton_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(현재)

  1. YAML 구성을 사용하여 엔드포인트를 만들려면 다음 명령을 사용합니다.

    az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
    
  2. YAML 구성을 사용하여 배포를 만들려면 다음 명령을 사용합니다.

    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 추론 서버와 통신합니다. 이 파일은 클라이언트 쪽에서 실행됩니다.

  1. 엔드포인트 점수 매기기 URI를 얻으려면 다음 명령을 사용합니다.

    scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv)
    scoring_uri=${scoring_uri%/*}
    
  2. 인증 키를 가져오려면 다음 명령을 사용합니다.

    auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
    
  3. 엔드포인트를 사용하여 데이터의 점수를 매기려면 다음 명령을 사용합니다. 공작의 이미지를 엔드포인트에 제출합니다.

    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(현재)

  1. 엔드포인트를 완료하면 다음 명령을 사용하여 삭제합니다.

    az ml online-endpoint delete -n $ENDPOINT_NAME --yes
    
  2. 다음 명령을 사용하여 모델을 보관합니다.

    az ml model archive --name sample-densenet-onnx-model --version 1
    

다음 단계

자세한 내용은 다음 문서를 검토하세요.