개요

rvLLM은 Rust로 처음부터 재작성한 고성능 LLM 추론 엔진vLLM 완전 대체제. Python 런타임·GIL·GC 의존성 완전 제거. 단일 정적 바이너리 16MB로 배포. H100 SXM에서 Qwen2.5-1.5B 기준 40,714 tok/s 달성. 시작 시간 6초 (vLLM 120초 대비 20×), 바이너리 31× 작음. OpenAI 호환 API. Claude와 렌탈 GPU만으로 22시간 만에 완성된 프로젝트.

  • 개발자: Andy Norris
  • 공개: 2026-03-27 오픈소스
  • 설치: cargo install rvllm 또는 pip install rvllm
  • 빌드 시간: 22시간 (Claude + 렌탈 GPU)

vLLM vs rvLLM 비교

항목Python vLLMrvLLM
시작 시간~120초6초 (20×)
바이너리 크기~500MB16MB (31×)
CPU 메모리~1GB348MB
의존성PyTorch + 500MB 패키지없음 (정적 바이너리)
P95 레이턴시 분산190ms (12%)34ms (1.4%)
GC 일시 정지있음없음
GIL있음없음
언어PythonRust
CUDA 커널외부 라이브러리40개 직접 작성

벤치마크 (H100 SXM 80GB)

Qwen2.5-1.5B f16 (직접 엔진, greedy, 32 출력 토큰)

N (배치)tok/swall_ms
1240133
6415,812129
12826,161156
25640,714194

Qwen2.5-7B f16

Ntok/swall_ms
1108296
323,911261
647,300280
12812,624324

CPU 샘플링 (Rust vs Python)

연산RustPython배속
Combined penalties (2K)2.6µs63µs24×
Multinomial (32K vocab)12µs66µs5.5×
배치 64개 (Rayon)4.3ms36.4ms8.5×

핵심 최적화 기법

1. CUDA 그래프 리플레이 (+178% 처리량) ⭐

이전 구현 문제:
  temperature == 0.0 (greedy) 에만 리플레이 적용
  → 실제론 리플레이가 거의 안 됨

수정:
  CUDA 그래프 = 순전파(GEMM, 어텐션, 정규화)만 캡처
  → 샘플링과 무관하므로 조건 제거
  → 모든 디코드 스텝에서 리플레이
  → 스텝당 ~254 커널 런치 호출 제거
  → +178% 처리량 한 번에

2. 퓨즈드 CUDA 커널

각 레이어의 커널 퓨전:
  - Add + RMSNorm + QKV GEMV → 1 커널
  - Add + RMSNorm + GateUp GEMV → 1 커널
  - SiLU×Mul + Down GEMV → 1 커널

결과:
  레이어당 6번의 커널 호출 절감
  활성화 버퍼 제거
  메모리 대역폭 효율 ↑

3. FlashAttention-3 + PagedAttention

KV 캐시: PagedAttention (블록 테이블 기반)
어텐션: 직접 작성 CUDA 커널 (FA2/FA3)
GQA 최적화: Qwen2.5 (12헤드/2 KV헤드) → KV 대역폭 6× 절감
KV 캐시: f16 기본, FP8 E4M3 양자화 지원

4. 순수 f16 엔드-투-엔드

전체 파이프라인 f16 유지:
  → 불필요한 형변환 제거
  → 대역폭·연산 모두 절약

5. Rust 시스템 수준 이점

vLLM (Python):
  - GIL → 스케줄러·토크나이저·출력 처리 싱글스레드
  - GC → 예측 불가 레이턴시 스파이크
  - P95 분산: 12%

rvLLM (Rust):
  - Rayon 병렬 → 배치 64개 샘플링 8.5× 빠름
  - 결정론적 메모리 해제 (스코프 벗어나면 즉시)
  - P95 분산: 1.4%

지원 모델

아키텍처모델상태
LlamaForCausalLMLlama 2/3, CodeLlama, Vicuna
MistralForCausalLMMistral 7B, Nemo
Qwen2ForCausalLMQwen2, Qwen2.5
PhiForCausalLMPhi-2, Phi-3, Phi-3.5구현됨
GemmaForCausalLMGemma, Gemma 2구현됨
MixtralForCausalLMMixtral 8x7B, 8x22B구현됨
DeepseekV2ForCausalLMDeepSeek-V2, V2.5구현됨

지원 GPU: V100 (sm_70) ~ RTX 5090/Blackwell (sm_120), CUDA 12.8+


설치 및 사용

설치

# Rust (crates.io)
cargo install rvllm
 
# Python (PyPI)
pip install rvllm

서버 실행 (vLLM과 동일 명령 형식)

rvllm serve --model Qwen/Qwen2.5-7B-Instruct --port 8000
 
# GPU 메모리 설정
rvllm serve \
  --model Qwen/Qwen2.5-7B-Instruct \
  --gpu-memory-utilization 0.90 \
  --max-num-seqs 256 \
  --dtype auto

Python 바인딩

import rvllm
 
# 빠른 샘플링 (Rayon 병렬)
sampler = rvllm.Sampler()
result = sampler.sample(logits=[1.0, 2.0, 3.0], temperature=0.8, top_k=50)
 
# 토크나이저
tok = rvllm.Tokenizer.from_pretrained("Qwen/Qwen2.5-1.5B")
ids = tok.encode("Hello world")
 
# 병렬 배치 (Python 대비 8×)
results = rvllm.sample_batch(
    logits_batch=[[1.0, 2.0] * 16000] * 64,
    temperature=0.8, top_p=0.95, seed=42,
)

GPU 없이 개발

cargo build --workspace --features mock-gpu
cargo test --workspace

최적화 진행 이력

PhaseN=1 tok/sN=32 tok/s핵심 변경
Phase 41303,467CUDA 그래프 캡처 완성
Phase 51744,27610-에이전트 스웜: 캐스트 감소, 퓨즈드 연산
Full f16200-전체 f16 커널
9-에이전트 커널2365,123크로스-레이어 퓨전, memset 제거
GPU 전용 스레드2186,098GPU 전용 OS 스레드

→ “10-에이전트 스웜” = Claude 에이전트 여러 개를 병렬로 최적화 작업 수행


”22시간 만에 완성” — 개발 사례

도구: Claude + 렌탈 GPU
시간: 22시간
결과: 40개 CUDA 커널, Rust 풀스택, OpenAI 호환 API

이 프로젝트 자체가
[[AI 시대 실행 비용 붕괴]]의 극단적 예

→ 관련: Oh My Codex & 에이전트 스웜 (“10-에이전트 스웜”으로 커널 최적화)


현재 한계

HTTP 벤치마크 기준:
  vLLM 대비 0.67× 처리량 (아직 느림)
  → HTTP 오버헤드 최적화 진행 중
  → 직접 엔진 경로에서는 이미 경쟁력

JIT 커널 퓨전:
  crates/rvllm-fusion/ 준비됨
  → 완성 시 추가 향상 기대

모델 지원:
  아직 Dense 모델 위주
  MoE 완전 지원 진행 중

의의

1. Rust의 시스템 프로그래밍 우위 입증
   - GC 없음 → P95 분산 1.4%
   - GIL 없음 → 진짜 병렬
   - 단일 정적 바이너리 → 배포 간소화

2. Python AI 인프라의 대안
   - vLLM/PyTorch의 무거움에서 탈출
   - 시작 시간 20× → 서버리스·엣지 배포 가능

3. CUDA 커널 직접 작성의 가치
   - 40개 커스텀 커널로 Python 래퍼 대비 최적화
   - 퓨전·그래프 리플레이 직접 제어

4. AI로 AI 인프라를 만드는 시대
   - Claude 에이전트 스웜으로 22시간 완성
   - "10-에이전트 스웜"으로 커널 최적화

5. [[Rust CLI 도구]] 흐름의 확장
   - sudo-rs, coreutils → 이제 AI 인프라까지 Rust

유사 프로젝트 비교

프로젝트언어특징
rvLLMRust + CUDAvLLM 대체, 40 CUDA 커널
vLLMPython표준, PagedAttention 원조
TensorRT-LLMC++/PythonNVIDIA 공식, 최고 성능
llama.cppC/C++CPU 특화, 경량
tinygradPython미니멀 프레임워크
SGLangPython프로그래머블 서빙
candleRustRust ML 프레임워크 (HF)

→ rvLLM의 niche: Rust + CUDA 네이티브 + vLLM API 호환


다른 노트와의 연결

노트연결
vLLM대체 대상
LLM Serving Platform서빙 플랫폼 비교
TensorRT-LLM경쟁 엔진
CUDA vs ROCmCUDA 최적화
GPUH100 벤치마크
Rust CLI 도구Rust 시스템 도구 흐름
Ubuntu 26.04 sudo 변화sudo-rs (Rust 시스템 전환)
Oh My Codex & 에이전트 스웜AI 스웜으로 개발
AI 시대 실행 비용 붕괴22시간 만에 완성
1-bit LLM & Bonsai추론 효율 극대화

관련 항목