[워크삽] AWS 트레니엄 워크삽(4)-vLLM
이번 AWS 트레니엄 워크삽 글에서는 고성능 LLM 서빙인 vLLM에 대해 자세히 알아보도록 하겠다.
1. vLLM: 고성능 LLM 서빙
1-1. 성능 관련 기능
- 높은 처리량: 최적화된 어텐션 메커니즘을 통해 높은 처리량을 제공한다.
- 연속 배칭(Continuous Batching): 들어오는 요청을 동적으로 처리해 컴퓨팅 자원 활용률을 높인다.
- 빠른 모델 실행: 추론에 최적화된 커널을 사용한다.
1-2. 사용 편의성
- Hugging Face 통합: 널리 사용되는 모델을 손쉽게 배포할 수 있다.
- OpenAI 호환 API: 개발자에게 익숙한 API 인터페이스를 제공한다.
- 접두어 캐싱(Prefix Caching): 비슷한 입력이나 공통 접두어가 포함된 요청의 추론 속도를 높인다.
- 다양한 하드웨어 지원: AWS Neuron에 최적화된 실행 환경을 포함해 여러 하드웨어를 지원한다.
2. 아키텍처 개요
vLLM은 여러 핵심 구성 요소가 서로 협력해 고성능 LLM 서빙을 제공하는 구조로 설계됐다.

2-1. LLM 엔진
LLM 엔진은 vLLM의 중앙 오케스트레이터로 다음 기능을 관리한다.
- 모델 로딩 및 초기화: 모델을 가속기 메모리에 효율적으로 적재한다.
- 요청 스케줄링: 들어오는 요청을 처리하고 실행 대기열을 관리한다.
- 메모리 관리: 메모리 관리자와 협력해 컴퓨팅 자원을 효율적으로 사용한다.
2-2. 메모리 관리자
메모리 관리자는 메모리의 효율적인 할당과 관리를 담당한다.
- GPU 메모리 할당: 모델 가중치와 활성값(Activation)을 저장할 GPU 메모리 풀을 관리한다.
- 메모리 최적화: 메모리 단편화를 줄이기 위한 최적화 전략을 적용한다.
- 동적 할당: 워크로드 요구에 따라 메모리 할당량을 조절한다.
2-3. 스케줄러
스케줄러는 다음과 같은 요청 처리 작업을 담당한다.
- 요청 대기열 관리: 들어오는 요청을 우선순위 대기열로 관리한다.
- 배치 구성: 여러 요청을 처리하기에 적합한 배치로 묶는다.
- 자원 할당: 각 배치에 필요한 가속기 자원을 배정한다.
2-4. 워커 프로세스
여러 워커 프로세스가 실제 모델 실행을 담당한다.
- 모델 실행: GPU와 같은 가속기에서 실제 추론을 수행한다.
- 병렬 처리: 여러 요청을 동시에 처리한다.
- 부하 분산: 사용 가능한 워커에 워크로드를 분산한다.
3. 연속 배칭(Continuous Batching)
vLLM의 연속 배칭은 들어오는 요청을 동적으로 처리하는 방식이다.
| 구분 | 기존 배칭 | 연속 배칭 |
|---|---|---|
| 배치 크기 | 고정된 크기로 구성 | 실행 중 동적으로 구성 |
| 요청 처리 | 기존 배치가 끝날 때까지 대기 | 요청이 들어오는 대로 처리 |
| 자원 활용 | 요청 길이 차이로 유휴 자원 발생 | 완료된 요청 자리에 새 요청 투입 |
| 적용 환경 | 일정한 오프라인 워크로드 | 요청 패턴이 변하는 실시간 서비스 |
3-1. 연속 배칭의 장점
- 낮은 지연 시간: 배치가 완전히 채워질 때까지 기다릴 필요가 없다.
- 높은 처리량: 동적 스케줄링으로 가속기 활용률을 높인다.
- 유연성: 요청 길이와 도착 시점이 다양한 워크로드를 효율적으로 처리한다.
- 개선된 사용자 경험: 실시간 애플리케이션에서 더욱 빠른 응답을 제공한다.
4. AWS Neuron 통합

4-1. AWS Neuron이란 무엇인가?
AWS Neuron은 AWS Inferentia와 Trainium 칩에서 고성능 머신러닝 학습과 추론을 실행할 수 있게 해주는 소프트웨어 개발 키트(SDK)다. vLLM은 AWS Neuron을 기본적으로 지원한다. 이를 통해 비용 효율적인 전용 AI 하드웨어에서 LLM 추론을 실행할 수 있다.
4-2. AWS Neuron의 장점
1) 비용 최적화
- 낮은 추론당 비용: Neuron 칩은 머신러닝 학습과 추론을 위해 전용으로 설계됐다.
- 예측 가능한 요금: 하드웨어를 미리 구매하지 않고 사용한 만큼 비용을 지불한다.
- 확장성: 요청량에 따라 컴퓨팅 자원을 늘리거나 줄이기 쉽다.
2) 성능
- 높은 처리량: 배치 추론 워크로드에 최적화돼 있다.
- 낮은 지연 시간: 머신러닝 연산을 위한 전용 하드웨어를 사용한다.
- 효율적인 메모리 사용: 신경망 처리에 최적화된 메모리 계층 구조를 제공한다.
4-3. AWS Neuron용 vLLM 설치
1) 사전 요구사항
- Neuron 인스턴스를 사용할 수 있는 AWS 계정
- Python 3.8 이상
- AWS Neuron SDK
2) 설치 절차
- Neuron SDK 설치:
torch-neuron과transformers-neuronx패키지를 설치한다. -
Neuron을 지원하는 vLLM 설치: 다음과 같이 Neuron 추가 기능을 포함해 vLLM을 설치하거나 소스 코드에서 직접 설치한다.
pip install "vllm[neuron]" - Neuron 통합 확인: vLLM에서 AWS Neuron 지원 기능이 정상적으로 작동하는지 확인한다.
4-3. Neuron에서 모델 실행
1) 기본 사용법
Neuron 장치에 모델을 초기화하고 텐서 병렬화(Tensor Parallelism)를 구성한다. 이후 온도(Temperature)와 Top-p 등의 샘플링 매개변수를 지정해 텍스트를 생성한다.
2) 고급 구성
여러 인스턴스에 모델을 배포할 때 다음 항목을 조정해 성능을 최적화한다.
- 텐서 병렬화 크기
- 모델의 최대 컨텍스트 길이
- 메모리 활용률
- 인스턴스별 모델 배치 방식
4-4. Neuron 전용 최적화
1) 메모리 관리
- 모델 분할(Model Partitioning): 대규모 모델을 여러 Neuron 인스턴스나 NeuronCore에 자동으로 분할한다.
- 메모리 최적화: Neuron의 전용 아키텍처에 맞춰 메모리를 효율적으로 사용한다.
- 동적 할당: 모델 요구사항에 따라 메모리 할당량을 조정한다.
2) 성능 튜닝
- 배치 크기 최적화: Neuron에서 높은 성능을 얻을 수 있도록 배치 크기를 조정한다.
- 모델 양자화(Model Quantization): Neuron에서 INT8 양자화를 사용할 수 있다.
- 병렬 처리: 여러 Neuron 인스턴스나 코어를 활용해 처리량을 높인다.
4-5. 배포 시 고려 사항
1) 인스턴스 유형
| 인스턴스 | 구성 및 용도 |
|---|---|
Inf1.xlarge |
Neuron 칩 1개를 제공하며 개발과 테스트에 적합하다. |
Inf1.2xlarge |
Neuron 칩 1개와 더 많은 시스템 메모리를 제공한다. |
Inf1.6xlarge |
Neuron 칩 4개를 제공하며 처리량이 높은 운영 워크로드에 적합하다. |
Trn1.xlarge |
Trainium 기반 인스턴스로 학습과 추론에 사용한다. |
2) 확장 전략
- 수평 확장(Horizontal Scaling): Neuron 인스턴스를 추가해 전체 처리량을 높인다.
- 수직 확장(Vertical Scaling): 더 큰 모델을 실행하기 위해 상위 인스턴스 유형을 사용한다.
- 자동 확장(Auto Scaling): 요청량과 워크로드 패턴에 따라 인스턴스 수를 자동으로 조절한다.
3) 모니터링과 최적화
- CloudWatch 지표: Neuron 활용률과 추론 성능을 모니터링한다.
- 비용 추적: 추론 비용을 추적하고 자원 사용 방식을 최적화한다.
- 성능 프로파일링: 병목 지점을 찾아 실행 구성을 개선한다.
5. 결론
vLLM은 효율적인 메모리 관리와 연속 배칭을 바탕으로 LLM을 빠르게 서빙할 수 있는 강력한 솔루션이다. AWS Neuron과 통합하면 이러한 장점을 Trainium과 Inferentia 같은 비용 효율적인 전용 AI 하드웨어에서도 활용할 수 있다. 핵심 장점은 다음과 같다.
- 성능: 높은 처리량과 낮은 지연 시간을 제공한다.
- 효율성: 메모리와 GPU 또는 NeuronCore의 활용률을 높인다.
- 확장성: 수평 확장과 수직 확장을 모두 지원한다.
- 비용 효율성: 컴퓨팅 자원을 효율적으로 사용해 운영 비용을 줄인다.
- 사용 편의성: 간단한 API와 다양한 운영 도구를 제공한다.
vLLM은 실제 운영 환경에서 고성능 LLM 서빙 시스템을 구축하는 데 필요한 도구와 최적화 기능을 제공한다.
댓글남기기