flashinfer
무엇인가
FlashInfer는 LLM 추론에 쓰이는 CUDA 커널 라이브러리이자 커널 생성기다. vLLM·SGLang 같은 서빙 프레임워크 아래에서 attention, GEMM, MoE 연산을 담당하는 연산자 계층에 위치한다. 모델마다 CUDA 커널을 직접 작성하고 GPU 세대별로 다시 맞추던 자리를 대체한다.
어떻게 동작하나
커널은 최초 사용 시점에 컴파일되거나 미리 빌드된 바이너리로 내려받는다. flashinfer-python은 커널을 첫 사용 때 컴파일·다운로드하고, flashinfer-cubin은 지원 GPU 아키텍처용 사전 컴파일 바이너리를, flashinfer-jit-cache는 CUDA 버전별 빌드 캐시를 담는다. 연산마다 FlashAttention-2/3, cuDNN, CUTLASS, TensorRT-LLM 백엔드 중 하드웨어와 워크로드에 맞는 것을 자동 선택한다. KV-Cache는 paged·ragged 레이아웃으로 관리해 동적 배치 서빙에서 메모리 단편화를 줄인다. CUDAGraph와 torch.compile에 호환되며 환경 변수로 API 로깅을 켤 수 있다.
무엇과 다른가
단일 백엔드에 고정된 라이브러리와 달리 백엔드를 워크로드별로 갈아 끼운다. attention은 decode·prefill·append 단계와 MLA, cascade, block-sparse, POD(프리필+디코드 융합) 변형을 각각의 커널로 처리한다. GEMM은 BF16·FP8·FP4와 grouped GEMM을, MoE는 DeepSeek-V3·Llama-4·top-k 라우팅을 융합 커널로 처리한다. 샘플링은 정렬 없이 Top-K·Top-P·Min-P를 계산하고, 통신은 AllReduce·MNNVL·NVSHMEM을 쓴다.
어떻게 쓰나
설치는 pip install flashinfer-python으로 시작한다. 초기화 속도와 오프라인 사용을 위해 flashinfer-cubin과 flashinfer-jit-cache를 함께 설치하고, Blackwell(SM100+) CuTe DSL 커널은 CUDA 13 extra로 켠다. 설치 후 검증 스크립트를 실행하고, CLI 명령으로 설정·모듈 관리·개발 작업을 수행한다. 자체 attention 변형은 JIT 예제를 참고해 파라미터를 추가한다.
전제와 한계
지원 CUDA 버전은 12.9, 13.0, 13.4(PyTorch nightly)이며 런타임 CI는 12.9와 13.0을 검증한다. CUDA 13.4 휠은 프리뷰 툴킷과 PyTorch nightly로 빌드된다. GPU는 SM75(Turing)부터 Blackwell까지 지원하지만 모든 기능이 모든 compute capability에서 동작하지는 않는다. 소스 빌드에서 --no-build-isolation을 쓰면 setuptools>=77을 직접 설치해야 한다.
관련 논문 4
유사 도구
- lmdeployLLM을 4bit로 압축해 GPU에서 서빙하는 파이썬 툴킷이다. TurboMind와 PyTorchEngine 두 추론 엔진, OpenAI 호환 API 서버를 포함한다.
- lorax단일 GPU에서 수천 개의 LoRA 어댑터를 동시에 서빙하는 LLM 추론 서버다. 요청마다 어댑터를 즉시 로드하고 배치에 묶어 처리한다.
- HyperQwenvLLM을 패치해 24GB 소비자 GPU 한 장에서 대형 Qwen을 서빙하는 스택이다. 150k 컨텍스트와 OpenAI 호환 API를 단일 사용자·배치 두 모드로 내놓는다.
- llama.cppC/C++로 작성된 LLM·VLM 추론 엔진이다. ggml 위에서 GGUF 양자화 모델을 CPU·GPU로 실행하며 외부 의존성이 없다.
- qwen38-27b-rtx3090단일 RTX 3090 24GB에서 vLLM으로 Qwen3.8-27B를 서빙하는 패치·재양자화 스크립트·벤치 모음이다. 150k 컨텍스트 OpenAI 호환 API를 띄운다.
- PowerInfer활성화 지역성을 이용해 hot 뉴런은 GPU에, cold 뉴런은 CPU에 배치하는 CPU/GPU 하이브리드 LLM 추론 엔진이다. 단일 소비자용 GPU에서 대형 모델을 서빙한다.