optimum-neuron을 사용하여 AWS Inferentia2에서 Llama 2 배포하기

Hugging Face는 optimum-neuron과 AWS Neuron SDK를 통합하여 AWS Inferentia2 가속기에서 Llama 2 모델 배포를 가능하게 했습니다. 이 통합을 통해 사용자는 전문 하드웨어를 활용하여 인코딩 시간, 지연 시간, 처리량 측면에서 텍스트 생성 성능을 향상시킬 수 있습니다.

배포 워크플로 및 설정

AWS Inferentia2에서 Llama 2를 배포하려면 특정 환경 설정과 모델 컴파일 단계가 필요하며, 이를 통해 모델을 Neuron 디바이스와 호환되는 직렬화 형식으로 변환합니다.

환경 구성

사용자는 세 가지 주요 방법을 통해 Inferentia2 인스턴스를 설정할 수 있습니다.

  • Hugging Face Neuron Deep Learning AMI (DLAMI): 권장되는 방법으로, Optimum Neuron, Neuron Drivers, Transformers, Datasets, Accelerate 사전 패키지된 라이브러리를 제공합니다.
  • Hugging Face Neuron SDK DLC: Amazon SageMaker에서의 배포에 사용됩니다.
  • 수동 설치: 새로운 인스턴스에서 optimum-neuron 설치 지침을 따릅니다.

모델 내보내기 및 컴파일

Neuron 디바이스는 정적 형태를 요구하므로 실행 전에 모델을 컴파일해야 합니다. NeuronModelForCausalLM API를 사용하여 사용자는 내보내기 중에 다음 매개변수를 지정합니다.

  • 컴파일러 인수: 각 뉴런 디바이스가 두 개의 코어를 가지고 있음을 정의하고 정밀도(예: float16)를 설정합니다.
  • 입력 형태: batch_sizesequence_length에 대한 정적 차원을 설정합니다. sequence_length는 입력 컨텍스트, KV 캐시, 최대 출력 길이를 제한하기 때문에 중요합니다.

컴파일 후 모델은 로컬에 저장하거나 Hugging Face Hub에 푸시하여 재사용할 수 있습니다.

텍스트 생성 기능

optimum-neurontransformers 라이브러리를 사용하거나 간소화된 optimum-neuron 파이프라인을 통해 표준 텍스트 생성을 지원합니다.

생성 전략

지원되는 생성 전략에는 다음이 포함됩니다.

  • 탐욕 탐색
  • top-k 및 top-p(온도 포함)를 사용한 다항 샘플링
  • 반복 페널티와 같은 대부분의 로짓 사전 처리 필터

구현 옵션

간소화된 배포를 위해 optimum-neuronpipeline API를 사용하면 허브에서 사전 컴파일된 모델을 로드하고 단일 함수 호출로 텍스트를 생성할 수 있습니다.

성능 벤치마크

벤치마크는 inf2.xlarge(예산 모델용)와 inf2.48xlarge(지연 시간 및 처리량 최적화 모델용)에서 다양한 구성을 가진 Llama 2 7B 및 13B 모델을 사용하여 수행되었습니다. 모든 모델은 최대 시퀀스 길이 2048을 사용했습니다.

인코딩 시간

인코딩 시간—입력 토큰을 처리하고 첫 번째 출력 토큰을 생성하는 데 걸리는 시간—은 사용자 지연 시간을 percep하는 데 중요한 지표입니다. 256개의 입력 토큰(일반적인 Q&A)의 경우 인코딩 시간은 0.3s(Llama2 7B-B)에서 0.9s(Llama2 7B-T) 사이였습니다. 768개의 입력 토큰(일반적인 RAG)의 경우 인코딩 시간은 0.5s(Llama2 7B-B)에서 5.2s(Llama2 13B-T) 사이였습니다.

엔드 투 엔드 지연 시간

엔드 투 엔드 지연 시간은 1024 토큰 길이에 도달하는 총 시간을 측정합니다. 고성능 inf2.48xlarge 인스턴스에서 Llama2 7B-L은 768개의 새로운 토큰에 대해 6.2s의 지연 시간을 달성했으며, Llama2 13B-L은 10.2s가 소요되었습니다. inf2.xlarge上的「budget」모델은 znacz히 높은 지연 시간을 보였으며, 768개의 새로운 토큰에 대해 47.3s에 도달했습니다.

처리량

처리량은 초당 총 토큰 수로 계산됩니다(엔드 투 엔드 지연 시간을 batch_size * sequence_length로 나눔).

  • 고성능: Llama2 7B-T 구성은 256개의 새로운 토큰에 대해 초당 최대 750 토큰을 달성했습니다.
  • 예산: Llama2 7B-B 모델은 초당 22~32 토큰을 달성했으며, Hugging Face는 평균 인간 읽기 속도를 고려할 때 스트리밍 사용 사례에 충분하다고 언급했습니다.

기술적 제한 및 향후 작업

성능은 강력하지만, Hugging Face는 개선이 필요한 두 가지 주요 영역을 식별했습니다.

  1. 처리량 확장: 현재 처리량은 주로 배치 크기를 늘려 증가시키며, 이는 디바이스 메모리로 제한됩니다. 대안으로 파이프라이닝이 통합되고 있습니다.
  2. 컨텍스트 길이: 정적 시퀀스 길이 요구 사항은 매우 긴 컨텍스트를 처리하는 능력을 제한합니다. 팀은 잠재적인 솔루션으로서 어텐션 싱크를 탐색하고 있습니다.

Sources