flashinfer-ai/flashinfer

FlashInfer: Kernel Library for LLM Serving

FlashInfer – LLM 추론을 위한 고성능 GPU 커널

무엇인가요

  • 대규모 언어 모델(LLM) 서빙에 필요한 핵심 연산을 위한 고도로 최적화된 GPU 커널을 제공하는 C++/CUDA 라이브러리(파이썬 패키지 포함). 주로 어텐션, 행렬 곱셈(GEMM), 혼합 전문가(MoE) 라우팅, 샘플링, 그리고 몇 가지 보조 연산에 집중합니다.

왜 중요한가요

  • LLM 추론은 특히 많은 동시 요청(프리필 + 디코딩)을 처리하거나 저정밀도 형식(FP8/FP4)을 사용할 때 어텐션 및 GEMM 커널의 속도로 인해 성능이 제한되는 경우가 많습니다. FlashInfer는 FlashAttention-2/3, cuDNN, CUTLASS, TensorRT-LLM 등의 여러 백엔드 구현을 통합하고, 사용 중인 GPU에 따라 가장 빠른 것을 자동으로 선택하여 Turing GPU(RTX 20)부터 최신 Blackwell 칩까지 "최첨단" 수준의 처리량을 제공합니다.

주요 기능

영역 FlashInfer가 제공하는 기능
어텐션 • 동적 배치를 위한 페이지화/불규칙 KV 캐시
• 프리필, 디코딩, 혼합(POD) 워크로드용 별도 커널
• DeepSeek MLA, 캐스케이드(계층적) 어텐션, 블록 스parse 패턴, 사용자 정의 JIT 가능 변형 지원
GEMM / Linear BF16, FP8, FP4 행렬 곱셈; LoRA/MoE용 그룹화 GEMM; Blackwell 전용 NVFP4/MXFP4 커널
혼합 전문가(MoE) 여러 라우팅 알고리즘(DeepSeek-V3, Llama-4, top-k)과 양자화된 전문가 가중치를 갖춘 융합 MoE 커널
샘플링 / 디코딩 정렬이 필요 없는 top-k / top-p / min-p 샘플링; 사전 추론(speculative decoding) 지원
통신 분산 추론을 위한 커스텀 AllReduce, 멀티노드 NVLink(MNNVL), NVSHMEM 통합
기타 연산 RoPE(LLLama 3.1 포함), 융합 RMSNorm/LayerNorm, 융합 SiLU/GELU 활성화

하드웨어 지원 범위

  • Turing(SM 7.5) 이후의 모든 NVIDIA GPU에서 작동. Ampere, Ada Lovelace, Hopper, 최신 Blackwell 아키텍처용으로 특정 커널이 최적화되었으며, 저정밀도(FP8/FP4) 경로는 후자에 한해 지원됩니다.

사용 방법

  1. 파이썬 웨일 설치: pip install flashinfer-python (옵션 추가 웨일로 사전 컴파일된 커널 또는 JIT 캐시 쉴드 제공).
  2. 고수준 API 호출, 예: flashinfer.single_decode_with_kv_cache(q, k, v)로 단일 디코딩 어텐션 단계를 수행하거나, 프리필용 더 풍부한 배치 API 사용.
  3. 라이브러리는 PyTorch의 torch.compile 및 CUDA Graphs와 통합 가능하여, 저지연 서빙 스택에 내장할 수 있습니다.

에코시스템 채택

  • 주요 오픈소스 추론 서버에 통합됨: vLLM, TensorRT-LLM, HuggingFace Text Generation Inference, SGLang, MLC-LLM, LightLLM, Lorax, ScaleLLM.

문서 및 커뮤니티

  • 전체 문서는 https://docs.flashinfer.ai, Slack 커뮤니티, GitHub 디스커션 포럼 제공. CI 배지로 CUDA 버전(12.9, 13.0, 13.4)별 지속적 테스트 확인 가능.

FlashInfer를 선택해야 하는 경우

  • NVIDIA GPU에서 가능한 한 빠른 어텐션/GEMM 커널이 필요할 때, 특히 혼합 프리필-디코딩 워크로드를 처리하거나 저정밀도(FP8/FP4) 추론을 원하거나 최신 Blackwell 하드웨어에서 실행할 경우. 기존 PyTorch 기반 서버에서 사용되는 어텐션 커널의 즉시 대체 가능.

위 모든 세부 정보는 리포지토리의 README에서 직접 인용되었습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트