텍스트 생성 추론 벤치마킹
Hugging Face는 텍스트 생성 추론 (TGI)용 벤치마킹 도구를 출시했으며, 이를 통해 개발자는 처리량과 지연 시간 간의 트레이드오프를 프로파일링할 수 있습니다. 이 도구는 단순한 처리량 지표를 넘어 사용자가 Retrieval-Augmented Generation (RAG)이나 채팅과 같은 특정 사용 사례에 최적의 구성을 결정하도록 도와주어 배포 비용을 절감하고 사용자 경험을 향상시킵니다.
LLM 추론 성능 이해
LLM 추론은 디코더가 생성되는 각 토큰마다 새로운 포워드 패스가 필요하기 때문에 근본적으로 비효율적입니다. 이를 완화하기 위해 TGI는 Flash Attention, Paged Attention, quantization, speculation 등 여러 성능 향상 기술을 통합합니다. 그러나 이러한 기술들의 최적 구성은 특정 워크로드에 크게 좌우됩니다.
- RAG 사용 사례: 일반적으로 여러 검색된 문서로 인해 프롬프트가 길고 중간 규모의 출력이 발생하며, 모델의 컨텍스트 윈도우 한계에 도전합니다.
- 채팅 시나리오: 일반적으로 짧은 프롬프트와 여러 턴에 걸친 출력을 포함합니다.
주요 성능 지표
배포를 효과적으로 프로파일링하기 위해 TGI 벤치마킹 도구는 네 가지 주요 지표에 초점을 맞춥니다:
- 토큰 지연 시간: 사용자에게 단일 토큰을 처리하고 전송하는 데 걸리는 시간.
- 요청 지연 시간: 요청에 완전히 응답하는 데 소요되는 전체 시간.
- 첫 토큰까지 시간 (TTFT): 초기 요청부터 첫 토큰이 반환될 때까지의 기간으로, 프리필 처리와 첫 토큰 생성이 결합된 시간.
- 처리량: 서버가 일정 시간 내에 반환할 수 있는 토큰 수.
처리량과 지연 시간은 서로 직교하는 측정값이며, 하나를 최적화하면 종종 다른 하나와의 트레이드오프가 필요합니다.
두 단계 추론 프로세스
LLM 생성은 두 개의 구별된 단계로 이루어지며, 벤치마킹 도구는 이를 별도로 프로파일링합니다:
- 프리필 단계: 전체 프롬프트를 단일 포워드 패스로 처리하여 첫 토큰을 생성합니다. 이 단계는 TTFT를 결정하는 데 중요합니다.
- 디코딩 단계: 이후 토큰은 하나씩 생성됩니다. 생성된 토큰은 다음 포워드 패스를 위해 입력에 추가됩니다. 이 단계에서 대부분의 계산 시간이 소요됩니다.
TGI 벤치마킹 도구 사용
벤치마킹 도구는 TGI에 통합되어 있으며 CLI를 통해 실행할 수 있습니다. Hugging Face는 TGI Docker 이미지와 Jupyter Lab 환경을 결합한 전용 Space를 제공하여 테스트를 용이하게 합니다.
결과 분석
도구는 X축이 지연 시간(낮을수록 좋음)을, Y축이 처리량(높을수록 좋음)을 나타내는 산점도를 생성합니다. 이상적인 성능 지점은 차트의 왼쪽 상단 모서리입니다.
- 수직 데이터 추세: 곡선이 수직이면 배치 크기를 늘려도 지연 시간이 악화되지 않으면서 처리량을 증가시킬 수 있습니다. 이는 시스템이 추가 사용자를 "무료"로 처리할 여유가 있음을 의미합니다.
- 수평 데이터 추세: 곡선이 수평이면 시스템이 연산에 제한됩니다. 배치 크기를 늘리면 모든 사용자의 지연 시간이 증가하지만 처리량이 이에 상응하게 증가하지 않아, 더 나은 구성이나 하드웨어 확장이 필요함을 나타냅니다.
배포 전략
프로파일링은 반복적인 과정이어야 합니다. 개발자는 사용자 행동을 추정하고 벤치마크를 실행한 뒤 결과를 기반으로 TGI 설정을 정교화하도록 권장됩니다. 이러한 인사이트는 AWS, GCP 또는 Hugging Face Inference Endpoints의 동등한 하드웨어에 적용되어 배포가 비용 효율적이고 성능이 뛰어나도록 보장할 수 있습니다.