Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

Amazon SageMaker에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 하이퍼스케일 성능 달성

머신 러닝(ML) 애플리케이션은 배포가 복잡하고 단일 추론 요청을 처리하기 위해 여러 ML 모델이 필요한 경우가 많습니다. 일반적인 요청은 사전 처리, 데이터 변환, 모델 선택 논리, 모델 집계 및 사후 처리와 같은 단계를 통해 여러 모델에 걸쳐 흐를 수 있습니다. 이로 인해 직렬 추론 파이프라인, 앙상블(산란 수집) 및 비즈니스 로직 워크플로와 같은 일반적인 디자인 패턴이 발전하여 요청의 전체 워크플로를 방향성 비순환 그래프(DAG)로 실현했습니다. 그러나 워크플로가 더 복잡해짐에 따라 이러한 애플리케이션의 전체 응답 시간 또는 대기 시간이 증가하여 전체 사용자 경험에 영향을 미칩니다. 또한 이러한 구성 요소가 서로 다른 인스턴스에서 호스팅되는 경우 이러한 인스턴스 간의 추가 네트워크 지연으로 인해 전체 지연 시간이 늘어납니다. 고객 지원에서 가상 비서에 대한 인기 있는 ML 사용 사례의 예를 고려하십시오. 일반적인 요청은 음성 인식, 자연어 처리(NLP), 대화 상태 추적, 대화 정책, 텍스트 생성 및 마지막으로 텍스트 음성 변환과 관련된 여러 단계를 거쳐야 할 수 있습니다. 또한 사용자 상호 작용을 보다 개인화하기 위해 다양한 버전의 트랜스포머 기반 NLP 모델을 사용할 수도 있습니다. BERT, 바트GPT. 최종 결과는 이러한 모델 앙상블에 대한 긴 응답 시간과 열악한 고객 경험입니다.

전체 처리량을 저하시키지 않으면서 응답 시간을 단축하는 일반적인 패턴은 이러한 모델을 동일한 인스턴스에 내장된 경량 비즈니스 로직과 함께 호스트하는 것입니다. 이러한 모델은 실행 중인 프로세스를 격리하고 대기 시간을 낮게 유지하기 위해 동일한 인스턴스의 단일 또는 여러 컨테이너 내에 추가로 캡슐화할 수 있습니다. 또한 전체 대기 시간은 추론 애플리케이션 로직, 모델 최적화, 기본 인프라(컴퓨팅, 스토리지 및 네트워킹 포함) 및 추론 요청을 받는 기본 웹 서버에 따라 달라집니다. NVIDIA Triton 추론 서버 초저(한자리 밀리초) 추론 대기 시간으로 처리량 및 하드웨어 활용도를 극대화하는 기능을 갖춘 오픈 소스 추론 서비스 소프트웨어입니다. ML 프레임워크(TensorFlow, PyTorch, ONNX, XGBoost 및 NVIDIA TensorRT 포함)와 GPU, CPU 및 AWS 인 페렌 시아. 또한 Triton 추론 서버는 다음과 통합됩니다. 아마존 세이지 메이커, 다음을 포함한 실시간 추론 옵션을 제공하는 완전 관리형 종단 간 ML 서비스 단일다중 모델 호스팅. 이러한 추론 옵션에는 뒤에 있는 동일한 컨테이너 내에서 여러 모델을 호스팅하는 것이 포함됩니다. 단일 엔드포인트, 호스팅 여러 컨테이너가 있는 여러 모델 단일 엔드포인트 뒤에 있습니다.

2021년 XNUMX월에 발표했습니다. SageMaker에 Triton 추론 서버 통합. AWS는 NVIDIA와 긴밀하게 협력하여 두 가지 장점을 모두 활용하고 AWS에서 Triton을 사용하여 모델을 더 쉽게 배포할 수 있도록 했습니다.

이 게시물에서는 SageMaker에서 Triton Inference Server를 사용하여 GPU에서 대규모로 변압기 모델을 배포하는 모범 사례를 살펴봅니다. 먼저 SageMaker의 대기 시간과 관련된 주요 개념의 요약과 성능 조정 지침의 개요로 시작합니다. 다음으로 Triton과 그 기능에 대한 개요와 SageMaker에 배포하기 위한 예제 코드를 제공합니다. 마지막으로 다음을 사용하여 부하 테스트를 수행합니다. SageMaker 추론 추천자 Hugging Face에서 제공하는 인기 있는 변압기 모델의 부하 테스트에서 얻은 통찰력과 결론을 요약합니다.

당신은 검토 할 수 있습니다 수첩 우리는 모델을 배포하고 코드를 사용하여 스스로 부하 테스트를 수행했습니다. GitHub의.

SageMaker에서 모델 제공을 위한 성능 조정 및 최적화

성능 조정 및 최적화는 종종 여러 번 반복되는 경험적 프로세스입니다. 조정할 매개변수의 수는 조합적이며 구성 매개변수 값 세트는 서로 독립적이지 않습니다. 페이로드 크기, 유형 및 추론 요청 흐름 그래프의 ML 모델 수, 스토리지 유형, 컴퓨팅 인스턴스 유형, 네트워크 인프라, 애플리케이션 코드, 추론 제공 소프트웨어 런타임 및 구성 등 다양한 요인이 최적의 매개변수 조정에 영향을 미칩니다.

SageMaker를 사용하여 ML 모델을 배포하는 경우 가격 대비 성능이 가장 우수한 컴퓨팅 인스턴스를 선택해야 합니다. 이는 몇 주 동안의 실험이 필요할 수 있는 복잡하고 반복적인 프로세스입니다. 먼저 모델의 리소스 요구 사항과 입력 데이터의 크기를 기반으로 70개 이상의 옵션 중에서 올바른 ML 인스턴스 유형을 선택해야 합니다. 다음으로 선택한 인스턴스 유형에 대해 모델을 최적화해야 합니다. 마지막으로 부하 테스트를 실행하고 최적의 성능과 비용을 위해 클라우드 구성을 조정하기 위한 인프라를 프로비저닝 및 관리해야 합니다. 이 모든 것이 모델 배포와 출시 시간을 지연시킬 수 있습니다. 또한 최적의 배포 구성을 선택하려면 대기 시간, 처리량 및 비용 간의 균형을 평가해야 합니다. SageMaker 추론 추천자 추론을 위해 올바른 컴퓨팅 인스턴스 유형, 인스턴스 수, 컨테이너 매개변수 및 모델 최적화를 자동으로 선택하여 처리량을 최대화하고 지연 시간을 줄이며 비용을 최소화합니다.

SageMaker의 실시간 추론 및 대기 시간

SageMaker 실시간 추론 실시간 대화형 저지연 요구 사항이 있는 추론 워크로드에 이상적입니다. SageMaker 추론 엔드포인트에 대한 추론 요청 대기 시간을 모니터링하는 데 가장 일반적으로 사용되는 XNUMX가지 메트릭이 있습니다.

  • 컨테이너 지연 시간 – 요청을 보내고 모델의 컨테이너에서 응답을 가져오고 컨테이너에서 추론을 완료하는 데 걸리는 시간입니다. 이 지표는 Amazon CloudWatch의 일부로 사용할 수 있습니다. 호출 메트릭 SageMaker에서 출판.
  • 모델 지연 시간 – 한 번에 모든 SageMaker 컨테이너에 소요된 총 시간 추론 파이프라인. 이 지표는 Amazon CloudWatch의 일부로 사용할 수 있습니다. 호출 메트릭 SageMaker에서 출판.
  • 오버헤드 지연 – SageMaker가 요청을 수신한 시간부터 클라이언트에 응답을 반환할 때까지에서 모델 대기 시간을 뺀 값입니다. 이 지표는 Amazon CloudWatch의 일부로 사용할 수 있습니다. 호출 메트릭 SageMaker에서 출판.
  • 종단 간 지연 시간 – 클라이언트가 추론 요청을 보낸 시간부터 응답을 다시 받을 때까지 측정됩니다. 고객은 이를 Amazon CloudWatch에서 사용자 지정 지표로 게시할 수 있습니다.

다음 다이어그램은 이러한 구성 요소를 보여줍니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

컨테이너 지연 시간은 여러 요인에 따라 다릅니다. 다음은 가장 중요한 것 중 하나입니다.

  • 추론 서버와 통신하는 데 사용되는 기본 프로토콜(HTTP(s)/gRPC)
  • 새 TLS 연결 생성과 관련된 오버헤드
  • 요청/응답 페이로드의 역직렬화 시간
  • 기본 추론 서버에서 제공하는 요청 대기열 및 일괄 처리 기능
  • 기본 추론 서버에서 제공하는 요청 스케줄링 기능
  • 추론 서버의 기본 런타임 성능
  • 모델 예측 함수 호출 전 전처리 및 후처리 라이브러리의 성능
  • 기본 ML 프레임워크 백엔드 성능
  • 모델별 및 하드웨어별 최적화

이 게시물에서는 주로 전체 처리량 및 비용과 함께 컨테이너 지연 시간을 최적화하는 데 중점을 둡니다. 특히 SageMaker 컨테이너 내에서 실행되는 성능 조정 Triton Inference Server를 살펴봅니다.

사용 사례 개요

프로덕션 설정에서 NLP 모델을 배포하고 확장하는 것은 상당히 어려울 수 있습니다. NLP 모델은 수백만 개의 모델 매개변수를 포함하는 크기가 매우 큰 경우가 많습니다. 프로덕션 등급 NLP 애플리케이션의 엄격한 성능 및 확장성 요구 사항을 충족하려면 최적의 모델 구성이 필요합니다.

이 게시물에서는 Triton Inference Server 컨테이너를 기반으로 하는 SageMaker 실시간 끝점을 사용하여 NLP 사용 사례를 벤치마킹하고 ML 사용 사례에 대한 성능 조정 최적화를 권장합니다. 우리는 사전 훈련된 트랜스포머 기반의 커다란 허깅 페이스를 사용합니다. BERT 대형 케이스 없음 약 336억 512만 개의 모델 매개변수가 있는 모델입니다. 이진 분류 모델에 사용되는 입력 문장은 최대 500개 토큰의 입력 시퀀스 길이로 채워지고 잘립니다. 추론 부하 테스트는 초당 30,000개 호출(분당 최대 호출 XNUMX개)을 시뮬레이션하고 ModelLatency 0.5초(500밀리초) 미만입니다.

다음 표에는 벤치마크 구성이 요약되어 있습니다.

모델 이름 포옹하는 얼굴 bert-large-uncased
모델 사이즈 1.25 GB
대기 시간 요구 사항 0.5초(500밀리초)
초당 호출 500개 요청(분당 30,000개)
입력 시퀀스 길이 512 토큰
ML 작업 이진 분류

NVIDIA Triton 추론 서버

Triton Inference Server는 프로덕션에서 모델을 확장 가능하고 빠르고 쉽게 배포할 수 있도록 특별히 설계되었습니다. Triton은 TensorFlow, TensorRT, PyTorch, XGBoost 및 ONNX를 비롯한 다양한 주요 AI 프레임워크를 지원합니다. Python 및 C++ 사용자 정의 백엔드를 사용하면 보다 사용자 정의된 사용 사례에 대한 추론 워크로드를 구현할 수도 있습니다.

가장 중요한 것은 Triton은 모델을 호스팅하기 위한 간단한 구성 기반 설정을 제공하여 적은 코딩 노력으로 사용할 수 있는 다양한 성능 최적화 기능을 제공한다는 것입니다.

Triton은 다양한 최적화 기술(동시 모델 실행 및 동적 일괄 처리가 가장 자주 사용됨)을 사용하여 하드웨어 활용을 최대화하여 추론 성능을 높입니다. 동적 배치 크기와 동시 모델 인스턴스 수의 다양한 조합에서 최적의 모델 구성을 찾는 것이 Triton을 사용하여 저비용 서비스 내에서 실시간 추론을 달성하는 열쇠입니다.

동적 일괄 처리

많은 실무자는 서버가 여러 독립 요청으로 호출될 때 추론을 순차적으로 실행하는 경향이 있습니다. 설정이 더 쉽지만 GPU의 컴퓨팅 성능을 활용하는 것은 일반적으로 모범 사례가 아닙니다. 이 문제를 해결하기 위해 Triton은 내장된 최적화를 제공합니다. 동적 일괄 처리 서버 측에서 이러한 독립적인 추론 요청을 결합하여 처리량을 증가시키기 위해 동적으로 더 큰 배치를 형성합니다. 다음 다이어그램은 Triton 런타임 아키텍처를 보여줍니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

이전 아키텍처에서 모든 요청은 추론을 기다리기 위해 실제 모델 스케줄러 대기열에 들어가기 전에 먼저 동적 일괄 처리기에 도달합니다. 다음을 사용하여 동적 일괄 처리에 대해 원하는 일괄 처리 크기를 설정할 수 있습니다. 선호하는_배치_크기 모델 구성의 설정. (형성된 배치 크기는 다음보다 작아야 합니다. 최대 배치 크기 모델이 지원합니다.) 또한 구성할 수 있습니다. max_queue_delay_microseconds 대기 시간 요구 사항에 따라 다른 요청이 일괄 처리에 참여하기를 기다리는 일괄 처리기의 최대 지연 시간을 지정합니다.

다음 코드 조각은 실제 추론을 위해 기본 배치 크기 16으로 동적 배치를 설정하기 위해 모델 구성 파일과 함께 이 기능을 추가하는 방법을 보여줍니다. 현재 설정을 사용하면 기본 배치 크기인 16이 충족되거나 첫 번째 요청이 동적 배치 장치에 도달한 후 지연 시간 100마이크로초가 경과하면 모델 인스턴스가 즉시 호출됩니다.

dynamic_batching { preferred_batch_size: 16 max_queue_delay_microseconds: 100 }

모델을 동시에 실행

추가적인 대기 시간 오버헤드 없이 하드웨어 활용을 극대화하기 위해 Triton에서 제공되는 또 다른 필수 최적화는 다음과 같습니다. 동시 모델 실행, 여러 모델 또는 동일한 모델의 여러 복사본을 병렬로 실행할 수 있습니다. 이 기능을 통해 Triton은 여러 추론 요청을 동시에 처리할 수 있으므로 하드웨어에서 유휴 컴퓨팅 파워를 활용하여 추론 처리량이 증가합니다.

다음 그림은 몇 줄의 코드 변경만으로 다양한 모델 배포 정책을 쉽게 구성할 수 있는 방법을 보여줍니다. 예를 들어 구성 A(왼쪽)는 두 모델 인스턴스의 동일한 구성을 브로드캐스트할 수 있음을 보여줍니다. bert-large-uncased 사용 가능한 모든 GPU에. 대조적으로 구성 B(가운데)는 다른 GPU의 정책을 변경하지 않고 GPU 0에 대해서만 다른 구성을 보여줍니다. 구성 C(오른쪽)와 같이 단일 GPU에 서로 다른 모델의 인스턴스를 배포할 수도 있습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

구성 C에서 컴퓨팅 인스턴스는 DistilGPT-2 모델에 대한 XNUMX개의 동시 요청과 XNUMX개의 동시 요청을 처리할 수 있습니다. bert-large-uncased 병렬 모델. 이러한 최적화를 통해 하드웨어 리소스를 제공 프로세스에 더 잘 활용하여 처리량을 개선하고 워크로드에 대해 더 나은 비용 효율성을 제공할 수 있습니다.

텐서 RT

엔비디아 텐서RT Triton과 원활하게 작동하는 고성능 딥 러닝 추론용 SDK입니다. 모든 주요 딥 러닝 프레임워크를 지원하는 TensorRT에는 강력한 최적화를 통해 대량의 데이터로 추론을 실행하기 위해 짧은 지연 시간과 높은 처리량을 제공하는 추론 최적화 프로그램과 런타임이 포함되어 있습니다.

TensorRT는 불필요한 메모리를 해제하고 효율적으로 재사용하여 메모리 공간을 최소화하도록 그래프를 최적화합니다. 또한 TensorRT 컴파일은 모델 그래프 내부의 희소 연산을 융합하여 더 큰 커널을 형성하여 여러 개의 작은 커널 실행의 오버헤드를 방지합니다. 커널 자동 조정은 대상 GPU에서 최상의 알고리즘을 선택하여 하드웨어를 최대한 활용하는 데 도움이 됩니다. CUDA 스트림을 사용하면 모델을 병렬로 실행하여 최상의 성능을 위한 GPU 활용도를 극대화할 수 있습니다. 마지막으로, 양자화 기술은 Tensor 코어의 혼합 정밀도 가속을 완전히 사용하여 FP32, TF32, FP16 및 INT8에서 모델을 실행하여 최고의 추론 성능을 달성할 수 있습니다.

SageMaker 호스팅의 Triton

SageMaker 호스팅 서비스는 모델 배포 및 서비스를 더 쉽게 만드는 것을 목표로 하는 SageMaker 기능 세트입니다. 다양한 사용 사례에 맞게 조정된 ML 모델을 쉽게 배포, 자동 확장, 모니터링 및 최적화할 수 있는 다양한 옵션을 제공합니다. 즉, 영구적이고 서버리스 옵션과 함께 항상 사용 가능한 것부터 일시적, 장기 실행 또는 일괄 추론 요구 사항에 이르기까지 모든 유형의 사용 패턴에 대해 배포를 최적화할 수 있습니다.

SageMaker 호스팅 우산 아래에는 지원되는 해당 ML 프레임워크에 대한 적절한 모델 서버 소프트웨어와 함께 사전 패키징된 SageMaker 추론 딥 러닝 컨테이너(DLC) 세트도 있습니다. 이를 통해 모델 배포의 가장 복잡한 기술적 측면이며 일반적으로 데이터 과학자의 기술에 속하지 않는 모델 서버 설정 없이 높은 추론 성능을 얻을 수 있습니다. Triton 추론 서버는 현재 가능 SageMaker 딥 러닝 컨테이너(DLC).

다양한 서빙 프레임워크의 이러한 광범위한 옵션, 모듈성 및 사용 용이성은 SageMaker와 Triton을 강력한 일치로 만듭니다.

테스트 결과 벤치마킹을 위한 SageMaker Inference Recommender

SageMaker Inference Recommender를 사용하여 실험을 실행합니다. SageMaker Inference Recommender는 다음 다이어그램과 같이 기본 및 고급의 두 가지 작업 유형을 제공합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

기본 작업은 벤치마킹할 모델과 샘플 페이로드만 있는 인스턴스 유형에 대한 권장 사항을 제공합니다. 인스턴스 권장 사항 외에도 서비스는 성능을 향상시키는 런타임 매개변수도 제공합니다. 기본 작업의 권장 사항은 인스턴스 검색 범위를 좁히기 위한 것입니다. 경우에 따라 인스턴스 패밀리가 될 수도 있고 특정 인스턴스 유형이 될 수도 있습니다. 그런 다음 기본 작업의 결과가 고급 작업에 제공됩니다.

고급 작업은 성능을 더욱 미세하게 조정할 수 있는 더 많은 제어 기능을 제공합니다. 이러한 제어는 실제 환경 및 생산 요구 사항을 시뮬레이션합니다. 이러한 컨트롤 중에는 벤치마크에 대한 요청 패턴을 준비하는 것을 목표로 하는 트래픽 패턴이 있습니다. 트래픽 패턴의 여러 단계를 사용하여 램프 또는 안정적인 트래픽을 설정할 수 있습니다. 예를 들어, 초기 사용자 수 1, 생성률 1의, 그리고 기간(초) 600의 램프 트래픽은 시작 시 10명의 동시 사용자 및 종료 시 1분의 램프 트래픽이 발생할 수 있습니다. 또한 컨트롤에서 최대 호출모델 지연 시간 임계값 생산 임계값을 설정하여 임계값 중 하나를 초과하면 벤치마킹이 중지됩니다.

마지막으로, 추천 지표 처리량, 최대 처리량에서의 지연 시간, 추론당 비용을 포함하므로 쉽게 비교할 수 있습니다.

SageMaker Inference Recommender의 고급 작업 유형을 사용하여 실험을 실행하여 트래픽 패턴을 추가로 제어하고 제공 컨테이너의 구성을 미세 조정합니다.

실험 설정

SageMaker Inference Recommender의 사용자 지정 부하 테스트 기능을 사용하여 사용 사례에 설명된 NLP 프로필을 벤치마킹합니다. 먼저 NLP 모델 및 ML 작업과 관련된 다음 전제 조건을 정의합니다. SageMaker Inference Recommender는 이 정보를 사용하여 추론 Docker 이미지를 가져옵니다. Amazon Elastic Container Registry (Amazon ECR) 및 SageMaker 모델 레지스트리에 모델을 등록합니다.

도메인 NATURAL_LANGUAGE_PROCESSING
태스크 FILL_MASK
뼈대 파이토치: 1.6.0
모델 bert-large-uncased

SageMaker Inference Recommender의 트래픽 패턴 구성을 사용하면 사용자 지정 부하 테스트에 대해 여러 단계를 정의할 수 있습니다. 부하 테스트는 다음 코드와 같이 25명의 초기 사용자로 시작하여 총 1500분(XNUMX초) 동안 매분 XNUMX명의 새 사용자를 생성합니다.

"TrafficPattern": { "TrafficType": "PHASES", "Phases": [ { "InitialNumberOfUsers": 2, "SpawnRate": 2, "DurationInSeconds": 1500 }, ],
}

우리는 두 가지 다른 상태에서 동일한 모델의 부하 테스트를 실험합니다. PyTorch 기반 실험은 변경되지 않은 표준 PyTorch 모델을 사용합니다. TensorRT 기반 실험을 위해 PyTorch 모델을 TensorRT 엔진으로 미리 변환합니다.

다음 표에 요약된 것처럼 이 두 모델에 서로 다른 성능 최적화 기능 조합을 적용합니다.

구성 이름 구성 설명 모델 구성
pt-base 파이토치 베이스라인 기본 PyTorch 모델, 변경 사항 없음
pt-db 동적 일괄 처리가 포함된 PyTorch dynamic_batching
{}
pt-ig 여러 모델 인스턴스가 있는 PyTorch instance_group [
    {
      count: 2
      kind: KIND_GPU
    }
  ]
pt-ig-db 여러 모델 인스턴스와 동적 일괄 처리가 있는 PyTorch dynamic_batching
{},
instance_group [
     {
          count: 2
          kind: KIND_GPU
     }
]
trt-base TensorRT 기준선 TensoRT로 컴파일된 PyTorch 모델 trtexec 유틸리티
trt-db 동적 일괄 처리가 포함된 TensorRT dynamic_batching
{}
trt-ig 여러 모델 인스턴스가 있는 TensorRT instance_group [
     {
          count: 2
          kind: KIND_GPU
     }
]
trt-ig-db 여러 모델 인스턴스 및 동적 일괄 처리가 포함된 TensorRT dynamic_batching
{},
instance_group [
     {
          count: 2
          kind: KIND_GPU
      }
]

테스트 결과 및 관찰

동일한 g4dn 제품군 내에서 세 가지 인스턴스 유형(ml.g4dn.xlarge, ml.g4dn.2xlarge 및 ml.g4dn.12xlarge)에 대한 부하 테스트를 수행했습니다. 모든 g4dn 인스턴스 유형은 NVIDIA T4 Tensor Core GPU 및 2세대 Intel Cascade Lake 프로세서에 액세스할 수 있습니다. 인스턴스 유형을 선택하는 논리는 GPU가 하나만 있는 인스턴스와 여러 GPU(ml.g4dn.12xlarge의 경우 XNUMX개)에 액세스할 수 있는 인스턴스를 모두 포함하는 것이었습니다. 또한 사용 가능한 GPU가 하나만 있는 인스턴스에서 vCPU 용량을 늘리면 비용 대비 성능이 향상되는지 테스트하고 싶었습니다.

먼저 개별 최적화의 속도 향상에 대해 살펴보겠습니다. 다음 그래프는 TensorRT 최적화가 ml.g50dn.xlarge 인스턴스의 PyTorch에 있는 기본 지연 시간과 비교하여 모델 지연 시간을 4% 줄였습니다. 이 지연 시간 감소는 ml.g4dn.12xlarge의 다중 GPU 인스턴스에서 30배 이상 증가합니다. 한편, XNUMX% 처리량 개선은 두 인스턴스 모두에서 일관적이어서 TensorRT 최적화를 적용한 후 비용 효율성이 향상되었습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

동적 일괄 처리를 사용하면 눈에 띄는 대기 시간 증가 없이 ml.g2dn.xlarge, ml.g4dn.4xlarge 및 ml.g2dn.4xlarge의 모든 실험 인스턴스에서 동일한 하드웨어 아키텍처를 사용하여 처리량을 12배 가까이 향상시킬 수 있습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

유사하게, 동시 모델 실행을 통해 ml.g3dn.xlarge 인스턴스에서 GPU 사용률을 최대화하여 처리량을 약 4-4배 향상시키고 ml.g2dn.4xlarge 인스턴스와 ml의 다중 GPU 인스턴스 모두에서 약 2배 향상을 얻을 수 있습니다. g4dn.12xlarge.. 이 처리량 증가는 대기 시간의 오버헤드 없이 발생합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

더 나아가 이러한 모든 최적화를 통합하여 하드웨어 리소스를 최대한 활용하여 최고의 성능을 제공할 수 있습니다. 다음 표와 그래프는 실험에서 얻은 결과를 요약한 것입니다.

구성 이름 모델 최적화

동적

배치

인스턴스 그룹 구성 인스턴스 유형 vCPU GPU

GPU 메모리

(영국)

초기 인스턴스 수[1] 인스턴스당 분당 호출 모델 지연 시간당 비용[2]
pt 기반 NA 아니 NA ml.g4dn.xlarge 4 1 16 62 490 1500 45.6568
pt-db NA 가능 NA ml.g4dn.xlarge 4 1 16 57 529 1490 41.9748
pt-ig NA 아니 2 ml.g4dn.xlarge 4 1 16 34 906 868 25.0376
pt-ig-db NA 가능 2 ml.g4dn.xlarge 4 1 16 34 892 1158 25.0376
trt 기반 텐서 RT 아니 NA ml.g4dn.xlarge 4 1 16 47 643 742 34.6108
trt-db 텐서 RT 가능 NA ml.g4dn.xlarge 4 1 16 28 1078 814 20.6192
trt-ig 텐서 RT 아니 2 ml.g4dn.xlarge 4 1 16 14 2202 1273 10.3096
trt-db-ig 텐서 RT 가능 2 ml.g4dn.xlarge 4 1 16 10 3192 783 7.364
pt 기반 NA 아니 NA ml.g4dn.2xlarge 8 1 32 56 544 1500 52.64
pt-db NA 가능 NA ml.g4dn.2xlarge 8 1 32 59 517 1500 55.46
pt-ig NA 아니 2 ml.g4dn.2xlarge 8 1 32 29 1054 960 27.26
pt-ig-db NA 가능 2 ml.g4dn.2xlarge 8 1 32 30 1017 992 28.2
trt 기반 텐서 RT 아니 NA ml.g4dn.2xlarge 8 1 32 42 718 1494 39.48
trt-db 텐서 RT 가능 NA ml.g4dn.2xlarge 8 1 32 23 1335 499 21.62
trt-ig 텐서 RT 아니 2 ml.g4dn.2xlarge 8 1 32 23 1363 1017 21.62
trt-db-ig 텐서 RT 가능 2 ml.g4dn.2xlarge 8 1 32 22 1369 963 20.68
pt 기반 NA 아니 NA ml.g4dn.12xlarge 48 4 192 15 2138 906 73.35
pt-db NA 가능 NA ml.g4dn.12xlarge 48 4 192 15 2110 907 73.35
pt-ig NA 아니 2 ml.g4dn.12xlarge 48 4 192 8 3862 651 39.12
pt-ig-db NA 가능 2 ml.g4dn.12xlarge 48 4 192 8 3822 642 39.12
trt 기반 텐서 RT 아니 NA ml.g4dn.12xlarge 48 4 192 11 2892 279 53.79
trt-db 텐서 RT 가능 NA ml.g4dn.12xlarge 48 4 192 6 5356 278 29.34
trt-ig 텐서 RT 아니 2 ml.g4dn.12xlarge 48 4 192 6 5210 328 29.34
trt-db-ig 텐서 RT 가능 2 ml.g4dn.12xlarge 48 4 192 6 5235 439 29.34
[1] 위 표의 초기 인스턴스 수는 워크로드에 대한 처리량 및 대기 시간 요구 사항을 유지하기 위해 Autoscaling 정책과 함께 사용할 권장 인스턴스 수입니다.
[2] 위 표의 시간당 비용은 인스턴스 유형의 초기 인스턴스 수와 가격을 기준으로 계산됩니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

결과는 대부분 다양한 성능 최적화 기능에서 예상되는 영향을 검증합니다.

  • TensorRT 컴파일은 모든 인스턴스 유형에서 가장 안정적인 영향을 미칩니다. 기본 PyTorch BERT(pt-base). TensorRT 엔진의 향상된 성능은 테스트된 다른 성능 조정 기능에 의해 복합되고 활용됩니다.
  • 각 GPU(인스턴스 그룹)에 두 개의 모델을 로드하면 측정된 모든 메트릭이 거의 두 배가 되었습니다. 인스턴스당 분당 호출은 약 80~90% 증가하여 거의 50개의 GPU를 사용하는 것처럼 비용이 XNUMX% 범위에서 감소했습니다. 사실로, 아마존 클라우드 워치 g4dn.2xlarge에 대한 실험에 대한 메트릭(예로)은 두 모델의 인스턴스 그룹을 구성할 때 CPU 및 GPU 사용률이 모두 두 배가 된다는 것을 확인합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함. Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.

추가 성능 및 비용 최적화 팁

이 게시물에 제시된 벤치마크는 추론 성능을 개선하기 위해 Triton과 함께 사용할 수 있는 가능한 기능과 기술의 표면을 긁었습니다. 여기에는 바이너리 페이로드를 모델 서버로 전송하거나 더 큰 배치가 포함된 페이로드와 같은 데이터 사전 처리 기술에서 다음과 같은 기본 Triton 기능에 이르기까지 다양합니다.

  • 모델 워밍업, 첫 번째 추론 요청이 수신되기 전에 모델을 완전히 초기화하여 초기의 느린 추론 요청을 방지합니다.
  • 응답 캐시, 반복된 요청을 캐시합니다.
  • 모델 앙상블, 이를 통해 하나 이상의 모델의 파이프라인과 이러한 모델 간의 입력 및 출력 텐서 연결을 만들 수 있습니다. 이를 통해 각 요청의 처리 흐름에 전처리 및 후처리 단계를 추가하거나 다른 모델에 대한 추론을 추가할 수 있습니다.

향후 게시물에서 이러한 기술과 기능을 테스트하고 벤치마킹할 예정이므로 계속 지켜봐 주시기 바랍니다!

결론

이 게시물에서는 Triton Inference Server로 PyTorch BERT 모델을 제공하기 위해 SageMaker 실시간 끝점의 성능을 최대화하는 데 사용할 수 있는 몇 가지 매개변수를 살펴보았습니다. 이러한 매개변수를 미세 조정하기 위해 벤치마킹 테스트를 수행하기 위해 SageMaker Inference Recommender를 사용했습니다. 이러한 매개변수는 본질적으로 TensorRT 기반 모델 최적화와 관련이 있으며 최적화되지 않은 버전에 비해 응답 시간이 거의 50% 향상되었습니다. 또한 모델을 동시에 실행하고 Triton의 동적 일괄 처리를 사용하면 처리량이 거의 70% 증가했습니다. 이러한 매개변수를 미세 조정하면 추론 비용도 전반적으로 절감됩니다.

올바른 값을 도출하는 가장 좋은 방법은 실험을 통하는 것입니다. 그러나 성능 조정 및 최적화에 대한 경험적 지식을 구축하기 시작하려면 다양한 Triton 관련 매개변수의 조합과 ML 모델 및 SageMaker ML 인스턴스에서 성능에 미치는 영향을 관찰할 수 있습니다.

SageMaker는 ML 수명 주기의 각 단계에서 차별화되지 않은 무거운 작업을 제거하는 도구를 제공하여 모델 배포를 완전히 최적화하는 데 필요한 신속한 실험 및 탐색을 촉진합니다.

부하 테스트 및 배포에 사용되는 노트북은 다음에서 찾을 수 있습니다. GitHub의. 사용 사례에 가장 적합하도록 Triton 구성 및 SageMaker Inference Recommender 설정을 업데이트하여 비용 효율적이고 성능이 우수한 추론 워크로드를 달성할 수 있습니다.


저자에 관하여

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.비크람 엘랑고 미국 버지니아에 위치한 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. Vikram은 금융 및 보험 업계 고객이 설계, 사고 리더십을 통해 기계 학습 애플리케이션을 대규모로 구축 및 배포할 수 있도록 지원합니다. 그는 현재 자연어 처리, 책임 있는 AI, 추론 최적화 및 기업 전반에 걸친 ML 확장에 중점을 두고 있습니다. 여가 시간에는 가족과 함께 여행, 하이킹, 요리, 캠핑을 즐깁니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.주앙 모 우라 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. 그는 주로 NLP 사용 사례에 중점을 두고 고객이 딥 러닝 모델 교육 및 배포를 최적화하도록 지원합니다. 그는 또한 로우 코드 ML 솔루션과 ML 전문 하드웨어의 적극적인 지지자입니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.모한 간디 AWS의 수석 소프트웨어 엔지니어입니다. 그는 지난 9년 동안 AWS에서 근무했으며 Outposts에서 EMR, EFA 및 RDS와 같은 다양한 AWS 서비스에서 일했습니다. 현재 그는 SageMaker 추론 경험을 개선하는 데 집중하고 있습니다. 여가 시간에는 하이킹과 마라톤을 즐깁니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.다왈 파텔 AWS의 수석 기계 학습 설계자입니다. 그는 분산 컴퓨팅 및 인공 지능과 관련된 문제에 대해 대기업에서 중견 스타트업에 이르는 다양한 조직과 협력했습니다. 그는 NLP 및 Computer Vision 도메인을 포함한 딥 러닝에 중점을 둡니다. 그는 고객이 SageMaker에서 고성능 모델 추론을 달성하도록 돕습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함.산토스 바 바니 Amazon SageMaker Elastic Inference 팀의 선임 기술 제품 관리자입니다. 그는 SageMaker 고객이 모델 추론 및 배포를 가속화하는 데 중점을 둡니다. 여가 시간에는 여행, 테니스, 푸에르 차를 많이 마 십니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 NVIDIA Triton Inference Server를 사용하여 모델 제공을 위한 대규모 성능을 달성하세요. 수직 검색. 일체 포함. 리우 지아 홍 NVIDIA 클라우드 서비스 제공업체 팀의 솔루션 설계자입니다. 그는 교육 및 추론 문제를 해결하기 위해 NVIDIA 가속 컴퓨팅을 활용하는 기계 학습 및 AI 솔루션을 채택하는 고객을 지원합니다. 여가 시간에는 종이접기, DIY 프로젝트, 농구를 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습