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ツールキットです。本プロジェクトは、コンパイルされた学習グラフ、結合カーネル、低精度Tensor Coreフォーマット(BF16、FP8、NVFP4、GGUF)、そして積極的なメモリ管理テクニックを用いて、NVIDIA GPUの1秒あたりのトークン数を最大限に引き出すことに焦点を当てています。
コア機能
| 分野 | ハイライト |
|---|---|
| 学習エンジン | • フルプレトレーニング、SFT、LoRA/QLoRA、GRPO(RL)、DPO、知識蒸留。 • 精度レシピ:BF16、ハイブリッドFP8、Blackwell-NVFP4、および量子化されたアダプタ。 • マルチGPUおよびマルチノード対応(スレッド化データ並列、ZeROシャーディング、Ray統合)。 • パイプライン並列化およびCPUオフロード(1つのGPUより大きなモデル用)。 • MoEエキスパート並列化、ロードバランス、不均衡検出。 • 自動グラフコンパイルおよび事前オーバーヘッド最小のオートディフ(ahead-of-time autodiff)。 |
| サービングエンジン | • OpenAI互換のChat/Completions API(Anthropicスタイルのメッセージも対応)。 • ストリーミング出力、ツールコール解析、「思考」制御。 |
| • コンティニュアスバッチ処理、プレフィックスキャッシュ、1モデルあたり最大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+)
# 事前ビルド済みwheelをインストール(適切な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)は学習定義が「延期」マークされています。これらはサービング可能ですが、まだ学習はできません。
- ランタイムLoRAは、Spark-X2.5サービングパスではまだサポートされていません。
- GPUオンリーの推論のみ。CPUオンリーの生成は提供されていません。
詳細を学ぶには
- ドキュメント – https://docs.surogate.ai(インストール、学習モードガイド、精度レシピ、RLガイド、サービング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倍の速度向上を主張しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト