AWS Inferentia2는 1배 더 높은 처리량과 4배 더 짧은 지연 시간을 제공하여 AWS Inferentia10을 기반으로 구축 | 아마존 웹 서비스

AWS Inferentia2는 1배 더 높은 처리량과 4배 더 짧은 지연 시간을 제공하여 AWS Inferentia10을 기반으로 구축 | 아마존 웹 서비스

기계 학습(ML) 모델의 크기––큰 언어 모델(LLM) 및 기초 모델(FM)––매년 빠르게 성장하고 있습니다, 이러한 모델에는 특히 생성 AI의 경우 더 빠르고 강력한 가속기가 필요합니다. AWS 인퍼렌시아2 처음부터 LLM 및 생성 AI 추론 비용을 낮추면서 더 높은 성능을 제공하도록 설계되었습니다.

이 게시물에서는 1세대 AWS Inferentia가 어떻게 AWS InferentiaXNUMX에서 도입된 기능을 기반으로 구축되고 LLM 및 FM 배포 및 실행의 고유한 요구 사항을 충족하는지 보여줍니다.

2019년에 출시된 전용 가속기인 1세대 AWS Inferentia는 딥 러닝 추론을 가속화하도록 최적화되었습니다. AWS Inferentia는 ML 사용자가 추론 비용을 줄이고 예측 처리량과 지연 시간을 개선하는 데 도움이 되었습니다. 고객은 AWS Inferentia2.3를 통해 유사한 추론 최적화에 비해 최대 70배 더 높은 처리량과 최대 XNUMX% 더 낮은 추론당 비용을 경험했습니다. 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 인스턴스.

AWS Inferentia2, 새로운 기능 Amazon EC2 Inf2 인스턴스 및 지원 아마존 세이지 메이커, 대규모 생성 AI 추론에 최적화되어 있으며 가속기 간 고속, 저지연 연결을 통해 분산 추론에 최적화된 AWS의 첫 번째 추론 중심 인스턴스입니다.

이제 값비싼 교육 인스턴스 없이도 단일 Inf175 인스턴스에서 여러 가속기 간 추론을 위해 2억 매개변수 모델을 효율적으로 배포할 수 있습니다. 지금까지 대규모 모델을 보유한 고객은 훈련용으로 구축된 인스턴스만 사용할 수 있었지만 이는 리소스 낭비입니다. 사용 가능한 리소스(예: 더 빠른 네트워킹 및 스토리지). AWS Inferentia2를 사용하면 AWS Inferentia4에 비해 10배 더 높은 처리량과 최대 1배 더 짧은 지연 시간을 달성할 수 있습니다. 또한 XNUMX세대 AWS Inferentia는 더 많은 데이터 유형, 사용자 지정 연산자, 동적 텐서 등에 대한 향상된 지원을 추가합니다.

AWS Inferentia2는 AWS Inferentia4보다 16.4배 더 많은 메모리 용량, 1배 더 높은 메모리 대역폭을 제공하며 여러 가속기에서 대규모 모델 샤딩을 기본적으로 지원합니다. 액셀러레이터가 사용하는 NeuronLink 및 Neuron 집단 통신 그들 사이 또는 가속기와 네트워크 어댑터 사이의 데이터 전송 속도를 최대화합니다. AWS Inferentia2는 여러 액셀러레이터에 걸친 샤딩이 필요한 대규모 모델에 더 적합하지만, AWS Inferentia1은 대안에 비해 더 나은 가격 대비 성능을 제공하기 때문에 여전히 소규모 모델에 적합한 옵션입니다.

아키텍처 진화

두 세대의 AWS Inferentia를 비교하기 위해 AWS Inferentia1의 아키텍처. 다음 다이어그램과 같이 칩당 1개의 NeuronCore vXNUMX이 있습니다.

AWS Inferentia2는 AWS Inferentia1을 기반으로 4배 더 높은 처리량과 10배 더 낮은 지연 시간을 제공합니다 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

칩당 사양:

  • 계산 – 총 128개의 INT8 TOPS 및 64FP16/BF16 TFLOPS를 제공하는 XNUMX개의 코어
  • 메모리 – 8GB DRAM(대역폭 50GB/초), XNUMX개 코어 모두 공유
  • 뉴런링크 – XNUMX개 이상의 코어에 걸친 샤딩 모델을 위한 코어 간 링크

AWS Inferentia2가 어떻게 구성되어 있는지 살펴보겠습니다. 각 AWS Inferentia2 칩에는 다음을 기반으로 두 개의 업그레이드된 코어가 있습니다. NeuronCore-v2 아키텍처. AWS Inferentia1과 마찬가지로 각 NeuronCore에서 서로 다른 모델을 실행하거나 여러 코어를 결합하여 큰 모델을 샤딩할 수 있습니다.

AWS Inferentia2는 AWS Inferentia1을 기반으로 4배 더 높은 처리량과 10배 더 낮은 지연 시간을 제공합니다 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

칩당 사양:

  • 계산 – 총 380 INT8 TOPS, 190 FP16/BF16/cFP8/TF32 TFLOPS 및 47.5 FP32 TFLOPS를 제공하는 XNUMX개의 코어
  • 메모리 – 32GB의 HBM, 두 코어에서 공유
  • 뉴런링크 – 384개 이상의 코어에 걸친 샤딩 모델을 위한 칩 간 링크(장치당 XNUMXGB/초)

NeuronCore-v2에는 XNUMX개의 독립 엔진이 있는 모듈식 설계:

  • ScalarEngine (v3보다 1배 빠름) – 부동 소수점 숫자에서 작동––1600(BF16/FP16) FLOPS
  • VectorEngine(v10보다 1배 빠름) – 정규화, 풀링 등과 같은 계산을 위해 단일 작업으로 숫자 벡터에서 작동합니다.
  • TensorEngine(v6보다 1배 빠름) – Conv, Reshape, Transpose 등과 같은 텐서 계산을 수행합니다.
  • GPSIMD 엔진 – 512개의 완전히 프로그래밍 가능한 XNUMX비트 범용 프로세서가 있어 맞춤 연산자표준 PyTorch 사용자 정의 C++ 연산자 API. 이것은 NeuronCore-v2에 도입된 새로운 기능입니다.

AWS Inferentia2 NeuronCore-v2는 더 빠르고 최적화되었습니다. 또한 ResNet 50과 같은 단순 모델부터 대규모 언어 모델 또는 GPT-3(175억 매개변수)과 같은 수십억 개의 매개변수가 있는 기반 모델에 이르기까지 다양한 유형과 크기의 모델을 가속화할 수 있습니다. 또한 AWS Inferentia2는 다음 표와 같이 AWS Inferentia1에 비해 내부 메모리가 더 크고 빠릅니다.

Chip 뉴런 코어 메모리 유형 메모리 크기 메모리 대역폭
AWS 인 페렌 시아 x4(v1) DDR4 8GB 50GB/초
AWS 인퍼렌시아 2 x2(v2) HBM 32GB 820GB/초

AWS Inferentia2에서 찾은 메모리는 고대역폭 메모리(HBM) 유형입니다. 각 AWS Inferentia2 칩에는 32GB가 있으며 다른 칩과 결합하여 NeuronLink(장치 간 상호 연결)를 사용하여 매우 큰 모델을 배포할 수 있습니다. 예를 들어 inf2.48xlarge에는 총 12GB의 가속 메모리가 있는 2개의 AWS Inferentia384 가속기가 있습니다. AWS Inferentia2 메모리의 속도는 이전 표와 같이 AWS Inferentia16.4보다 1배 빠릅니다.

기타 기능

AWS Inferentia2는 다음과 같은 추가 기능을 제공합니다.

  • 하드웨어 지원 – cFP8(신규, 구성 가능한 FP8), FP16, BF16, TF32, FP32, INT8, INT16 및 INT32. 자세한 내용은 다음을 참조하십시오. 데이터 타입.
  • 게으른 텐서 추론 – 우리는 논의 게으른 텐서 추론 이 게시물의 뒷부분에 있습니다.
  • 맞춤 연산자 – 개발자는 표준 PyTorch 사용자 지정 연산자 프로그래밍 인터페이스를 사용하여 사용자 지정 C++ 연산자 특징. 사용자 지정 연산자는 텐서 팩토리 함수 GPSIMD-Engine에 의해 가속됩니다.
  • 제어 흐름(출시 예정) – 이는 결국 한 계층에서 다른 계층으로 데이터를 전처리 및 후처리하기 위한 모델 내부의 기본 프로그래밍 언어 제어 흐름을 위한 것입니다.
  • 동적 모양(출시 예정) – 이것은 모델이 내부 레이어의 출력 모양을 동적으로 변경할 때 유용합니다. 예를 들어 입력 데이터를 기반으로 모델 내부의 출력 텐서 크기 또는 모양을 줄이는 필터입니다.

AWS Inferentia1 및 AWS Inferentia2에서 모델 가속화

XNUMXD덴탈의 AWS 뉴런 SDK 모델을 컴파일하고 실행하는 데 사용됩니다. 기본적으로 PyTorch 및 TensorFlow와 통합됩니다. 이렇게 하면 추가 도구를 실행할 필요가 없습니다. 이러한 ML 프레임워크 중 하나로 작성된 원본 코드를 사용하고 몇 줄의 코드만 변경하면 AWS Inferentia를 사용할 수 있습니다.

PyTorch를 사용하여 AWS Inferentia1 및 AWS Inferentia2에서 모델을 컴파일하고 실행하는 방법을 살펴보겠습니다.

torchvision에서 사전 훈련된 모델(ResNet 50) 로드

미리 훈련된 모델을 로드하고 한 번 실행하여 워밍업합니다.

import torch
import torchvision model = torchvision.models.resnet50(weights='IMAGENET1K_V1').eval().cpu()
x = torch.rand(1,3,224,224).float().cpu() # dummy input
y = model(x) # warmup model

Inferentia1에서 가속 모델 추적 및 배포

모델을 AWS Inferentia로 추적하려면 가져오기 torch_neuron 추적 기능을 호출합니다. 모델이 작동하려면 추적 가능한 PyTorch Jit여야 합니다.

추적 프로세스가 끝나면 모델을 일반 PyTorch 모델로 저장합니다. 모델을 한 번 컴파일하고 필요한 만큼 다시 로드합니다. Neuron SDK 런타임은 이미 PyTorch에 통합되어 있으며 운영자를 AWS Inferentia1 칩에 자동으로 전송하여 모델을 가속화합니다.

추론 코드에서는 항상 가져와야 합니다. torch_neuron 통합 런타임을 활성화합니다.

통과 할 수 있습니다 추가 매개 변수 모델을 최적화하는 방식을 사용자 정의하거나 뉴런-파이프라인-코어와 같은 특수 기능을 활성화하기 위해 컴파일러에 전달합니다. 여러 코어에 걸쳐 모델을 샤딩하여 처리량을 늘립니다.

import torch_neuron # Tracing the model using AWS NeuronSDK
neuron_model = torch_neuron.trace(model,x) # trace model to Inferentia
# Saving for future use
neuron_model.save('neuron_resnet50.pt') # Next time you don't need to trace the model again
# Just load it and AWS NeuronSDK will send it to Inferentia automatically
neuron_model = torch.jit.load('neuron_resnet50.pt') # accelerated inference on Inferentia
y = neuron_model(x)

Inferentia2에서 가속화된 모델 추적 및 배포

AWS Inferentia2의 경우 프로세스가 비슷합니다. 유일한 차이점은 가져오는 패키지가 x로 끝나는 것입니다. torch_neuronx. Neuron SDK는 모델의 컴파일 및 실행을 투명하게 처리합니다. 당신은 또한 통과 할 수 있습니다 컴파일러에 대한 추가 매개변수 작업을 미세 조정하거나 특정 기능을 활성화합니다.

import torch_neuronx # Tracing the model using NeuronSDK
neuron_model = torch_neuronx.trace(model,x) # trace model to Inferentia
# Saving for future use
neuron_model.save('neuron_resnet50.pt') # Next time you don't need to trace the model again
# Just load it and NeuronSDK will send it to Inferentia automatically
neuron_model = torch.jit.load('neuron_resnet50.pt') # accelerated inference on Inferentia
y = neuron_model(x)

AWS Inferentia2는 또한 다음 모델을 실행하기 위한 두 번째 접근 방식을 제공합니다. 게으른 텐서 추론. 이 모드에서는 이전에 모델을 추적하거나 컴파일하지 않습니다. 대신 컴파일러는 코드를 실행할 때마다 즉석에서 실행됩니다. 추적 모드가 많은 이점 Lazy Tensor 추론에 대해. 그러나 아직 모델을 개발 중이고 더 빠르게 테스트해야 하는 경우 Lazy Tensor 추론이 좋은 대안이 될 수 있습니다. Lazy Tensor를 사용하여 모델을 컴파일하고 실행하는 방법은 다음과 같습니다.

import torch
import torchvision
import torch_neuronx
import torch_xla.core.xla_model as xm device = xm.xla_device() # Create XLA device
model = torchvision.models.resnet50(weights='IMAGENET1K_V1').eval().cpu()
model.to(device) x = torch.rand((1,3,224,224), device=device) # dummy input
with torch.no_grad(): y = model(x) xm.mark_step() # Compilation occurs here

이제 AWS Inferentia2에 익숙해졌으므로 좋은 다음 단계는 시작하는 것입니다. 파이 토치 or 텐서 플로우 개발 환경을 설정하고 자습서와 예제를 실행하는 방법을 배웁니다. 또한 다음을 확인하십시오. AWS Neuron 샘플 GitHub 리포지토리Inf2, Inf1 및 Trn1에서 실행할 모델을 준비하는 방법에 대한 여러 예를 찾을 수 있습니다.

AWS Inferentia1과 AWS Inferentia2 간의 기능 비교 요약

AWS Inferentia2 컴파일러는 XLA 기반, 그리고 AWS는 OpenXLA 이니셔티브. 이것은 AWS Inferentia1과의 가장 큰 차이점이며 PyTorch, TensorFlow 및 JAX에는 기본 XLA 통합이 있기 때문에 관련이 있습니다. XLA는 단일 커널 실행에서 결과를 계산하도록 그래프를 최적화한다는 점에서 많은 성능 향상을 제공합니다. 연속적인 텐서 작업을 융합하고 AWS Inferentia2에서 모델 실행을 가속화하기 위한 최적의 기계 코드를 출력합니다. Neuron SDK의 다른 부분도 AWS Inferentia2에서 개선되었으며 모델을 추적하고 실행하는 동안 사용자 경험을 최대한 단순하게 유지했습니다. 다음 표는 컴파일러와 런타임 버전 모두에서 사용할 수 있는 기능을 보여줍니다.

특색 토치 뉴런 토치 뉴런
텐서 보드 가능 가능
지원되는 인스턴스 정보1 Inf2 및 Trn1
추론 지원 가능 가능
교육 지원 아니 가능
아키텍처 뉴런코어-v1 뉴런코어-v2
추적 API torch_neuron.trace() torch_neuronx.trace()
분산 추론 뉴런코어 파이프라인 집단 커뮤니케이션
IR 그래프 정의 HLO
컴파일러 뉴런-cc 뉴런x-cc
모니터링 뉴런 모니터 / 모니터 탑 뉴런 모니터 / 모니터 탑

더 자세한 비교를 위해 torch-neuron (Inf1) 및 torch-neuronx (Inf2) 참조 추론을 위한 토치-뉴런(Inf1) 대 토치-뉴런(Inf2 & Trn1) 비교.

모델 서빙

Inf2에 배포할 모델을 추적한 후에는 많은 배포 옵션이 있습니다. 다양한 방식으로 실시간 예측 또는 일괄 예측을 실행할 수 있습니다. Inf2는 EC2 인스턴스가 다음을 사용하는 다른 AWS 서비스에 기본적으로 통합되어 있기 때문에 사용할 수 있습니다. 딥 러닝 컨테이너 (DLC)와 같은 Amazon 탄력적 컨테이너 서비스 (아마존 ECS), Amazon Elastic Kubernetes 서비스 (Amazon EKS) 및 SageMaker.

AWS Inferentia2는 가장 널리 사용되는 배포 기술과 호환됩니다. 다음은 AWS Inferentia2를 사용하여 모델을 배포하기 위한 몇 가지 옵션 목록입니다.

기준

다음 표는 AWS Inferentia2가 AWS Inferentia1에 제공하는 개선 사항을 보여줍니다. 특히 지연 시간(모델이 각 가속기를 사용하여 얼마나 빨리 예측할 수 있는지), 처리량(초당 추론 수) 및 추론당 비용(각 추론 비용이 미국 달러로 얼마인지)을 측정합니다. 대기 시간(밀리초)과 비용(미국 달러)이 낮을수록 좋습니다. 처리량이 높을수록 좋습니다.

이 과정에서 두 가지 모델이 사용되었습니다. 두 가지 모두 대규모 언어 모델입니다. ELECTRA 대형 판별자와 케이스가 없는 BERT 대형입니다. 이 실험에 사용된 주요 라이브러리인 PyTorch(1.13.1) 및 Hugging Face 변환기(v4.7.0)는 Python 3.8에서 실행되었습니다. 배치 크기 = 1 및 10에 대한 모델을 컴파일한 후(이전 섹션의 코드를 참조로 사용) 각 모델을 워밍업(컨텍스트를 초기화하기 위해 한 번 호출)한 다음 연속으로 10번 호출했습니다. 다음 표는 이 간단한 벤치마크에서 수집된 평균 수치를 보여줍니다.

모델 이름 배치 크기 문장 길이 대기 시간 (밀리 초) Inf2에 비해 Inf1 개선(x배) 처리량(초당 추론) 추론당 비용(EC2 us-east-1) **
정보1 정보2 정보1 정보2 정보1 정보2
ElectraLargeDiscriminator 1 256 35.7 8.31 4.30 28.01 120.34 $0.0000023 $0.0000018
ElectraLargeDiscriminator 10 256 343.7 72.9 4.71 2.91 13.72 $0.0000022 $0.0000015
BertLarge케이스 없음 1 128 28.2 3.1 9.10 35.46 322.58 $0.0000018 $0.0000007
BertLarge케이스 없음 10 128 121.1 23.6 5.13 8.26 42.37 $0.0000008 $0.0000005

* c6a.8xlarge 이 벤치마크에는 32개의 AMD Epyc 7313 CPU가 사용되었습니다.

**2월 1일 us-east-20의 ECXNUMX 공개 가격: inf2.xlarge: $0.7582/시간; inf1.xlarge: $0.228/시간. 추론당 비용은 배치의 요소당 비용을 고려합니다. (추론당 비용은 모델 호출/배치 크기의 총 비용과 같습니다.)

교육 및 추론 성능에 대한 추가 정보는 다음을 참조하십시오. Trn1/Trn1n 성능.

결론

AWS Inferentia2는 딥 러닝 모델 추론의 성능을 개선하고 비용을 절감하도록 설계된 강력한 기술입니다. AWS Inferentia1보다 더 뛰어난 성능을 제공하며 유사한 추론에 최적화된 다른 EC4 인스턴스보다 최대 10배 더 높은 처리량, 최대 50배 더 짧은 지연 시간, 최대 2% 향상된 와트당 성능을 제공합니다. 결국 비용을 덜 지불하고 더 빠르게 적용할 수 있으며 지속 가능성 목표를 달성할 수 있습니다.

추론 코드를 AWS Inferentia2로 마이그레이션하는 것은 간단하고 간단합니다. AWS InferentiaXNUMX는 생성 AI를 위한 대규모 언어 모델 및 기반 모델을 포함하여 더 다양한 모델도 지원합니다.

다음을 따라 시작할 수 있습니다. AWS Neuron SDK 설명서 개발 환경을 설정하고 가속화된 딥 러닝 프로젝트를 시작합니다. 시작하는 데 도움이 되도록 Hugging Face에 Neuron 지원이 추가되었습니다. 최적의 더 빠른 교육 및 추론을 위해 모델을 최적화하고 Inf2에서 실행할 준비가 된 많은 예제 작업이 있는 라이브러리. 또한, 우리를 확인 대규모 모델 유추 컨테이너를 사용하여 AWS Inferentia2에 대규모 언어 모델 배포 모델 유추 컨테이너를 사용하여 LLM을 AWS Inferentia2에 배포하는 방법을 알아봅니다. 추가 예는 다음을 참조하세요. AWS Neuron 샘플 GitHub 리포지토리.


저자 소개

AWS Inferentia2는 AWS Inferentia1을 기반으로 4배 더 높은 처리량과 10배 더 낮은 지연 시간을 제공합니다 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.사미르 아라우조 AWS의 AI / ML 솔루션 설계자입니다. 그는 AWS를 사용하여 비즈니스 과제를 해결하는 AI / ML 솔루션을 만드는 고객을 지원합니다. 그는 컴퓨터 비전, 자연어 처리, 예측, 엣지에서의 ML 등과 관련된 여러 AI / ML 프로젝트를 진행하고 있습니다. 그는 자유 시간에 하드웨어 및 자동화 프로젝트를 가지고 노는 것을 좋아하며 로봇 공학에 특히 관심이 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습