Stable Cascade
(github.com/Stability-AI)- Stable CascadeはStability AIの公式コードベースで、Würstchenアーキテクチャをベースにした画像生成モデルの学習・推論スクリプトと複数のモデルチェックポイントを提供する
- 主な違いはStable Diffusionよりはるかに小さい**潜在空間(latent space)**で動作する点で、1024x1024画像をStable Diffusionの128x128ではなく24x24にエンコードし、推論速度と学習コストを削減する
- モデルはStage A、Stage B、Stage Cの3段階カスケードで構成され、Stage AとBは画像圧縮を、Stage Cはテキストプロンプトから24x24の潜在表現を生成する役割を担う
- 提供機能にはテキストから画像生成、画像バリエーション、画像から画像生成、ControlNet、LoRA、画像再構成、ゼロからの学習とファインチューニングが含まれ、diffusers 🤗からも利用可能
- コードベースは開発初期段階のため予期しないエラーや最適化されていない学習・推論コードが含まれる可能性があり、コードはMIT License、モデル重みはStability AI Non-Commercial Research Community Licenseに従う
Stable Cascadeが解決しようとしている課題
- Stable CascadeはStable Cascade公式コードベースで、学習と推論スクリプト、利用可能な複数のモデルを提供する
- モデルはWürstchenアーキテクチャをベースにしている
- Stable Diffusionのようなモデルとの主な違いは、はるかに小さい潜在空間で動作する点
- Stable Diffusionは圧縮係数8を使い、1024x1024画像を128x128にエンコードする
- Stable Cascadeは圧縮係数42を達成し、1024x1024画像を24x24にエンコードできる
- テキスト条件付きモデルはこの高圧縮な潜在空間で学習される
- 小さな潜在空間は、より高速な推論とより低コストな学習につながる
- このアーキテクチャの以前のバージョンは、Stable Diffusion 1.5比で16倍のコスト削減を達成した
性能と効率
- Stable Cascadeは、効率が重要な用途に適したモデルとして紹介されている
- ファインチューニング、LoRA、ControlNet、IP-Adapter、LCMなど既知の拡張手法もこの方式で利用できる
- 独自評価では、Stable Cascadeはほぼすべての比較でプロンプト整合性と美的品質の両方で最良の性能を示した
- 人間による評価はparti-promptsとaesthetic promptsを混ぜて実施された
- Stable Cascadeは30推論ステップで比較された
- 比較対象はPlayground v2 50ステップ、SDXL 50ステップ、SDXL Turbo 1ステップ、Würstchen v2 30ステップ
- 最大モデルはStable Diffusion XLより14億個多いパラメータを含むが、より高速な推論時間を示している
3段階のモデル構造
- Stable Cascadeはその名の通り、画像を生成するカスケード構造であるStage A、Stage B、Stage Cの3つのモデルで構成される
- Stage AとStage BはStable DiffusionのVAEと同様に画像を圧縮する役割を持つ
- Stage Cはテキストプロンプトを入力として受け取り、小さな24 x 24潜在表現を生成する
- Stage AはVAEで、Stage BとStage Cは拡散モデル
- 今回のリリースでは次のチェックポイントが提供される
- Stage C: 10億パラメータ版と36億パラメータ版
- Stage B: 7億パラメータ版と15億パラメータ版
- Stage A: 2千万パラメータ、小規模なため固定されている
- Stage Cはファインチューニング作業の大半が36億パラメータ版に集中しているため、36億版の利用が強く推奨される
- Stage Bはどちらのバージョンも良好な結果を出すが、15億パラメータ版のほうが小さく繊細なディテールの再構成に優れる
- 最良の結果を得るには、各段階でより大きいバリエーションを使う方法が示されている
推論機能とノートブック
- モデルの実行はinferenceセクションのノートブックで可能
- 同セクションにはモデルのダウンロード、計算要件、利用チュートリアルに関する詳細情報が含まれる
-
Text-to-Image
- text_to_image.ipynbはテキストから画像生成、画像バリエーション、画像から画像生成の基本機能を提供する
- 画像バリエーションは画像埋め込みを理解し、与えられた画像のバリエーションを生成でき、例ではプロンプトは与えられていない
- 画像から画像生成は、画像を特定の地点までノイズ化したあと、その開始点から生成する方式で動作する
- 例では左側の画像を80%ノイズ化し、
A person riding a rodent.というキャプションを使用する - モデルはHugging Faceのstable-cascadeドキュメントを通じてdiffusers 🤗ライブラリからも利用できる
-
ControlNet
- controlnet.ipynbはStable Cascade向けに提供されたControlNet、またはユーザーが自分で学習したControlNetの使い方を扱う
- 今回のリリースのControlNetにはInpainting / Outpainting、Face Identity、Canny、Super Resolutionが含まれる
- Face Identity ControlNetは後日リリース予定
- 同じノートブックで使用でき、各ControlNetごとに設定を変えるだけでよい
-
LoRA
- Stable CascadeはLoRAの学習と利用のための独自実装を提供する
- LoRAはテキスト条件付きモデルであるStage Cのファインチューニングに使用できる
- 新しいトークンを追加・学習し、モデルにLoRAレイヤーを追加できる
- lora.ipynbは学習済みLoRAの使い方を示す
-
画像再構成
- reconstruct_images.ipynbは画像をエンコード・デコードする方法と、高圧縮方式の利点を示す
- Stable CascadeのDiffusion Autoencoderにより、非常に圧縮された空間で作業できる
- Stable DiffusionのVAEを独自モデルの学習に使うのと同じように、Stage AとStage Bを使用できる
- 例のバッチ
4 x 3 x 1024 x 1024は4 x 16 x 24 x 24にエンコードされる - 空間圧縮係数は
1024 / 24 = 42.67 - その後、Stage AとStage Bで再び
4 x 3 x 1024 x 1024にデコードできる - 再構成結果は細かなディテールでも元画像に非常に近く、標準的なVAEなどではこのような再構成は不可能だとしている
学習、アプリ、ライセンス
- 学習コードには、Stable Cascadeをゼロから学習する場合、ファインチューニング、ControlNet、LoRAが含まれる
- 詳細な学習方法はtraining folderで提供されている
- コードベースは開発初期段階
- 予期しないエラーがある可能性がある
- 学習と推論コードが完全には最適化されていない可能性がある
- 関心があれば、最新の改善と最適化を反映するアップデートを継続的にリリースする予定
- アイデア、フィードバック、アップデートへの貢献を受け付ける意向がある
- Gradioアプリを実行するには、まず次をインストールする
pip3 install gradiopip3 install acceleratepip3 install git+https://github.com/kashif/diffusers.git@wuerstchen-v3
- プロジェクトルートで次のコマンドによりGradioアプリを実行する
PYTHONPATH=./ python3 gradio_app/app.py
- コードはMIT LICENSEに従う
- Hugging Faceで入手できるモデル重みはSTABILITY AI NON-COMMERCIAL RESEARCH COMMUNITY LICENSEに従う
1件のコメント
Hacker Newsのコメント
数時間使ってみたところ、プロンプト追従性がかなり良くなっているように思える
現時点では一部のSDXLモデルより品質が低く見えるが、あと数日テストしてみるまでは判断を保留したい
速度も速く、非TurboのSDXLよりだいたい2〜3倍速い感触
特定の見た目や奥行きを無理やり作るためにControlNet、OpenPose、depth mapまで総動員しなければならないなら、生成のたびに解決策があまりにも個別最適になってしまう
実際に試してみると、プロンプトに従う点で改善されており、画像も見た目的により好ましい
最大モデルはSDXLよりパラメータ数が14億多いそうだが、SDXLもすでにかなりのVRAMを要求する
非常に印象的
私の理解ではStability AIは現在ベンチャー投資を受けているが、莫大な資金を燃やさざるを得ないように見え、事業モデルが持続可能かどうかも不明だ
もしかすると政府の研究助成を受けるに値するかもしれない
Intelとの取引当時、毎月の請求書と給与で約800万ドルを使っており、売上はその一部にすぎなかったとの報道がある
8月の売上は120万ドルで、ソフトウェアとサービスによりその月300万ドルに向かっていたというMostaqueのX投稿があったが、その後削除された
https://fortune.com/2023/11/29/stability-ai-sale-intel-ceo-r...
今日はHN検索の精度がいまひとつで、思い出しているその特定のコメントが見つからない
もし見つけられるなら、ユーザーページはこちら: https://news.ycombinator.com/user?id=emadm
ではこの構造はどうなっているのか気になる
stability.aiのための独占的な作業なのか?
コミットを見ると、ライセンスがMITから独自のカスタムライセンスに変わっていた: https://github.com/Stability-AI/StableCascade/commit/209a526...
ライセンス変更前の以前のスナップショットを、従来のMITライセンスに従って使うことは法的に可能なのか?
一般に裁判所はより全体的に見て意図を考慮し、事務的ミスが起こりうることも理解する
ただし、ある企業が以前のライセンスを信頼して多くのリソースを投資したと主張する場合は例外になりうる
コミット時点はかなり重要に思える。公開前のリポジトリが数時間だけMITだった状態で、事業として実質的な投資をしたと主張するのは難しそうだ
そのコミットは公開当時のMITライセンスに基づいて、今後も好きなように使える
電子書籍を買って、後で第2版がハードカバーでしか出なくても、第1版の電子書籍は引き続き読めるのと似ている
別々の成果物が別々のライセンスの下にあるということ
Stability AIは、この非商用ライセンスはSDXL 0.9のような技術プレビューだからだと説明している
MITライセンスのコードベースをクローズドにすることはできるが、すでに公開された古いコードのライセンスを遡って変更することはできない
Stabilityの初期コミットにはMITライセンスがあったのだから、そのコミットをフォークして好きなようにできる
やや厄介なのは、MITから独占ライセンスへ変更するコミットを行った一方で、コードの変更はなかったという点だ
これは同じコードベースを互いに矛盾する2つのライセンスで配布することはできないため、無効である可能性が高い
ライセンス変更後にコードベースへ追加された変更分にのみ、新しいライセンスを適用できる
「違法」とまでは言わないが、すでに同一ソフトウェアを公開ライセンスで配布している以上、独占ソフトウェアだと主張しても法廷では持ちこたえにくいだろう
ここに最適化されたプレイグラウンドがある: https://www.fal.ai/models/stable-cascade
今のように競争の激しい分野では特にそうで、HNの利用者層は単一画像生成を試すために登録を求められたら、自分で実行するほうを選ぶ可能性が高い
私が試した他の画像生成器と同様に、これもピアノの鍵盤を正しく作れない [1]
黒鍵のまとまりを数えられるようにするには、別のアプローチが必要そうだ
[1] https://fal.ai/models/stable-cascade?share=13d35b76-d32f-45c...
私の場合、バスケットボール関連の画像を作ると、たいていボールが1個より多かった
専門家ではないが、すべてのピアノ鍵盤が同じであるべきとか、1試合にはボールが1個しかないといった、人間文化的な生活の基本的制約を学習が把握できていないか、部分的にしか把握できていないようだ
このモデルは Würstchenアーキテクチャ 上に構築されている
著者の一人が、このモデルがどのように動作するのかを非常によく説明した動画がある
https://www.youtube.com/watch?v=ogJsCPqgFMk
Gemini Advanced> Summarize this video: https://www.youtube.com/watch?v=ogJsCPqgFMk
この動画は、Würstchenというテキスト画像拡散モデルの学習方式について説明している
Stable Diffusion 1.4 のような従来方式よりはるかに効率的で、学習時間と計算量を 16分の1 に抑えながら、同等の結果を出せる
核心は2段階の圧縮プロセスにある
第1段階では、VQ-VAE によって画像を Stable Diffusion が使う潜在空間より4倍小さい潜在空間へ圧縮し、第2段階では拡散モデルによってその潜在空間をさらに10倍圧縮する
その結果、総圧縮率は40倍となり、Stable Diffusion の8倍圧縮を大きく上回る
圧縮された潜在空間のおかげで、Würstchen のテキスト画像拡散モデルは Stable Diffusion モデルよりはるかに小さく、より高速に学習できる
Würstchen は単一GPUで24,000 GPU時間あれば学習可能だが、Stable Diffusion 1.4 では150,000 GPU時間が必要になる
効率的でありながら Stable Diffusion と同程度の品質の画像を生成でき、より高解像度だったり、より細かな描写がある画像では、さらに良い品質を示すこともある
全体として、Würstchen はテキスト画像生成分野における重要な進展であり、より効率的で低コストなモデル学習を可能にすることで、マーケティング画像、書籍の挿絵、パーソナライズされたアバターといった活用範囲を広げられる
同じモデルの複数画像を生成するために使える方法はある?
たとえば、自動車モデルを複数の角度から回転させた画像を作りつつ、すべて同じ生成された車として保つような形
[1] https://zero123.cs.columbia.edu/
入力画像 => 埋め込み => N枚の画像フロー、の形にできるし、3Dレンダリングの観点まで考えるなら、そのN枚に ControlNet を適用すればよい
参考: “The model can also understand image embeddings, which makes it possible to generate variations of a given image (left). There was no prompt given here.”
以前、この2人の研究者と一緒に、Stage B を潜在表現に条件付きで接続する最適な方法を見つけようと、いろいろ実験していたのを覚えている
相対的な2D位置埋め込みを入れた非常に fancy なクロスアテンションよりも、入力チャネルを潜在表現の最近傍アップサンプルと単純に連結する方式のほうがうまくいったので、そこで諦めた
このモデルは以前 Würstchen v3 として知られていた
AMD で動作する?
対応しているかどうか見つけられなかった
Stable Diffusion を AMD で動かしているユーザーは性能低下を経験しているはずなので、このようなプロジェクトではかなり重要な機能だ
最も印象的なのは 圧縮 だと思う
画像を42倍に圧縮できるというのは、モバイル機器や回線状況の悪い環境、あるいはその両方において非常に大きな利点だ
低帯域幅で 8K 解像度を提供する方向で