Stable‑Diffusion.cpp: 軽量 C++ ディフュージョン推論エンジン

stable‑diffusion.cpp とは何ですか?

stable‑diffusion.cpp は、C++ で書かれたオープンソースの純粋な実装で、現代のディフュージョンモデルを実行します。stable‑diffusionFluxWanQwen‑ImageZ‑Image などの最新アルゴリズムを、C++ をコンパイルできるすべてのシステム(Linux サーバーから Windows ノートパソコン、Termux を介した Android まで)で利用可能にします。プロジェクトは次のように設計されています。

  • ゼロ依存 – バンドルされた ggml ランタイム以外の外部ライブラリは不要です。
  • クロスプラットフォーム – Linux、macOS、Windows、ARM ベースの Mac、Android で動作します。
  • GPU フレンドリー – CUDA、Vulkan、Metal、OpenCL、SYCL、さらに AVX / AVX2 / AVX512 を備えた CPU 専用実行をサポートします。
  • パフォーマンス志向 – メモリ使用の最適化、Flash‑Attention、VAE タイリング、キャッシュベースのアクセラレーションを備えています。

このライブラリは llama.cppggml に触発されており、同様のエコシステムに慣れた開発者には自然な選択肢です。

主な機能の概要

機能 対応モデル 備考
画像生成 SD1.x, SD2.x, SD‑Turbo, SDXL, SDXL‑Turbo, SD‑v1.5, SD‑v2.5, SD‑3, SD‑3.5 標準のテキスト‑to‑画像パイプライン
画像編集 / 画像再構築 FLUX.1‑Kontext‑dev, Qwen‑Image‑Edit 系列 プロンプトベースの編集をサポート
動画生成 Wan2.1, Wan2.2 モーションアウェアな条件付けを含む
高速アップスケール ESRGAN カスタムタイルサイズ
レイテンシ最適化デコード TAESD より高速な潜在デコード
LoRA & ControlNet SD1.5 stable‑diffusion‑webui と同一インターフェース
潜在一貫性モデル LCM, LCM‑LoRA 2025年に追加
バックエンド選択 CPU, CUDA, Vulkan, Metal, OpenCL, SYCL プラグイン方式
重み形式 .ckpt/.pth, .safetensors, .gguf 柔軟な重みロード
コマンドライン API sd-cli ワンライナーで画像生成
C API sd.h / sd.cpp 他プロジェクトへの埋め込み
Docker & CI Docker イメージ Linux ↔ Windows でビルド

ビルドと実行の開始

1. 依存関係のインストール

# Ubuntu
sudo apt-get update && sudo apt-get install -y build-essential git cmake
# macOS (Homebrew)
brew install cmake git

2. リポジトリのクローン

git clone https://github.com/leejet/stable-diffusion.cpp
cd stable-diffusion.cpp

3. ソースからビルド

mkdir build && cd build
cmake .. -Dggml_backend=cpu   # もしくは cuda, vulkan, metal など
make -j$(nproc)

4. モデル重みのダウンロード

git clone https://huggingface.co/stable-diffusion-v1-5
curl -L -O https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors

5. 画像生成

./bin/sd-cli -m ../models/v1-5-pruned-emaonly.safetensors -p "a cyberpunk city at dusk"

PNG 出力はウェブ UI 互換のトークン文字列としてモデル埋め込みも埋め込みます。

パフォーマンスヒント

ヒント 説明
GGUF を使用 .gguf フォーマットは量子化されており、読み込みが高速です
Flash‑Attention を有効化 CUDA で VRAM 量を大幅に削減
VAE タイリング 大きな画像のピークメモリを削減
キャッシュレイヤー ./bin/sd-cli --use-cache で以前のモデル状態を再利用
macOS で Metal を使用 CPU と比較して約 40 % のスピードアップ

2020‑MacBook‑Pro(10 コア CPU、3070 GPU)で 512×512 SD‑XL 画像を生成する際、CPU で約 32 秒、NVIDIA 3070 と CUDA + Flash‑Attention で約 2.5 秒となるベンチマークがあります。

ライブラリの拡張

API は意図的に軽量です。新しいモデルを追加するには: 1. モデル定義(.h/.cpp)を追加し、ggml フォーマットを参照する。 2. CMakeLists.txt を更新し、docs/ にエントリを追加する。 3. PR を送信すると次リリースで反映されます!

コミュニティ拡張の例: - Python バインディングstable-diffusion-cpp-python - Go ラッパーstable-diffusion - Rust ランタイムdiffusion-rs - Flutter ウィジェットlocal-diffusion

コミュニティと貢献

リポジトリは 5,000 以上のスター、500 以上のフォーク、活発な貢献者コミュニティを誇ります。貢献に興味がある場合は: - リポジトリをフォークする。 - 機能ブランチを作成する。 - 明確なコミットメッセージ付きで PR を送信する。 - make check でテストを実行する。 - イシュー スレッドで議論に参加する。

また、Docker イメージも用意されており、プロダクションや CI パイプラインへの素早いデプロイが可能です。

stable‑diffusion.cpp を選ぶ理由

  • パフォーマンスとシンプルさの融合 – 新しいフレームワークを学ぶことなく、GPU を最大限に活用。
  • 幅広いモデルサポート – SD の古典的モデルから最新の Flux・Wan まで網羅。
  • カスタマイズ性 – バックエンドを切り替え、量子化を使用したり、独自の C++ サービスへ組み込むことが可能。
  • ライブ開発 – 毎月アクティブリリース、新モデルの追加も月単位で実施。

試してみませんか?リリースページから事前ビルド済みバイナリを入手するか、独自にビルドしてください。ドキュメントは継続的に更新されており、コミュニティは非常に協力的です。


次のステップ: 1. ハードウェアに合ったエンジンバックエンドを選択する。 2. モデルをダウンロードし、テスト画像を生成する。 3. examples/ フォルダーを探索して、画像編集や動画生成などの高度なパイプラインに挑戦する。

楽しい Diffusion ライフを!

この記事を共有