Amazon Search가 AWS Inferentia를 사용하여 ML 추론 비용을 85% 절감한 방법

Amazon의 제품 검색 엔진은 수십억 개의 제품을 색인화하고 전 세계적으로 수억 명의 고객에게 서비스를 제공하며 세계에서 가장 많이 사용되는 서비스 중 하나입니다. Amazon Search 팀은 다음을 지원하는 기계 학습(ML) 기술을 개발합니다. Amazon.com 검색 엔진 및 고객이 쉽게 검색할 수 있도록 도와줍니다. 훌륭한 고객 경험을 제공하고 기업이 요구하는 대규모 규모로 운영하기 위해 Amazon.com 검색 엔진에서 이 팀은 실시간 대기 시간 및 처리량 요구 사항이 있는 보다 비용 효율적인 시스템을 구축하는 방법을 항상 찾고 있습니다. 팀은 딥 러닝에 최적화된 하드웨어와 컴파일러를 지속적으로 탐색하여 모델 교육 및 추론을 가속화하는 동시에 전반적으로 운영 비용을 절감합니다.

이 게시물에서는 Amazon Search가 사용하는 방법을 설명합니다. AWS 인 페렌 시아, 딥 러닝 추론 워크로드를 가속화하기 위해 AWS에서 구축한 고성능 가속기입니다. 팀은 AWS Inferentia 기반에서 Transformer 기반 NLP 모델을 사용하여 지연 시간이 짧은 ML 추론을 실행합니다. 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) Inf1 인스턴스를 사용하고 강력한 처리량과 지연 시간 성능을 유지하면서 인프라 비용을 최대 85% 절감합니다.

중복 및 쿼리 의도 예측을 위한 딥 러닝

Amazon Marketplace 검색은 ASIN(Amazon Standard Identification Number, 제품을 고유하게 식별하는 10자리 영숫자 번호), 제품 이미지, 텍스트 설명 및 쿼리와 같은 여러 입력을 처리하는 다중 작업, 다중 모드 문제입니다. 맞춤형 사용자 경험을 만들기 위해 다양한 모델의 예측이 검색의 다양한 측면에 사용됩니다. 검색 시스템에는 최대 부하에서 초당 수만 건의 트랜잭션(TPS)이 있는 수천 개의 모델이 있기 때문에 이는 어려운 일입니다. 우리는 경험의 두 가지 구성 요소에 중점을 둡니다.

  • 고객이 인지한 중복 예측 – 사용자의 검색어와 가장 관련성이 높은 제품 목록을 표시하려면 고객이 구별하기 어려운 제품을 식별하는 것이 중요합니다.
  • 쿼리 의도 예측 – 검색 페이지 및 제품 레이아웃을 고객이 찾고 있는 것에 더 잘 맞도록 조정하려면 사용자 쿼리의 의도와 유형(예: 미디어 관련 쿼리, 도움말 쿼리 및 기타 쿼리 유형)을 예측하는 것이 중요합니다.

이러한 예측은 모두 Transformer 모델 아키텍처, 즉 BERT 기반 모델을 사용하여 이루어집니다. 사실, 둘 다 동일한 BERT 기반 모델을 기본으로 공유하며, 각각은 이 백본 위에 분류/회귀 헤드를 쌓습니다.

중복 예측은 한 쌍의 평가된 제품에 대한 다양한 텍스트 기능을 입력(예: 제품 유형, 제목, 설명 등)으로 사용하며 대규모 데이터 세트에 대해 주기적으로 계산됩니다. 이 모델은 멀티태스킹 방식으로 종단 간 학습됩니다. Amazon SageMaker 처리 작업 이러한 배치 워크로드를 주기적으로 실행하여 실행을 자동화하고 사용한 처리 시간에 대해서만 비용을 지불하는 데 사용됩니다. 이 배치 워크로드 사용 사례의 경우 추론 처리량에 대한 요구 사항은 총 8,800 TPS였습니다.

의도 예측은 사용자의 텍스트 쿼리를 입력으로 사용하며 매일 트래픽을 동적으로 처리하고 Amazon Marketplace에서 사용자 경험을 향상시키는 데 실시간으로 필요합니다. 모델은 다중 클래스 분류 목표에 대해 학습됩니다. 이 모델은 다음에 배포됩니다. Amazon 탄력적 컨테이너 서비스 (Amazon ECS), 빠른 Auto Scaling 및 손쉬운 배포 정의 및 관리. 이것은 실시간 사용 사례이기 때문에 즐거운 사용자 경험을 보장하기 위해 P99 대기 시간이 10밀리초 미만이어야 했습니다.

AWS Inferentia 및 AWS Neuron SDK

EC2 Inf1 인스턴스 딥 러닝 추론 워크로드를 가속화하기 위해 AWS에서 구축한 최초의 ML 가속기인 AWS Inferentia로 구동됩니다. Inf1 인스턴스는 유사한 GPU 기반 EC2.3 인스턴스보다 처리량이 최대 70배 더 높고 추론당 비용이 최대 2% 더 낮습니다. 선택한 프레임워크(PyTorch, TensorFlow, MXNet)를 사용하여 모델을 계속 교육한 다음 AWS Inferentia에 쉽게 배포하여 기본 제공되는 성능 최적화의 이점을 누릴 수 있습니다. Inf1 인스턴스를 사용하여 이미지 인식, 객체 감지, 자연어 처리(NLP) 및 최신 추천 모델에 이르기까지 다양한 모델 유형을 배포할 수 있습니다.

AWS 뉴런 컴파일러, 런타임 및 EC2 Inf1 인스턴스의 ML 추론 성능을 최적화하는 프로파일링 도구로 구성된 소프트웨어 개발 키트(SDK)입니다. Neuron은 기본적으로 TensorFlow 및 PyTorch와 같은 인기 있는 ML 프레임워크와 통합됩니다. 따라서 선택한 프레임워크에서 제공하는 것과 동일한 친숙한 API를 사용하여 AWS Inferentia에 딥 러닝 모델을 배포할 수 있으며 클라우드에서 성능 향상과 가장 낮은 추론당 비용의 이점을 누릴 수 있습니다.

Neuron SDK는 출시 이후 지속적으로 성능을 개선하고 추론 비용을 줄이는 동시에 지원하는 모델의 폭을 계속 늘려 왔습니다. 여기에는 NLP 모델(BERT), 이미지 분류 모델(ResNet, VGG) 및 객체 감지 모델(OpenPose 및 SSD)이 포함됩니다.

짧은 지연 시간, 높은 처리량 및 비용 절감을 위해 Inf1 인스턴스에 배포

Amazon Search 팀은 중복 예측에 대한 높은 처리량 요구 사항과 쿼리 의도 예측에 대한 짧은 지연 시간 요구 사항을 충족하면서 비용을 절감하기를 원했습니다. 그들은 AWS Inferentia 기반 Inf1 인스턴스에 배포하기로 선택했으며 고성능 요구 사항을 충족했을 뿐만 아니라 추론 비용을 최대 85%까지 절감했습니다.

고객이 인지한 중복 예측

Inf1을 사용하기 전에 전용 아마존 EMR 클러스터가 CPU 기반 인스턴스를 사용하여 실행 중이었습니다. 하드웨어 가속에 의존하지 않고 초당 8,800건의 총 트랜잭션이라는 높은 처리량 요구 사항을 충족하려면 많은 수의 인스턴스가 필요했습니다. 팀은 각각 1.6개의 AWS Inferentia 액셀러레이터와 4개의 NeuronCore(AWS Inferentia 칩당 16개의 코어)가 있는 inf4xlarge 인스턴스로 전환했습니다. 그들은 단일 NeuronCore에 대한 Transformer 기반 모델을 추적하고 처리량을 최대화하기 위해 NeuronCore당 하나의 모드를 로드했습니다. 16개의 사용 가능한 NeuronCore를 활용하여 추론 비용을 85% 절감했습니다(현재 공개 Amazon EC2 온디맨드 요금 기준).

쿼리 의도 예측

99밀리초 이하의 P10 대기 시간 요구 사항을 감안할 때 팀은 inf1.6xlarge 인스턴스에서 사용 가능한 모든 NeuronCore에 모델을 로드했습니다. 다음을 사용하여 PyTorch Neuron으로 이 작업을 쉽게 수행할 수 있습니다. 토치.뉴런.데이터 병렬 API. Inf1 배포에서 모델 대기 시간은 3밀리초, 종단 간 대기 시간은 약 10밀리초, 최대 로드 시 최대 처리량은 16,000TPS에 도달했습니다.

샘플 컴파일 및 배포 코드 시작하기

다음은 Inf1 인스턴스를 시작하고 Amazon Search 팀과 같은 성능 및 비용 이점을 실현하는 데 도움이 되는 몇 가지 샘플 코드입니다. 다음을 사용하여 PyTorch 모델로 추론을 컴파일하고 수행하는 방법을 보여줍니다. PyTorch 뉴런.

먼저 모델은 다음으로 컴파일됩니다. torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

가능한 인수의 전체 목록은 trace 방법, 참조 PyTorch-Neuron 추적 Python API. 보시다시피 컴파일러 인수 에 전달 될 수 있습니다 torch.neuron API 직접. 모든 FP32 연산자는 다음으로 캐스팅됩니다. BF16 with --fp32-cast=all, 다이내믹 레인지를 유지하면서 최고의 성능을 제공합니다. 더 많은 주조 옵션을 사용하여 성능을 제어하여 정밀도 절충을 모델링할 수 있습니다. 두 사용 사례에 사용된 모델은 단일 NeuronCore에 대해 컴파일되었습니다. 파이프 라이닝).

그런 다음 Inferentia에 모델을 로드합니다. torch.jit.load, 예측에 사용합니다. 그만큼 뉴런 런타임 자동으로 모델을 NeuronCores에 로드합니다.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

결론

Amazon Search 팀은 트래픽이 많고 성능 요구 사항이 까다로운 조건에서 AWS Inferentia 기반 Inf85 인스턴스를 사용하여 추론 비용을 1% 줄일 수 있었습니다. AWS Inferentia와 Neuron SDK는 교육과 별도로 배포 프로세스를 최적화할 수 있는 유연성을 팀에 제공했으며, 균형 잡힌 도구와 친숙한 프레임워크 API를 통해 얕은 학습 곡선을 제시했습니다.

이 게시물에 제공된 샘플 코드로 시작하여 성능 및 비용 이점을 누릴 수 있습니다. 또한 종단 간을 확인하십시오. 자습서 Inferentia에서 ML 모델을 실행하려면 파이 토치TensorFlow.


저자 소개

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.주앙 모 우라 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. 그는 주로 NLP 사용 사례에 중점을 두고 고객이 딥 러닝 모델 교육 및 배포를 최적화하도록 지원합니다. 그는 또한 ML 전문 하드웨어 및 로우 코드 ML 솔루션의 적극적인 지지자입니다.

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.장웨이치 Search M5의 소프트웨어 엔지니어링 관리자로 Amazon 기계 학습 애플리케이션을 위한 대규모 모델 제품화 작업을 하고 있습니다. 그의 관심 분야는 정보 검색 및 기계 학습 인프라입니다.

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.제이슨 칼슨 는 고객이 인지한 중복으로 인해 도난당한 검색 노출 수를 줄이는 데 도움이 되는 기계 학습 파이프라인을 개발하는 소프트웨어 엔지니어입니다. 그는 주로 Apache Spark, AWS 및 PyTorch와 협력하여 ML 모델에 대한 데이터 배포 및 공급/처리를 돕습니다. 여가 시간에는 책을 읽고 달리기를 좋아합니다.

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.샤오후이 시 검색 쿼리 이해 인프라 팀의 SDE입니다. 그는 대기 시간이 짧고 가용성이 높은 대규모 딥 러닝 온라인 추론 서비스를 구축하기 위한 노력을 이끌고 있습니다. 일 외에는 스키를 타고 맛있는 음식을 찾는 것을 즐깁니다.

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.장주오치 검색 쿼리 이해 인프라 팀의 소프트웨어 개발 엔지니어입니다. 그는 딥 러닝 온라인 추론 서비스의 대기 시간과 처리량을 개선하기 위해 모델 제공 프레임워크를 구축하는 작업을 하고 있습니다. 일 외에는 농구, 스노보드, 운전을 좋아합니다.

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.선하오웨이 검색 쿼리 이해 인프라 팀의 소프트웨어 엔지니어입니다. 그녀는 딥 러닝 온라인 추론 서비스를 지원하는 API 및 인프라 설계 작업을 하고 있습니다. 그녀의 관심 분야는 서비스 API 설계, 인프라 설정 및 유지 관리입니다. 일 외에는 달리기, 하이킹, 여행을 즐깁니다.

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.재스퍼트 싱 그는 M5 팀의 응용 과학자로서 고객 쇼핑 경험을 개선하기 위해 대규모 기초 모델을 연구하고 있습니다. 그의 연구 관심 분야는 다중 작업 학습, 정보 검색 및 표현 학습입니다.

Amazon Search가 AWS Inferentia PlatoBlockchain Data Intelligence를 사용하여 ML 추론 비용을 85% 절감한 방법. 수직 검색. 일체 포함.슈루티 코파카르 AWS의 수석 제품 마케팅 관리자입니다. 그녀는 고객이 기계 학습 요구 사항에 맞게 EC2 가속 컴퓨팅 인프라를 탐색, 평가 및 채택하도록 돕습니다.

타임 스탬프 :

더보기 AWS 기계 학습