lucasjinreal/Crane
A Pure Rust based LLM, VLM, VLA, TTS, OCR Inference Engine, powering by Candle & Rust. Alternate to your llama.cpp but much more simpler and cleaner..
🚀 Crane とは?
Crane(Candle‑based Rust Accelerated Neural Engine)は、Rust で書かれたオープンソースの推論フレームワークで、Candle 機械学習ライブラリ上に構築されています。その目標は、大規模言語モデル(LLM)およびマルチモーダルモデルの推論を、CPU、NVIDIA CUDA、Apple Metal、さらには AMD ROCm など、さまざまなハードウェア上で高速かつポータブルに、そして使いやすくすることです。
中核となるアイデア
| アイデア | 意味 |
|---|---|
| Rust + Candle | Rust は安全性と単一バイナリ展開モデルを提供し、Candle は PyTorch に似た API と、Rust/CUDA/Metal で書かれた最適化されたカーネルを提供します。 |
| GGUF ファースト | モデルは GGUF 形式(llama.cpp で使用されるものと同じ)から直接読み込まれます。追加の変換手順は不要です。 |
| ハードウェア非依存のバックエンド | 実行時に、同じモデルをコードを変更せずに CPU、CUDA、Metal(macOS)、または ROCm(AMD)上で実行できます。 |
| OpenAI 互換サーバー | crane‑serve は OpenAI の chat/completions API(および SGLang)を実装しているため、既存のクライアントコードはそのまま動作します。 |
| すぐに使える AI 機能 | プレーンテキスト生成に加えて、OCR、音声認識(ASR)、音声合成(TTS)、音楽転写、視覚言語タスク用のパイプラインがすぐに使えます。 |
これでできること
- 一般的なハードウェアで巨大なモデルを実行 – 例えば、27 B Bonsai 三元モデルは 16 GB の RAM に収まり、CPU または単一 GPU で実行できます。
- API 経由でモデルを提供 –
crane‑serveを起動し、/v1/chat/completions、/v1/audio/speechなどを呼び出します。 - 独自の Rust アプリを作成 –
crane-coreクレートは、クリーンな Rust API(ModelForCausalLM、GenerationConfig、トークナイザーなど)を公開しており、推論を任意の Rust バイナリに埋め込むことができます。 - 量子化を試す –
--quant q4_0などのフラグは、読み込み中に in‑situ 量子化を実行し、VRAM/RAM 使用量を削減します。
📦 サポートされているモデル(README 時点)
- Bonsai 2 Ternary 27B – ネイティブ Prism PTQ1_0 / PQ2_0 GGUF、CPU と CUDA をサポート。
- Qwen 3.8‑Flash‑Next(177 B MoE)– SYCL 経由で Intel Arc GPU 上で実行。
- Qwen 3.5 / 3.6 / 3.8(さまざまなサイズ、高密度および視覚言語バリアント)。
- Ornith‑1.0‑9B – ツール呼び出しエージェント。
- Gemma 4、Hunyuan Dense、Moonshine ASR、Silero VAD、Qwen3‑TTS、Voxtral‑4B‑TTS、KugelAudio、MuScriptor(音楽転写)、PaddleOCR‑VL など。
- さらに多くのモデルが「近日公開」としてリストされています。
🛠️ はじめに(クイックスタート)
# クローンしてインストール
git clone https://github.com/lucasjinreal/Crane
./install.sh
# サーバーを実行(Bonsai 三元モデルの例)
./target/release/crane-serve \
--model-path checkpoints/Ternary-Bonsai-2-27B-gguf/Ternary-Bonsai-2-27B-PTQ1_0.gguf \
--ui
UI がブラウザで開き、コードを書かずにチャット、OCR、ASR などを実行できます。
簡単な Rust プログラムの実行
README には、Qwen2.5‑0.5B‑Instruct を読み込み、純粋な Rust で応答を生成する最小限の例が含まれています。わずか数十行のコードです。
⚡ パフォーマンスのハイライト(変更ログより)
| ハードウェア | モデル | PyTorch / llama.cpp との速度比較 |
|---|---|---|
| Apple M1/M2/M3(CPU) | Qwen3‑VL 2B | ネイティブ PyTorch より約 50 倍高速 |
| NVIDIA RTX 3090(CUDA) | Qwen 3.5‑2B‑Q8_0 | llama.cpp より 3 倍高速(カーネル融合後) |
| AMD RX 7800 XT(ROCm) | Qwen 3.5‑2B‑Q8_0 | CPU より 5–7 倍高速、CUDA との差を縮小 |
| Intel Arc Pro B70(SYCL) | Qwen 3.8‑Flash‑Next | 単一の 32 GB GPU で実行 |
主な最適化には以下が含まれます:
- カーネル融合(正規化、GDN 再帰、top‑k サンプリング)。
- In‑situ 量子化 – 全精度の重みを GPU メモリに読み込むことを回避。
- カーネル起動オーバーヘッドの削減 – トークンあたりの送信時間が約 22 ms から約 7 ms に短縮。
📚 内部の仕組み
- モデルの読み込み –
crane-coreが GGUF ヘッダーを読み取り、アーキテクチャ(例:qwen3_5)を検出し、適切な dtype/device で CandleVarBuilderを構築します。 - バックエンドの選択 – 実行時にデバイス(
cpu、cuda、metal、rocm)が選択され、同じ Rust コードが対応する Candle カーネルにディスパッチされます。 - 生成ループ – Candle の
ModelForCausalLMトレイトを使用し、TextStreamerがトークンをクライアントにストリーミングします。 - サーバーレイヤー –
crane-serveは生成ロジックを非同期 HTTP サーバーにラップし、OpenAI 互換のエンドポイントを提供します。
🛣️ ロードマップ / 今後の予定
- より多くのマルチモーダルモデル(VLA、高度な視覚言語パイプライン)。
- ROCm での本格的な MoE サポート。
- スコア行列を除去するための、よりメモリ効率の高いアテンションカーネル(フラッシュスタイル)。
- モデル変換と量子化のためのツールの拡張。
上記の情報はすべてリポジトリの README から直接取得したものであり、外部の仮定は追加されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト