TL;DR
Paddock은 NVIDIA GPU에서 오픈 모델을 실행하는 Rust 네이티브 추론 서버로, 스케줄러·Paged KV 캐시·메모리 관리·CUDA 커널을 저장소 안에서 직접 구현하고 OpenAI 및 Anthropic 호환 API를 제공합니다. 단일 GPU에 맞는 모델을 대상으로 GGUF와 safetensors, FP8·NVFP4·MXFP4·Q8_0·Q4_K 계열 양자화를 지원하며, 연속 배칭·Radix Prefix 캐싱·호스트 RAM 및 디스크로의 KV 오프로딩을 사용합니다. 내장 Studio는 모델 다운로드·관리·비교와 PDF·Office 문서 처리를 지원하고, vision·음성 전사·reranking·문서 추출까지 범위를 넓혔습니다. 저장소는 llama.cpp, vLLM, SGLang과 RTX PRO 6000 및 B200에서 비교했다고 밝히지만, 프로젝트는 CUDA·Windows·Linux·x64에 한정되고 아직 활발한 개발 단계입니다.
섹션별 상세
# 1. pdfium, a build input linked into paddock-runner:
download our prebuilt
powershell -File packs/pdfium/fetch.ps1 # Windows
bash packs/pdfium/fetch.sh # Linux
# 2. the Studio bundle, embedded by rust-embed
cd studio && npm ci && npm run build && cd ..
# 3. the binaries
cargo build --release -p paddock-manager -p paddock-runnerPDF 렌더링 라이브러리를 준비하고 Studio 웹 번들을 빌드한 뒤 Paddock manager와 runner 바이너리를 릴리스 모드로 컴파일합니다.
powershell -File packs/cuda/build.ps1 # every arch
powershell -File packs/cuda/build.ps1 -Arches 86 # just yours, much faster
bash packs/cuda/build.sh # LinuxRust 빌드와 분리된 CUDA 커널 팩을 전체 아키텍처 또는 지정한 GPU 아키텍처에 맞춰 생성합니다.
schemaVersion: "2.0"
# prompt-generation seed: 7 plus the rep number, the same on every engine
randomSeed: ${PDK_PROMPT_SEED:7}
benchmark:
model: ${PDK_MODEL:gemma-4-31B-it-Q8_0}
endpoint:
url: ${PDK_URL:http://localhost:11660}
type: chat
streaming: true
timeout: 600.0
extra:
ignore_eos: true
temperature: 0.7
seed: 7
tokenizer:
name: ${PDK_TOKENIZER:google/gemma-4-31B-it}
dataset:
type: synthetic
entries: 256
prompts:
isl: {mean: 128, stddev: 0}
osl: {mean: 128, stddev: 0}
corpus: coding
warmup:
type: concurrency
requests: 32
concurrency: 32
profiling:
type: concurrency
requests: 192
concurrency: 32
artifacts:
dir: ./artifacts/syn_128x128_c32
summary: [json]
records: [jsonl]엔진과 모델을 환경 변수로 주입하면서 동일한 프롬프트 길이, 출력 길이, 동시성 조건을 여러 추론 서버에 적용하는 aiperf 벤치마크 설정입니다.
# the server under test
paddock-runner --model .gguf --kernel-pack packs/cuda/build/pd-cuda-sm86.dll \
--port 11660 --max-batch 32 --max-ctx 8192
# the client, once per rep with its own prompt seed.
# The tokenizer must be the
# served model's own; aiperf takes a Hugging Face name or a local directory.
PDK_MODEL= PDK_URL=http://localhost:11660 PDK_TOKENIZER= \
PDK_PROMPT_SEED=8 \
aiperf profile --config syn_128x128_c32.yaml --artifact-dir out/syn_128x128_c32 --ui simplePaddock runner를 지정한 GGUF 모델과 CUDA 커널 팩으로 실행한 뒤, 동일한 서버에 aiperf 프로파일을 연결해 처리량과 지연을 측정합니다.
용어 해설
- Paged KV 캐시(Paged KV Cache)
- — Transformer 추론에서 각 요청의 Key·Value 상태를 고정된 페이지 단위로 나눠 GPU 메모리에 배치하는 방식입니다. 요청별 캐시 공간을 유연하게 재사용해 긴 컨텍스트와 동시 세션 처리에서 메모리 단편화와 낭비를 줄입니다.
- 연속 배칭(Continuous Batching)
- — 요청이 끝날 때까지 배치를 고정하지 않고 새 요청을 처리 대기열에 계속 합류시키는 추론 방식입니다. 디코딩 중인 요청과 새 프리필 요청을 함께 조정해 GPU 유휴 시간을 줄이고 동시 처리량을 높입니다.
- Radix Prefix 캐싱(Radix Prefix Caching)
- — 여러 요청이 공유하는 프롬프트 앞부분을 트리 구조로 저장해 동일한 토큰의 계산 결과를 재사용하는 기법입니다. 긴 시스템 프롬프트나 여러 coding-agent 세션처럼 공통 prefix가 많은 작업에서 프리필 계산을 줄입니다.
- Tensor 병렬화(Tensor Parallelism)
- — 하나의 모델 계층을 여러 GPU에 나눠 배치하고 각 GPU가 부분 계산을 수행하도록 하는 분산 추론 방식입니다. Paddock은 현재 단일 GPU에 맞는 모델을 중심으로 하며, GPU 간 계층 분할은 향후 지원 대상으로 남겨두었습니다.
- 양자화(Quantization)
- — 모델 가중치와 일부 추론 상태를 더 적은 비트 수로 표현해 메모리 사용량과 연산 비용을 낮추는 기법입니다. Paddock은 FP8, NVFP4, MXFP4, Q8_0, Q4_K 계열을 텐서별로 선택해 서로 다른 형식이 섞인 checkpoint도 처리합니다.
기술
- Rust
- CUDA
- GGUF
- safetensors
- FP8
- NVFP4
- MXFP4
- Q8_0
- Q4_K_XL
- OpenAI API
- Anthropic API
- Model Context Protocol
- pdfium
- siftx
- Traverse
- Scriptor
- Lector
- WASM
- aiperf
- CUTLASS
활용 사례
- 단일 NVIDIA GPU에서 오픈 모델을 운영하는 production inference
- 여러 coding-agent 세션의 장문 컨텍스트 처리
- 내장 Studio에서 로컬 모델과 cloud model 비교
- PDF 페이지를 vision 모델에 전달하는 문서 처리
- Office 문서의 브라우저 기반 이해와 편집
- 음성 전사와 forced alignment
- Embedding과 reranking
- PDF 및 Office 파일의 문서 추출
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.