- この記事は、512MBのRAMを搭載したマイクロコンピュータ Raspberry Pi Zero 2 で Stable Diffusion XL 1.0 を実行する試みを扱っています。
- 課題は、スワップ領域を増やしたり中間結果をディスクにオフロードしたりせずに、約10億個のパラメータを持つ大規模トランスフォーマーモデル Stable Diffusion 1.5 を動かすことです。
- 著者は、メモリ消費の最小化に重点を置いた、小さくハックしやすい推論ライブラリ OnnxStream を作成しました。
- OnnxStream は、推論エンジンとモデル重みを提供するコンポーネントを分離することで、モデルパラメータのさまざまな種類の読み込み、キャッシュ、プリフェッチを可能にします。
- OnnxStream は OnnxRuntime よりメモリ消費が55分の1でありながら、速度低下は 0.5~2 倍にとどまります。
- この記事には、OnnxStream を使って VAE デコーダのさまざまな精度で Stable Diffusion のサンプル実装が生成した画像が含まれています。
- OnnxStream の Stable Diffusion サンプル実装は現在 SDXL 1.0 をサポートしており、これは SD 1.5 より計算コストが高いものの、より大きな画像を生成できます。
- OnnxStream は SDXL 1.0 を 300MB 未満のRAMで実行できるため、Raspberry Pi Zero 2 に適しています。
- この記事では、メモリ消費を 4.4GB から 298MB に削減するためのタイルデコードの使用を含む、SDXL 1.0 向けの特定の最適化について議論しています。
- OnnxStream の機能には、推論エンジンと WeightsProvider の分離、attention slicing、動的および静的量子化、FP16 サポートなどがあります。
- この記事では、さまざまなオペレーティングシステムで Stable Diffusion のサンプルをビルドする方法について、詳しい手順を提供しています。
- sd.cpp の Stable Diffusion 実装は別の2つのプロジェクトをベースにしており、NCNN の代わりに OnnxStream を使うよう修正されています。
1件のコメント
Hacker Newsの意見