TGI(Text Generation Inference) 개요
TGI (Text Generation Inference) 개요
대규모 언어 모델(LLM)을 실제 서비스로 굴리려면 모델을 효율적으로 띄우고, 요청을 받아 문장을 생성해 돌려주는 서빙 계층이 필요해요. TGI(Text Generation Inference)는 Hugging Face가 만든 오픈소스 추론 서버로, Llama, Falcon, StarCoder, BLOOM, GPT-NeoX, T5 같은 인기 오픈소스 LLM을 고성능으로 서빙하는 데 쓰이는 도구예요. 여기서는 TGI가 어떤 문제를 풀고, 어떤 기능을 갖췄는지 함께 살펴볼게요.
알아두면 좋은 배경
최근 TGI는 유지보수(maintenance) 모드로 전환됐어요. 앞으로는 사소한 버그 수정과 문서 개선, 가벼운 유지보수 작업 위주로만 PR을 받는다고 명시돼 있어요. 대신 Hugging Face는 최적화된 추론 엔진이 transformers 모델 아키텍처를 기반으로 동작하도록 방향을 잡았고, 그 흐름을 이어받은 후속 엔진으로 vllm, SGLang, 그리고 llama.cpp나 MLX 같은 로컬 엔진을 추천하고 있어요. 이 점을 염두에 두고 TGI의 기능을 이해하면 좋아요.
핵심 기능
TGI는 단순한 추론 서버가 아니라 서빙에 필요한 여러 최적화를 기본으로 갖췄어요.
- 간단한 런처: 인기 LLM 대부분을 명령 한 줄로 서빙할 수 있어요.
- 프로덕션 준비 완료: OpenTelemetry 분산 추적과 Prometheus 메트릭을 지원해서 운영 환경에서 관찰하기 좋아요.
- 텐서 병렬(Tensor Parallelism): 여러 GPU에 걸쳐 추론을 분산해 속도를 높여요.
- 토큰 스트리밍: SSE(Server-Sent Events)를 이용해 생성되는 토큰을 실시간으로 흘려보내요.
- 연속 배치(Continuous Batching): 들어오는 요청을 계속 배치에 태워 전체 처리량을 높여요.
- 최적화된 transformers 코드: Flash Attention과 Paged Attention을 인기 아키텍처에 적용해 추론을 가속해요.
- 양자화 지원: bitsandbytes와 GPTQ 방식을 이용한 양자화가 가능해요.
- Safetensors 가중치 로딩: 안전한 형식으로 모델 가중치를 불러와요.
- 워터마킹: LLM 출력에 워터마크를 입히는 기능을 지원해요.
- Logits warper: temperature, top-p, top-k, 반복 패널티 같은 생성 파라미터를 조절해요.
- 정지 시퀀스(Stop sequences)와 로그 확률: 생성을 끝낼 조건과 토큰별 확률을 다뤄요.
- 파인튜닝 모델 활용: 작업에 맞게 파인튜닝한 모델을 올려 더 나은 정확도를 얻을 수 있어요.
- Guidance 지원: 미리 정의한 출력 스키마에 맞춰 구조화된 출력을 강제함으로써 함수 호출과 툴 사용을 가능하게 해요.
실제 사용처
TGI는 이미 여러 프로젝트에서 운영 환경으로 쓰이고 있어요. 오픈소스 챗 인터페이스인 Hugging Chat, 커뮤니티 주도로 LLM을 훈련한 OpenAssistant, 그리고 LLM을 비교 탐색하는 nat.dev가 대표적인 예시예요.