invergent-ai/surogate
Train and serve LLMs at extreme speed and massive throughput.
Surogate – 고성능 LLM 학습 및 서빙 엔진 (C++/CUDA)
무엇인가요 – Surogate는 대규모 언어 모델(LoRA/QLoRA, 강화학습 방법, 지식 증류, MoE, 멀티모달 피니터닝 포함)을 학습하고, OpenAI 호환 HTTP 서버로 결과 체크포인트를 서빙할 수 있는 네이티브 C++/CUDA 툴킷입니다. 이 프로젝트는 컴파일된 학습 그래프, 융합 커널, 저정밀도 텐서 코어 형식(BF16, FP8, NVFP4, GGUF), 그리고 적극적인 메모리 관리 기법을 사용하여 NVIDIA GPU에서 최대의 초당 토큰 수를 추출하는 데 집중합니다.
핵심 기능
| 영역 | 주요 기능 |
|---|---|
| 학습 엔진 | • 완전한 사전 학습, SFT, LoRA/QLoRA, GRPO(강화학습), DPO, 지식 증류. • 정밀도 레시피: BF16, 하이브리드 FP8, Blackwell-NVFP4, 그리고 양자화된 어댑터. • 멀티 GPU 및 멀티 노드 지원(스레드 기반 데이터 병렬, ZeRO 스플릿, Ray 통합). • 파이프라인 병렬 및 CPU 오프로드를 통한 단일 GPU보다 큰 모델 처리. • MoE 전문가 병렬, 로드 밸런싱, 불균형 탐지. • 자동 그래프 컴파일 및 사전 시간 자동 미분으로 낮은 오버헤드 제공. |
| 서빙 엔진 | • OpenAI 호환 Chat/Completions API(Anthropic 스타일 메시지도 지원). • 스트리밍 출력, 툴 콜 파싱, "사고" 제어 기능. |
| • 지속적 배치, 프리픽스 캐싱, 모델당 최대 128개 동시 시퀀스 지원. | |
| • 사전 디코딩(MTP/DFlash) 및 멀티 GPU 레이어 파이프라인. | |
| • 네이티브 GGUF 로딩(Q4_K_M, Q8_0 등) 및 safetensors 직접 임포트. | |
| • 런타임 LoRA 로딩/언로딩, 멀티 모델 호스팅, 유휴 모델의 슬립/웨이크업 기능. | |
| • 비전 및 임베딩 엔드포인트(이미지/비디오, GPU/AVX-512 기반 EmbeddingGemma). | |
| • Prometheus 메트릭, API 키 인증, 헬스 체크. |
성능 주장 (2026년 9월 기준)
| 작업 | 하드웨어 | 초당 토큰 수 | 상대적 성능 향상 |
|---|---|---|---|
| 학습 – Qwen3-0.6B BF16 | 1× H100 | 53,900 | Unsloth(1× H100) 대비 2.53× |
| 4× RTX 5090 | 136,200 (FP4 LoRA) | 단일 카드 대비 총합 3.74× | |
| 서빙 – Qwen3.5-0.8B (1 사용자) | 1× RTX 5090 | 802 | vLLM 대비 2.32× |
| 8× RTX 5090, GLM-5.3-Flash (16 사용자) | 292.9 | llama.cpp 대비 7.0× | |
| 100 사용자, Qwen3.5-4B | 5,345 | vLLM 대비 1.19× |
벤치마크는 패킹된 2,048토큰 시퀀스(학습) 또는 512입력/128출력 워크로드(서빙)에서 벽시계 기반 토큰 수로 측정되었으며, 모델 로딩 시간은 제외되었습니다.
시작하기 (Linux, Python 3.12, CUDA 12.8+)
# 사전 빌드된 웨일 설치 (맞는 CUDA 빌드 선택)
curl -LsSf https://github.com/invergent-ai/surogate/releases/latest/download/install.sh | bash
source .venv/bin/activate
모델 서빙하기
surogate serve Qwen/Qwen3.5-0.8B \
--served-model-name surogate \
--port 8080 --max-model-len 4096 \
--max-num-seqs 16 --kv-capacity auto
LoRA 어댑터 학습하기 (README에 예시 train.yaml 포함) 후 다음 명령 실행:
surogate sft train.yaml
CLI는 merge, quantize, grpo-colocate, 그리고 Docker 이미지(ghcr.io/invergent-ai/surogate:latest-cu129)도 제공합니다.
누가 사용할 수 있을까
- 빠르게 피니터링 또는 RLHF 파이프라인을 반복하고, 동일한 코드베이스에서 결정론적이고 낮은 지연 시간의 추론을 원하는 연구소/스타트업.
- RTX 50 시리즈 또는 H100 클러스터에서 많은 동시 LLM 엔드포인트를 배포하고, vLLM/llama.cpp보다 더 높은 처리량을 원하는 기업.
- Qwen, Llama 3, Gemma 4, MiniCPM5 등과 같은 맞춤형 모델 패밀리 개발자로서, LoRA, MoE, 비전 확장 기능을 내장한 단일 네이티브 엔진을 학습과 서빙에 모두 사용하고자 하는 사람.
제한 사항 / 개방된 항목
- 서빙 빌드는 기본적으로 SM120a(Blackwell/RTX 50)를 대상으로 하며, Ada/Hopper GPU는 일부 기능이 누락될 수 있는 대체 빌드를 실행합니다.
- 일부 모델 패밀리(예: DeepSeek-V4, Flash-Next, GLM-5.3-Flash)는 학습 정의가 "보류됨"으로 표시되어 있어, 서빙은 가능하지만 아직 학습은 불가능합니다.
- Spark-X2.5 서빙 경로에서는 런타임 LoRA가 아직 지원되지 않습니다.
- GPU 전용 추론만 지원; CPU 전용 생성은 제공되지 않습니다.
더 알아보기
- 문서 – https://docs.surogate.ai (설치, 학습 모드 가이드, 정밀도 레시피, 강화학습 가이드, 서빙 API 참조).
- 벤치마크 –
docs/reference/benchmarks.md및surogate/serve/BENCHMARKS.md. - 예제 –
examples/디렉터리는 SFT, MoE, 비전, GRPO, DPO, 양자화에 대한 엔드투엔드 스크립트를 포함합니다. - 소스 코드 – C++/CUDA 핵심은
csrc/아래에 있으며, Python DSL과 CLI는surogate/에 있습니다.
TL;DR
Surogate는 성능을 최우선으로 하는 네이티브 C++/CUDA 플랫폼으로, LoRA, RL, MoE, 멀티모달 피니터링을 포함한 LLM 학습과 OpenAI 호환 API를 통해 고처리량 서빙을 통합합니다. 컴파일된 그래프, 융합 커널, 저정밀도 형식을 활용하여 현대 NVIDIA GPU에서 인기 있는 Python 기반 스택보다 2~7배 빠른 속도를 주장합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트