vLLM: PagedAttention으로 LLM 서빙 혁신하기
Published on
안녕하세요! 오늘은 AI 커뮤니티에서 파장을 일으키고 있는 vLLM에 대해 깊게 들어가보겠습니다. AI와 대형 언어 모델 (LLM)에 관심이 있다면, 이에 대해 들어보고 싶을 것입니다. vLLM은 단순히 다른 도구가 아닌, LLM을 더 빠르고 효율적이며 다양한 프로젝트와 팀에게 접근 가능하게 만드는 혁신적인 도구입니다. 기다리던 폭발적인 진전이 될 수도 있는 vLLM이 어떤 점이 특별하고 우리가 알아야 할 이유를 알아보겠습니다.
인공지능의 세계에서 대형 언어 모델 (LLM)의 약속은 혁명적인 것 이상입니다. 이러한 모델은 산업을 변형할 잠재력을 가지며 기술과 정보 처리와의 상호작용을 새롭게 제공합니다. 그러나 이러한 모델을 서빙하는 것은 여러 가지 도전을 겪고 있습니다. 이 모델은 상당한 계산 자원을 필요로 하며 강력한 하드웨어가 있음에도 불구하고 LLM 서빙은 놀랍도록 느리고 비싸게 이루어질 수 있습니다. 이런 상황에서 vLLM이라는 것이 등장합니다. AI 기술의 변덕스런 바다에서 혁신적인 등대 역할을 하는 도구입니다.
vLLM: PagedAttention으로 쉽고 빠르며 저렴하게 LLM 서빙하기
2023년 6월 20일 UC 버클리 팀에 의해 제안된 vLLM은 공동 혁신이 어떤 업적을 이룰 수 있는지에 대한 증거로 남아있습니다. Woosuk Kwon, Zhuohan Li, Siyuan Zhuang, Ying Sheng, Lianmin Zheng, Cody Yu, Joey Gonzalez, Hao Zhang, Ion Stoica가 개발한 vLLM은 LLM 서빙을 직면한 핵심 문제에 대처하는 방법으로 주목받고 있습니다. PagedAttention이라는 참신한 어텐션 알고리즘을 활용하여 vLLM은 처리량과 효율 면에서 기존 솔루션을 크게 능가합니다.
주요 특징:
- GitHub | 문서 | 논문: vLLM (opens in a new tab)은 기술적인 내용을 살펴보거나 자신의 LLM 서빙에 활용하기 시작하기 위한 오픈소스 자료입니다.
- 비할 데 없는 성능: 테스트에서 vLLM은 인기있는 HuggingFace Transformers와 같은 라이브러리보다 24배 높은 처리량을 제공하며 모델 아키텍처 변경 없이 동작합니다.
성공의 비결: PagedAttention
- 핵심 부분인 PagedAttention은 LLM 서빙에 대한 메모리 병목 현상을 해결합니다. 어텐션 키와 값의 관리를 더 효과적으로 처리함으로써 처리량과 효율적인 메모리 사용을 가능하게 합니다.
- 유연성과 효율성: 운영 체제의 가상 메모리 시스템에서 영감을 받은 PagedAttention은 연속되지 않은 메모리 블록에 키와 값을 저장하여 동적이고 효율적인 메모리 관리를 가능하게 합니다.
- 최적화된 메모리 사용: 이 방법을 통해 메모리 낭비를 크게 줄이고 GPU 활용률을 높여 성능을 개선할 수 있습니다.
실용적인 응용 및 영향
- 실제 배포: vLLM은 Chatbot Arena와 Vicuna Demo 등 플랫폼에 배포되어 수백만 사용자에게 유용성을 입증하였습니다.
- 비용 효율성: 처리량 개선 및 GPU 요구 사항 감소로 인해 vLLM은 소규모 팀이 대규모 언어 모델의 서빙을 저렴하게 제공할 수 있으며, 첨단 AI 기술에 대한 접근성을 높여줍니다.
vLLM 시작하기
vLLM을 시작하려는 분들을 위해 GitHub에서 설치하기 위한 단 한 줄의 명령으로 직접 체험해보세요. 오프라인 추론을 수행하거나 온라인 서빙 시스템을 설정하려는 경우, vLLM은 유연성과 사용 편의성을 제공합니다.
- 설치: 간단하고 사용자 친화적입니다. 한 줄의 명령만으로 쉽게 설치할 수 있습니다.
- 사용 사례: 데이터셋에 대한 배치 추론부터 OpenAI API와 호환되는 온라인 서빙용 API 서버 설정까지 다양한 사용 사례를 지원합니다.
vLLM을 활용한 실제 적용 사례
vLLM 작업 방식을 간단하게 살펴보기 위해 다음의 단계를 확인해보세요:
- 오프라인 배치 추론: 프롬프트 목록에서 고생도 텍스트 생성을 위해 vLLM을 사용하는 방법을 배우세요.
- API 서버 구축: LLM 서빙을 위한 OpenAI API와 호환되는 API 서버 설정 과정을 진행해보세요.
- 고급 기능: vLLM의 병렬 샘플링과 빔 서치와 같은 기능을 살펴보세요. 어려운 샘플링 알고리즘을 손쉽게 처리하는 모습을 확인해보세요.
vLLM은 더욱 접근 가능하고 효율적이며 확장 가능한 LLM 서빙의 길을 열어놓고 있습니다. 연구원이든 개발자이든, AI 애호가이든, vLLM은 대형 언어 모델과 가능한 영역을 넓힐 수 있는 기회를 제공합니다. 이제 기술적인 세부 사항을 파헤쳐보고 vLLM을 직접 확인해보겠습니다.
vLLM의 깊이 있는 탐구
vLLM은 탁월한 성능뿐만 아니라 사용 편의성에서도 높게 평가받고 있습니다. 기존 도구와 작업 흐름을 심리적으로 통합해주어 다양한 LLM 서빙 요구에 대한 다재다능한 선택을 제공합니다.
vLLM의 주요 특징
vLLM은 LLM 서빙과 관련된 여러 가지 도전에 대응하기 위해 다음과 같은 기능을 제공합니다:
- 최첨단 서빙 처리량: 최적화된 CUDA 커널과 혁신적인 PagedAttention 알고리즘을 활용하여 vLLM은 비교할 수 없는 서빙 속도를 달성합니다.
- 효율적인 메모리 관리: PagedAttention을 통해 vLLM은 어텐션 키와 값 메모리를 효율적으로 관리하여 LLM 추론의 메모리 풋프린트를 대폭 줄입니다.
- 지속적인 배칭 처리: vLLM은 들어오는 요청을 지속적으로 배칭하여 하드웨어 활용도와 처리량을 최대화할 수 있습니다.
- 최적화된 CUDA 커널: 사용자 정의 CUDA 커널을 사용하여 성능을 더욱 향상시켜 vLLM이 가능한 한 효율적으로 실행됩니다.
vLLM과 LangChain 시작하기
인기 있는 Python 패키지와의 호환성으로 인해 vLLM을 프로젝트에 통합하는 것은 간단합니다. 빠른 시작 가이드입니다:
-
설치: vllm python 패키지가 설치되어 있는지 확인하십시오. pip를 사용하여 설치할 수 있습니다:
%pip install --upgrade --quiet vllm -q
-
기본 사용법: langchain_community.llms 패키지에서 VLLM을 가져오고 원하는 모델로 초기화하여 시작하세요. 다음은 예시입니다:
from langchain_community.llms import VLLM llm = VLLM( model="mosaicml/mpt-7b", trust_remote_code=True, # hf 모델에 필수 max_new_tokens=128, top_k=10, top_p=0.95, temperature=0.8, ) print(llm.invoke("프랑스의 수도는 무엇인가요 ?"))
이 간단한 스크립트는 "프랑스의 수도는 파리"라는 결과를 반환하여 추론하는 방법을 보여줍니다.
LLMChain을 통한 추론 향상하기
보다 복잡한 추론 작업을 위해 vLLM은 LLMChain에 통합될 수 있어 정교한 프롬프트 엔지니어링과 처리가 가능합니다:
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
template = """질문: {question}
답변: 한 단계씩 생각해 봅시다."""
prompt = PromptTemplate.from_template(template)
llm_chain = LLMChain(prompt=prompt, llm=llm)
question = "첫 번째 포켓몬 게임이 출시된 해의 미국 대통령은 누구였나요?"
print(llm_chain.invoke(question))
이 방식은 단계별 추론을 가능하게 하며 복잡한 질문에 대한 상세한 답변을 제공합니다.
분산 추론과 양자화
vLLM은 분산 추론과 양자화 같은 고급 기능을 지원하여 높은 수요 환경에 적합합니다:
- 분산 추론: 여러 개의 GPU를 활용하려면 VLLM을 초기화할 때
tensor_parallel_size
인자를 설정하면 됩니다. - 양자화: vLLM은 성능을 저하시키지 않고 모델의 메모리 사용량을 크게 줄일 수 있는 AWQ 양자화도 지원합니다.
OpenAI 호환 서버
vLLM의 가장 강력한 기능 중 하나는 OpenAI API 프로토콜을 모방할 수 있다는 점으로, 현재 OpenAI API를 사용 중인 응용 프로그램에 대체 가능하게 만듭니다. 이 기능을 통해 효율적이고 확장 가능한 LLM 솔루션을 배포하는 다양한 가능성이 열립니다.
결론: vLLM과 함께하는 LLM 서빙의 미래
vLLM은 LLM 서빙 기술에서 큰 발전을 이룩한 제품입니다. 높은 처리량, 효율적인 메모리 관리, 사용의 용이성의 조합으로 vLLM은 AI 분야에서 주요한 역할을 할 수 있도록 준비되어 있습니다. 기존 응용 프로그램을 강화하거나 LLM을 활용한 새로운 가능성을 탐색하려는 경우, vLLM은 프로젝트를 성공으로 이끌기 위한 도구와 성능을 제공합니다. 커뮤니티가 계속해서 vLLM의 기능을 탐색하고 확장함에 따라 더욱 혁신적인 응용 프로그램과 개선이 기대됩니다.