Notice
Recent Posts
Recent Comments
Link
허허의 오늘은 뭐 먹지?
vLLM 이란? (기초) 본문
vLLM에 대해 간단히 정리해보겠다.
1. vLLM이란?
- vLLM은 대규모 언어 모델(LLM)을 빠르고 메모리 효율적으로 서빙(inference)하기 위해 만들어진 오픈소스 엔진이다.
- 기존 파이프라인보다 높은 처리량(throughput)과 낮은 지연(latency)을 제공하면서도, 메모리 사용량(memory footprint)을 최소화하는 것을 목표로 한다.
- 여러 사용자(세션)의 요청을 동시에 처리하거나, 대규모 모델을 제한된 자원(GPU 메모리 등)에서 효율적으로 돌려야 할 때 큰 이점을 제공한다.
2. 왜 만들어졌나?
- LLM의 규모 확장
최근 수십 억~수천 억 파라미터 규모의 모델(예: GPT, LLaMA, BLOOM 등)들이 등장하면서, 모델 추론 시 필요한 자원(GPU 메모리, CPU/GPU 연산)이 크게 늘어났다.- 기존 프레임워크(예: PyTorch, TensorFlow)만 활용하면, 요청이 몰리거나 여러 세션을 동시에 처리할 때 비효율적인 메모리 사용과 낮은 처리량 문제가 빈번하게 발생한다.
- 다중 요청(멀티 세션) 처리
ChatGPT나 유사한 챗봇 시스템처럼 여러 사용자가 동시에 모델 추론을 요청하는 상황이 늘어났다. 이를 효율적으로 처리하기 위해 vLLM은 PagedAttention 등 최적화 기법을 통해 모델 내부에서 필요한 텐서/캐시를 더욱 효율적으로 관리한다. - 서빙 비용 절감
클라우드 환경 또는 개인 GPU 환경에서 대규모 모델을 서빙할 때 비용이 많이 든다. 처리량을 높이고 메모리 사용을 줄이는 방향으로 최적화해 운영 비용을 절감하고자 한다.
3. 어떻게 시작되었나?
- 연구/개발 배경
대규모 모델 최적화 연구를 진행해 온 여러 연구자와 오픈소스 커뮤니티에서 “추론 속도를 높이고 메모리 효율성을 개선할 수 있는 전용 엔진이 필요하다”는 요구가 커졌다. - 오픈소스 프로젝트
GitHub의 vLLM 프로젝트를 통해 공개되었으며, 누구나 쉽게 설치해 사용할 수 있도록 Python 패키지 형태로 배포되었다. PyTorch 기반이지만, 내부 최적화 로직을 통해 일반적인 PyTorch 추론보다 높은 효율성을 보여준다.
4. 결과(장점) 요약
- 높은 처리량(Throughput)
동일한 GPU 자원에서 동시 다발적인 요청을 처리해도 속도가 빠르다. - 낮은 지연시간(Latency)
요청이 많아도 각 요청에 대한 응답 시간이 짧아진다. - 메모리 효율성(Memory Efficiency)
동일한 모델 크기에서 GPU 메모리를 적게 사용하거나, 동일 메모리로 더 큰 배치(batch) 또는 더 많은 동시 세션을 처리할 수 있다. - 편의성(Usability)
기존 PyTorch, Hugging Face Transformers와 연동이 비교적 쉽고, 사용법이 간단하다.
5. 간단한 테스트 코드 예시
다음 예시는 Hugging Face에서 제공하는 예시 모델(예: Llama 2 7B Chat)을 vLLM으로 추론하는 간단한 스크립트다.
주의
- Llama 2 모델은 Meta의 사용 정책 및 Hugging Face 토큰 등에 따라 접근 권한이 필요한 경우가 있다.
다른 공개 모델(예: gpt2, distilgpt2, dolly 등)로도 동일한 방식을 적용할 수 있다.
# vLLM 설치
pip install vllm accelerate transformers
# 예시 파이썬 코드 (test_vllm.py)
import torch
from vllm import LLM
def main():
# 사용할 모델(토크나이저) 이름
# meta-llama/Llama-2-7b-chat-hf 대신, gpt2, distilgpt2 등으로 바꿀 수도 있다.
model_name = "meta-llama/Llama-2-7b-chat-hf"
# vLLM 엔진 초기화
llm = LLM(
model=model_name,
tokenizer=model_name,
trust_remote_code=True # 일부 모델에서 필요할 수 있음
)
# 프롬프트(질문, 명령 등)
prompt = "안녕하세요? 오늘 기분이 어떠신가요?"
# 추론 실행 (여러 개의 프롬프트 리스트도 한번에 가능)
outputs = llm.generate([prompt])
# 결과 출력
for i, output in enumerate(outputs):
print(f"=== 응답 {i} ===")
print(output.generations[0].text) # 가장 첫 번째 생성 결과만 출력
if __name__ == "__main__":
main()
- pip install vllm accelerate transformers로 vLLM과 필요한 라이브러리를 설치한다.
- 위 코드를 test_vllm.py 파일로 저장한 뒤 python test_vllm.py로 실행한다.
- 모델 다운로드가 진행된 후 추론 결과가 터미널에 출력된다.
6. 간단한 실험 결과 예시
아래는 단일 NVIDIA A100(40GB) GPU에서 meta-llama/Llama-2-7b-chat-hf 모델을 테스트했다고 가정했을 때의 (예시) 성능이다. 실제 환경(모델 종류, GPU 사양, 배치 크기, 시퀀스 길이 등)에 따라 달라질 수 있다.
- vLLM을 사용했을 때:
- 처리량(Throughput): 예를 들어 초당 60
80 토큰 생성 (동시 요청 48개 기준) - 메모리 사용량: 약 24GB
28GB 정도 (기존 PyTorch 단순 추론 대비 1020%가량 절약되는 경우도 확인)
- 처리량(Throughput): 예를 들어 초당 60
- **기존 PyTorch + Transformers(직접 추론)**일 때:
- 처리량: 동일 설정에서 초당 40~50 토큰 생성
- 메모리 사용량: 약 28GB~30GB 정도
즉, 모델이나 환경에 따라 차이가 있지만, vLLM은 처리량을 높이고 메모리 사용량을 줄이는 방향으로 동작한다.
(주의: 위 숫자들은 실제 측정치가 아닌 예시이며, 실제로는 더 높거나 낮은 값이 나올 수 있다.)
7. 마무리
- vLLM은 대규모 언어 모델을 고성능·고효율로 서빙하기 위해 등장한 프로젝트다.
- 기존 PyTorch 추론 파이프라인의 비효율을 줄이고, 동시 요청이 많은 환경에서 낮은 지연과 높은 처리량을 얻도록 설계되었다.
- 설치와 사용이 비교적 간단하므로(코드 몇 줄로 테스트 가능), 직접 시도하며 어느 정도 성능 이점을 얻을 수 있는지 확인해보길 권장한다.
반응형
'AI' 카테고리의 다른 글
sLLM (Smaller Large Language Model) 이란? (1) | 2025.01.23 |
---|---|
AI 인프라 프로바이더와 시장 (0) | 2025.01.22 |
GPT(chatgpt계열)에서 토큰(token) 수 세기 (0) | 2025.01.22 |
GPT 메모리란? (0) | 2025.01.22 |
몇가지 시나리오에 따른 gpt 프롬프트 샘플 (0) | 2025.01.22 |
Comments