はじめに
DiffSynth-EngineはGitHubでホストされているModelScopeのオープンソースプロジェクトで、拡散モデリング技術に基づき、開発者がAIモデルを本番環境で展開するための画像や動画を効率的に生成することに焦点を当てています。このプロジェクトはDiffSynth-Studioから発展したもので、包括的なエンジニアリングの変換を経て、計算効率と展開の容易さを最適化しました。複数のモデル(例:FLUX、Wan2.1)をサポートし、明確なコード構造と柔軟なメモリ管理を提供します。2025年3月現在、プロジェクトは継続的に更新され、オープンソースコミュニティから広く注目されており、AIオーサリングの実用性の促進を目指している。
機能一覧
- 静止画から動的コンテンツまで幅広いニーズに対応し、画像や動画の効率的な生成をサポート。
- サードパーティのライブラリに依存することなく、明確で読みやすいコードを提供することで、開発者の修正や拡張を容易にします。
- 様々なベースモデル(FLUX、Wan2.1など)やLoRAモデルと互換性があり、様々なシナリオに適応。
- 柔軟なメモリ管理を内蔵し、FP8、INT8、その他の量子化モードをサポート。
- 推論速度を最適化し、テンソル並列計算をサポートすることで、大規模な生成タスクを高速化。
- クロスプラットフォームをサポートし、Windows、macOS(Apple Siliconを含む)、Linuxと互換性があります。
- テキストから画像、テキストから動画、動画のスタイリングなど、さまざまな機能をサポート。
ヘルプの使用
設置プロセス
DiffSynth-Engine のインストールは簡単で、数ステップで完了します。
- コアパッケージのインストール
ターミナルで以下のコマンドを入力し、pip3経由でインストールする:
pip3 install diffsynth-engine
Pythonのバージョンが3.8以上であることを確認してください。依存関係の衝突を避けるため、仮想環境を使用することを推奨します。
- モデルファイルのダウンロード
プロジェクトにはモデル・ファイルは含まれていないので、手動またはコードでダウンロードする必要がある。例えば フラックス モデル
from diffsynth_engine import fetch_model
model_path = fetch_model("muse/flux-with-vae", revision="20240902173035", path="flux1-dev-with-vae.safetensors")
ダウンロード後、モデルファイルは通常、スクリプトが呼び出せるように、指定したディレクトリにローカルに置かれる。
- インストールの確認
インストールが完了したら、簡単なテストスクリプトを実行して、環境が動作することを確認する:from diffsynth_engine import __version__ print(__version__)
バージョン番号の出力は、インストールが成功したことを意味する。
主な機能
1.画像の生成(例としてFLUX)
- 手続き
以下のコードを使って画像を生成する:from diffsynth_engine.pipelines import FluxImagePipeline, FluxModelConfig from diffsynth_engine import fetch_model model_path = fetch_model("muse/flux-with-vae", revision="20240902173035", path="flux1-dev-with-vae.safetensors") config = FluxModelConfig(dit_path=model_path) pipe = FluxImagePipeline.from_pretrained(config, offload_mode="cpu_offload").eval() image = pipe( prompt="月球上的宇航员骑马,黑白摄影风格,颗粒感强,对比度高", width=1024, height=1024, num_inference_steps=30, seed=42, ) image.save("flux_txt2img.png")
- 主な内容
デフォルトでは、23GBのビデオメモリが必要です。メモリが足りない場合はoffload_mode="sequential_cpu_offload"
定量化プロセスは、わずか4GBのRAMで実行できるが、生成時間は延長される(例えば91秒)。複数の定量化精度(例:q8_0、q6_k)をサポートし、必要なメモリは7~12GBに削減できます。
2.ビデオの生成(例としてワン2.1)
- 手続き
ビデオを生成するには、次のコードを使用します:from diffsynth_engine.pipelines import WanVideoPipeline, WanModelConfig from diffsynth_engine.utils.download import fetch_model from diffsynth_engine.utils.video import save_video config = WanModelConfig( model_path=fetch_model("muse/wan2.1-14b-bf16", path="dit.safetensors"), t5_path=fetch_model("muse/wan2.1-umt5", path="umt5.safetensors"), vae_path=fetch_model("muse/wan2.1-vae", path="vae.safetensors"), ) pipe = WanVideoPipeline.from_pretrained(config) video = pipe( prompt="小狗在草地上奔跑,阳光照耀,背景有野花和蓝天", num_frames=41, width=848, height=480, seed=42, ) save_video(video, "wan_t2v.mp4", fps=15)
- 主な内容
1枚のカードで2秒間のビデオを生成するのに358秒かかる。A100GPUを4枚使い、テンソル並列を有効にした場合(parallelism=4, use_cfg_parallel=True
),时间缩短至 114 秒,加速比达 3.14 倍。
3.低メモリの最適化
- 手続き
FLUXの例ではoffload_mode
に変えるsequential_cpu_offload
::pipe = FluxImagePipeline.from_pretrained(config, offload_mode="sequential_cpu_offload").eval()
- 主な内容
グラフィック・メモリ要件は、平均的なデバイスで23GBから3.52GBに削減された。定量化モード(q4_k_sなど)は、スピードとクオリティのバランスをさらに取り、若干低下したものの、有用な結果を生成する。
4.マルチカード並列推論
- 手続き
Wan2.1の例では、parallelパラメータを追加する:pipe = WanVideoPipeline.from_pretrained(config, parallelism=4, use_cfg_parallel=True)
- 主な内容
マルチGPU並列コンピューティングをサポートし、2GPUで1.97倍、4GPUで3.14倍の高速化を実現。
ほら
- ハードウェア要件画像生成には8GB、ビデオ生成やマルチカード構成には24GBのビデオメモリを推奨します。
- モデルパスを確保する。
fetch_model
ダウンロードされたパスは正しいですが、そうでない場合は手動で指定する必要があります。 - 文書参照詳しい使い方はGitHubの公式ページを参照。
<https://github.com/modelscope/DiffSynth-Engine>
.
アプリケーションシナリオ
- パーソナル・クリエーション
ユーザーは、FLUXで芸術的な画像を作成したり、Wan2.1でソーシャルメディア共有に適した短い動画を作成したりできる。 - 産業展開
企業は、マルチカード並列推論を使用して、広告や映画制作用の高品質のビデオコンテンツを迅速に生成することができます。 - 技術研究
開発者はコードを修正し、さまざまなモデルや定量的戦略をテストし、AI技術の最適化を推進することができる。 - 教育とトレーニング
学生は拡散モデリングの実践的な応用を学び、簡単なインストールを通してAI生成の原理を探求することができる。
品質保証
- インストールに失敗したら?
Pythonのバージョンとネットワーク接続を確認してください。pipが最新であることを確認する (pip install --upgrade pip
)、または依存関係を手動でダウンロードする。 - 対応機種は?
FLUX、Wan2.1などのベースモデルから、画像・映像生成をカバーするLoRA対応ファインチューニングモデルまで対応。 - 薄型のコンピューターは使えますか?
缶調整offload_mode
定量化パラメーターの後、FLUXは4GBのRAMで実行できる。 - マルチカード並列の設定方法は?
パイプラインの初期化時に追加parallelism
パラメータで、GPU の数が一致していることを確認してください。