LLM 서비스

LLM 텍스트 생성의 이해

LLM(대형 언어 모델)은 입력 프롬프트의 토큰이 병렬로 처리되는 “미리 채우기”와 자동 회귀 분석에서 텍스트가 한 번에 하나의 ‘토큰’을
생성하는 “디코딩”의 2단계 프로세스로 텍스트를 생성합니다. 생성된 각 토큰은 입력에 추가되고 모델에 피드백되어 다음 토큰을 생성합니다.

<미리 채우기>

<자동 회귀 분석 – 디코딩>

출처 : https://jalammar.github.io/illustrated-gpt2/#part-1-got-and-language-modeling

LLM 서비스

LLM 서비스에 대한 중요한 지표

TTFT(Time To First Token)

사용자가 쿼리를 입력한 후 모델의 출력을 보기 시작하는 시간입니다. 짧은 응답 대기 시간은 실시간 상호 작용에 필수적이지만 오프라인 워크로드에서는 덜 중요합니다.
이 지표는 프롬프트를 처리한 다음 첫 번째 출력 토큰을 생성하는 데 필요한 시간에 따라 결정됩니다.

TPOT(Time Per Output Token)

시스템에 쿼리하는 각 사용자에 대해 출력 토큰을 생성하는 데 걸리는 시간입니다. 이 측정항목은 각 사용자가 모델의 “속도”를 인식하는 방식과 일치합니다.
예를 들어, 100밀리초/톡의 TPOT는 사용자당 초당 10개의 토큰 또는 분당 최대 450단어로 일반 사람이 읽을 수 있는 것보다 빠릅니다.

지연 시간

모델이 사용자에 대한 전체 응답을 생성하는 데 걸리는 전체 시간입니다.
전체 응답 대기 시간은 앞의 두 가지 지표인 대기 시간 = (TTFT) + (TPOT) * (생성될 토큰 수)를 사용하여 계산할 수 있습니다.

처리량

추론 서버가 모든 사용자 및 요청에 걸쳐 생성할 수 있는 초당 출력 토큰 수입니다.

LLM 서비스

LLM 추론의 과제

LLM 추론 최적화는 다음과 같은 일반적인 기술의 이점을 제공합니다.

운영자 융합

서로 다른 인접 운영자를 결합하면
대기 시간이 더 길어지는 경우가 많습니다.

양자화

더 적은 수의 비트를 사용하도록
활성화 및 가중치가 압축됩니다.

압축

희소성
또는 증류.

병렬화

여러 장치에 걸친 텐서 병렬성 또는
대규모 모델의 파이프라인 병렬성입니다.

LLM 서비스

LLM 서비스 최적화 사례 연구
– 양자화

양자화는 LLM 추론을 위한 하드웨어 요구 사항을 줄이는 데 사용되는 일반적인 기술입니다.
추론 중에 모델 가중치 및 활성화의 정밀도를 줄이면 하드웨어 요구 사항을 크게 줄일 수 있습니다.

그림. 한가지 가능한 양자화 전후의 값 분포

LLM 서비스

LLM 서비스 최적화 사례 연구
– 압축

증류(Distillation)

모델의 크기를 줄이는 또 다른 접근 방식은 증류라는 프로세스를 통해 지식을 더 작은 모델로 이전하는 것입니다. 이 과정에는 더 작은 모델(학생이라고 함)이 더 큰 모델(교사)의 행동을 모방하도록 훈련하는 것이 포함됩니다.

그림. 지식 증류를 위한 일반적인 프레임워크. Credit: Knowledge Distillation: A Survey

희소성(Sparsity)

양자화와 유사하게, 많은 딥 러닝 모델이 프루닝을 하거나 0에 가까운 특정 값을 0 자체로 대체하는 데 강한 것으로 나타났습니다. 희소 행렬은 많은 요소가 0인 행렬로, 전체 밀도 행렬보다 공간을 덜 차지하는 압축된 형태로 표현할 수 있습니다.

그림. 0이 아닌 데이터 값과 해당 2비트 인다이스로 구성된 압축 형식으로 표현되는 희소 행렬

LLM 서비스

LLM 서비스 최적화 사례 연구
– 병렬화

델 병렬화는 단일 장치에서 사용할 수 있는 것보다 더 많은 메모리가 필요한 모델을 학습 또는 추론하고
특정 사용 사례에 적합한 학습 시간 및 추론 측정값(지연 시간 또는 처리량)을 만들기 위해 반드시 필요합니다.

파이프라인 병렬화

그림. 4방향 파이프라인 병렬 처리의 그림. Credit: GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism

텐서 병렬화

그림. 다중 레이어 퍼셉트론(MLP) 및 자체 어텐션 레이어의 텐서 병렬 처리 Credit: Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism

LLM 서비스

LLM 추론 최적화의 핵심
– 메모리 대역폭

LLM의 계산은 주로 행렬-행렬 곱셈 연산에 의해 지배됩니다. 작은 크기의 이러한 작업은 일반적으로 대부분의 하드웨어에서 메모리 대역폭에 제한됩니다. 자동 회귀 방식으로 토큰을 생성할 때 활성화 매트릭스 차원(배치 크기 및 시퀀스의 토큰 수로 정의됨) 중 하나는 작은 배치 크기에서 작습니다. 따라서 속도는 로드된 데이터를 얼마나 빨리 계산할 수 있는지보다는 GPU 메모리에서 로컬 캐시/레지스터로 모델 매개변수를 얼마나 빨리 로드할 수 있는지에 따라 달라집니다. 추론 하드웨어에서 사용 가능하고 달성된 메모리 대역폭은 최대 컴퓨팅 성능보다 토큰 생성 속도를 더 잘 예측하는 지표입니다.

그림. MBU(모델 대역폭 활용) 및 MFU(모델 플롭 활용)를 보여줍니다.
MBU 및 MFU는 각각 메모리 경계 및 계산 경계 영역에서 달성된 피크의 일부입니다.

LLM 서비스

LLM 서비스 벤치마킹 결과
– 지연 시간

다양한 수준의 텐서 병렬 처리에서 첫 번째 토큰까지의 시간(TTFT)과 출력 토큰당 시간(TPOT)을 측정했습니다. 입력 프롬프트가 길어짐에 따라 첫 번째 토큰을 생성하는 시간이 전체 대기 시간의 상당 부분을 차지하기 시작합니다. 여러 GPU에 걸쳐 Tensor를 병렬화하면 이러한 지연 시간을 줄이는 데 도움이 됩니다. 모델 훈련과 달리 더 많은 GPU로 확장하면 추론 지연 시간에 대한 수익이 크게 감소합니다.

표. 입력 요청 시 첫 번째 토큰까지 걸리는 시간은 토큰 길이 512개, 배치 크기 1입니다.
Llama2 70B와 같은 대형 모델은 메모리에 맞추기 위해 최소 4xA100-40B GPU가 필요합니다.

LLM 서비스

LLM 서비스 벤치마킹 결과
– 처리량

요청을 일괄 처리하여 토큰당 처리량과 시간을 절충할 수 있습니다. GPU 평가 중에 쿼리를 그룹화하면 쿼리를 순차적으로 처리하는 것에 비해
처리량이 증가하지만 각 쿼리를 완료하는 데 시간이 더 오래 걸립니다. 추론 요청을 일괄 처리하는 데는 몇 가지 일반적인 기술이 있습니다.

그림. LLM 제공을 통한 다양한 일괄 처리 유형.
일괄 처리는 추론 효율성을 향상시키는 효과적인 방법입니다.

정적 일괄 처리

클라이언트는 여러 프롬프트를 요청에 포함하고 일괄 처리의 모든 시퀀스가 ​​완료된 후 응답이 반환됩니다.
우리의 추론 서버는 이를 지원하지만 필수는 아닙니다.

동적 일괄 처리

프롬프트는 서버 내부에서 즉시 일괄 처리됩니다. 일반적으로 이 방법은 정적 일괄 처리보다 성능이 떨어지지만
응답이 짧거나 길이가 균일한 경우 최적에 가까워질 수 있습니다. 요청에 다른 매개변수가 있는 경우 제대로 작동하지 않습니다.

지속적인 일괄 처리

요청이 도착하면 함께 일괄 처리하는 아이디어가 이 훌륭한 문서에 소개되었으며 현재 SOTA 방법입니다.
일괄 처리의 모든 시퀀스가 ​​완료될 때까지 기다리는 대신 반복 수준에서 시퀀스를 함께 그룹화합니다. 동적 일괄 처리보다 10배~20배 더 나은 처리량을 달성할 수 있습니다.

LLM 서비스

LLM 서비스 벤치마킹 결과
– 배치 크기

일괄 처리가 얼마나 잘 작동하는지는 요청 스트림에 따라 크게 달라집니다.
그러나 균일한 요청으로 정적 일괄 처리를 벤치마킹하면 성능의 상한선을 얻을 수 있습니다.

표. 정적 일괄 처리 및 FasterTransformers 기반 백엔드를 사용한 최대 MPT-7B 처리량(요청/초).
요청: 입력 토큰 512개 및 출력 토큰 64개. 더 큰 입력의 경우 OOM 경계는 더 작은 배치 크기가 됩니다.

LLM 서비스

LLM 서비스 벤치마킹 결과
– 지연 시간 균형

배치 크기에 따라 요청 대기 시간이 늘어납니다. 유 추론 서비스는 일반적으로 균형 잡힌 배치 크기를 선택합니다. 자신의 모델을 호스팅하는 사용자는 애플리케이션에 대한 적절한 대기 시간/처리량 균형을 결정해야 합니다. 챗봇과 같은 일부 애플리케이션에서는 빠른 응답을 위한 낮은 대기 시간이 최우선 사항입니다. 구조화되지 않은 PDF의 일괄 처리와 같은 다른 애플리케이션에서는 개별 문서를 처리하는 대기 시간을 희생하여 모든 문서를 병렬로 빠르게 처리할 수 있습니다.

그림. MPT-7B 모델의 처리량 지연 곡선. 이를 통해 사용자는 대기 시간 제약 하에서 처리량 요구 사항을 충족하는 하드웨어 구성을 선택할 수 있습니다.

LLM 서비스

결론 및 주요 결과

각 요소는 모델을 구축하고 배포하는 방식에 영향을 미칩니다. 우리는 이러한 결과를 사용하여 하드웨어 유형, 소프트웨어 스택, 모델 아키텍처 및 일반적인 사용 패턴을 고려하는 데이터 기반 결정을 내립니다. 다음은 도출된 몇 가지 권장 사항입니다.

최적화
목표 파악

지연 시간 구성
요소에 주의

메모리
대역폭

일괄
처리

심도 있는
최적화

하드웨어
구성

데이터 중심
의사결정

LLM

LLM 서비스 자세히 알아보기