見出し画像

ComfyUIでSanaを試す・再(VRAM 8GB、推奨12GB)

※ Last update 1-26-2025
※ 前回の記事を取り消し、一から書き直して公開しています。
※ 状況を鑑みて8GBとしましたが、6GBでも動くと思います(3-2.参照)。
※ Sanaは今後もアップデートが続く予定のため、本記事は執筆時点の現況についてのみ扱います。




■ 0. 概要

▼ 0-0. はじめに

 本記事ではComfyUIで画像生成AIの「Sana」を利用します。Sanaの紹介や初リリース当時の情報については、下記の記事を参照してください。

▼ 0-1. 関連リンク



■ 1. 利用の準備

▼ 1-1. はじめに

 Sanaを利用するためには、「ComfyUI_ExtraModels」に含まれているカスタムノードが必要です。モデルとVAEは自動的にダウンロードさせることも、手動で設置することもできます。お好みで選んでください。

▼ 1-2. ComfyUI_ExtraModelsのインストール

 コマンドプロンプトを開いてから「ComfyUI\custom_nodes」へ移動して、下記のコマンドを実行します(Gitが必要)。もちろん、ComfyUI-Managerを用いてComfyUI上からインストールしても構いません。

git clone https://github.com/Efficient-Large-Model/ComfyUI_ExtraModels

 導入済みの方も、必要に応じて更新してください。コマンドプロンプトを開いてから「ComfyUI\custom_nodes\ComfyUI_ExtraModels」へ移動して、下記のコマンドを実行します。

git pull

▼ 1-3. モデルのダウンロード(任意)

 モデルを手動で設置したい場合の手順です。自動でダウンロードさせたい場合は、この項目をスキップしてください。

 Sanaのモデルは、マイナーチェンジ等の理由により似たようなものが複数あります。名前に「BF16」と付いている、1600M(1.6B)で解像度が1K~4Kのモデルが最新です。

 ファイルをダウンロードして「ComfyUI\models\checkpoints\sana」に移動してください。使用したいモデルだけで構いません。

 小規模な0.6Bのモデルもあります。使用リソースが少なくて済み、生成も早いですが、出力は相応に劣ります。

 その他、512px版のモデルがありますが割愛します。

▼ 1-4. VAEのダウンロード(任意)

 VAEを手動で設置したい場合の手順です。自動でダウンロードさせたい場合は、この項目をスキップしてください。

 ファイルをダウンロードして「ComfyUI\models\vae\sana」に移動してください。「dc-ae-f32c32-sana-1.0-diffusers.safetensors」にリネームするのも良いかもしれません。

 現在は dc-ae-f32c32-sana-1.1 も公開されていますが、ComfyUIのカスタムノードが対応していないようです。



■ 2. ワークフローと設定

▼ 2-1. はじめに

 本項では、独自のシンプルなワークフロー(改造、再公開は自由)と、設定について説明します。

 なお、Sanaオリジナルのワークフロー(t2i、t2i(Sana)+i2v(CogVideoX))は下記のURLにあります。ご利用の際は、CFGの値に注意してください(通常は2程度)。

▼ 2-2. Sanaのワークフロー

 解像度の設定方法が異なる2種類を用意しました。設定がそろえば、どちらでも同じ画像が生成されます。お好みで選び、ComfyUIの画面にドラッグ&ドロップしてください。

 まずは、アスペクト比(縦横比)を選択するバージョンです。1024px(1K)向けの設定の場合、アスペクト比に関わらず1MP(Mega Pixel)程度の画像を生成します。2K(4MP)や4K(16MP)にも対応しています。

 次に、解像度を直接指定するバージョンです。自由な値を設定したい場合はこちらを選んでください。

 参考まで、ワークフローの全体を掲載します。推奨解像度の設定についてメモを入れておきました。

 ワークフロー「sana-simple-a」では、書かれている解像度しか設定できません。解像度が2Kや4Kの場合は、「Sana Resolution Select」の設定を変更してください。

sana-simple-aのワークフロー

 ワークフロー「sana-simple-b」では、手動で任意の解像度を設定します。オリジナルのワークフローを作成する場合は、必ず「Empty Sana Latent Image」を使用してください。

sana-simple-bのワークフロー

▼ 2-3. モデルの設定

 意図しないダウンロード開始を防ぐため、モデルを手動で設定した場合の値を初期値に用いています。必要に応じて変更してください。

 モデルを自動的にダウンロードしたい場合は、基本的には下記のいずれかを選択してください。それ以外の類似するモデルは、性能こそほぼ同じですが古いバージョンです。なお、「600M」は性能の劣る軽量モデルです。

  • 1024px (1K) … Efficient-Large-Model/Sana_1600M_1024px_BF16

  • 2048px (2K) … Efficient-Large-Model/Sana_1600M_2Kpx_BF16

  • 4096px (4K) … Efficient-Large-Model/Sana_1600M_4Kpx_BF16

  • 512px … Efficient-Large-Model/Sana_1600M_512px

自動的にダウンロードされるモデルの選択

 モデルを手動で設置した場合は、設置した中から利用するモデルを選択してください。

設置したモデルの選択

 次に、「model」の設定を合わせます。少し注意を払えば、間違えることは無いでしょう。「dtype」はそのままで構いません。

  • 1600M_1024px … SanaMS_1600M_P1_D20

  • 1600M_2Kpx … SanaMS_1600M_P1_D20_2K

  • 1600M_4Kpx … SanaMS_1600M_P1_D20_4K

  • 600M … SanaMS_600M_P1_D28

ckpt_nameに合わせてmodelを選択する

▼ 2-4. VAEの設定

 VAEは、下記のいずれかを選択してください。「vae_type」と「dtype」は下記画面のとおりとします。

  • 自動的にダウンロードしたい場合
    mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers

  • 手動で設置した場合
    sana/diffusion_pytorch_model.safetensors

VAEを選択する

 なお、選択肢にある長い名前のものは、自動的にダウンロードした際に追加されます。こちらを選んでも差し支えはありません。



■ 3. 生成の実行

▼ 3-1. はじめに

 ここまでで、ワークフローの読み込みと設定が終わりました。これより生成を行いますが、VRAMが少ない場合の設定を先に紹介します。筆者は実機で確認していないため、その点はご了承ください。

▼ 3-2. VRAM 6GBへの対応

 Text EncoderをCPU動作に変更すると、VRAM(GPUメモリ)の使用量が減ります。ただし、その分メインRAMを使用し、プロンプトの処理に少しだけ時間を要します。「dtype」の設定に注意してください。

VRAM 6GBの場合の設定

▼ 3-3. VRAM 8GBへの対応

 Text Encoderの精度を落とすと、VRAM(GPUメモリ)の使用量が減ります。この方法は生成画像への影響が出るので、前項の設定についても検討してください。

VRAM 8GBの場合の設定

▼ 3-4. 生成の実行

 UI上の「Queue」をクリックすると生成を開始します。初回や必要時にはダウンロードが発生します。

 ワークフローではStepsを低めにしているので、品質を上げたい場合は増やしてください。標準は28程度のようです。また、CFGの値も全体に影響します。

生成を実行したところ
生成した画像

▼ 3-5. 軽量モデルの利用

 規模が1600M(1.6B)の標準モデルに対し、600M(0.6B)の軽量モデルもあります。VRAM使用量が減り、速度も早いですが、品質が劣ります。

600Mのモデルで生成した画像(steps=28, cfg=2.5)



■ 4. おまけ

▼ 4-1. 概要

 先に、512px、1024px、2Kpx、4Kpxの各モデルの出力を掲載します。それから、過去のSanaの記事にあるプロンプトを用いた画像8枚を掲載します。ここではアスペクト比を1:1に変更します。

▼ 4-2. 画像集1

 プロンプトはワークフローのものと同じです。生成時間はRTX 3060(VRAM 12GB)の場合で、モデルは読み込み済みとします。

 512px(512x512)は「Sana_1600M_512px_MultiLing.pth」を利用します。解像度が低いことを考慮すると、そこそこの出力だと思います。20 Stepsの場合、3秒を切る程度で生成できます。

1600M 512pxの出力、下記はプロンプト
anime style, child 1girl, waist up, long wavy blue hair, turquoise sundress, white butterflies, blurred forest and lake background, sunlit skin, flower crown, necklace and earrings, blue sky, white clouds

 1024px(1024x1024)は「Sana_1600M_1024px_BF16.pth」を利用します。20 Stepsの場合、9秒少々で生成できます。

1600M 1024pxの出力

 2Kpx(2048x2048)は「Sana_1600M_2Kpx_BF16.pth」を利用します。20 Stepsの場合、45秒前後で生成できます。VAE Decode時に共有GPUメモリへはみ出し、やや時間を要します。

1600M 2Kpxの出力

 上記の画像を1024x1024の大きさで切り取ってみました。解像度が上がった分、精細になっていることがわかります。

1600M 2Kpxの出力(1024x1024でトリミング)

 4Kpx(4096x4096)は「Sana_1600M_4Kpx_BF16.pth」を利用します。20 Stepsの場合、10分30秒程度で生成できます。VAE Decode時に共有GPUメモリへはみ出し、かなりの時間を要します。このような条件でseedガチャをするのは現実的ではなく、4Kpxモデルはi2iで使うことになりそうです。

1600M 4Kpxの出力

 上記の画像を2048x2048の大きさで切り取ってみました。

1600M 4Kpxの出力(2048x2048でトリミング)

 さらに1024x1024の大きさで切り取ってみました。

1600M 4Kpxの出力(1024x1024でトリミング)

▼ 4-3. 画像集2

 まずは、前回の記事で使用したプロンプトです。

anime style, 1girl solo standing, long cherry blossom hair, gentle spring smile, white flowing dress, pink hair ornament, sakura petals falling, blooming garden background, soft morning sunlight, pastel green grass, crystal clear stream, spring flower crown, delicate butterfly accessories, light breeze effect, pink cherry trees, baby blue sky, fresh spring meadow

 これ以降は、記事「Sanaで画像の生成を試す(Windows+CUDA、要VRAM 12GB)」に掲載したプロンプトを使用しています。そちらの方法と比較して、ComfyUIで生成すると形が崩れやすいのが気になります(完全に崩れる場合もある)。

A cheerful kawaii kitten sitting under a pastel pink cherry blossom tree, with a glowing rainbow sign that sparkles with the name "Sana" in cute bubble letters. The kitten has big adorable eyes and is wearing a tiny flower crown, surrounded by floating hearts and stars
A fairy girl with translucent wings gives a playful wink and blows a kiss in an enchanted forest glade. Her tilted flower crown catches the morning light as fireflies dance around her in the pastel-hued scene. Delicate wildflowers and glowing pollen float in the shimmering air.
A manga-style pre-teen girl with light brown pigtails and gray eyes snuggles close to a large golden retriever. She wears a light green plaid dress with frills and a chest ribbon, paired with brown boots. The scene is set on a grassy hillside overlooking a distant lake, with scattered clouds in the blue sky and colorful flowers around them. Drawn in a vibrant pastel palette from a low angle, close-up perspective.
A buff carrot superhero with muscular legs flexes in a garden, showing off to a laid-back tomato who lounges against a fence wearing sunglasses. Nearby, a clumsy potato stumbles around with tiny gardening tools, while a goofy cucumber attempts gymnastics on a trellis. The veggies have cartoonish faces with exaggerated expressions, and sparkles of afternoon sun make their antics even sillier.
a cyberpunk cat with a neon sign that says "Sana"
👧 with 🌹 in the ❄️
a stunning and luxurious bedroom carved into a rocky mountainside seamlessly blending nature with modern design with a plush earth-toned bed textured stone walls circular fireplace massive uniquely shaped window framing snow-capped mountains dense forests



■ 5. おわりに

▼ 5-1. 所感

 昨秋に登場した独自アーキテクチャとしては頑張っていると思いますが、完成度はまだまだのように感じます。また、ComfyUIで生成するとさらに質が落ちるのが気になります。

 現在はアップデートが精力的に行われていて、後継のSana 1.5も控えています。一方、Sanaの核心の一つであるFlow-DPM-SolverがComfyUIでは未実装であるなど、不十分な点も否めません。

 StableDiffusion 3の後にFLUX.1やAuraFlowがリリースされるなど、2024年はアーキテクチャが色々と増えました。Sanaもそのような時期に生まれました。これらを実験的に触ってみるのも良いかもしれません。

▼ 5-2. 最後のおまけ

 VAEはEncodeもできるので、i2iを行うことができます。

 ここでは、1024pxモデルの出力を拡大して、2Kpxのモデルでi2iを行うワークフローを掲載します。Sana同士で行っても質はあまり良くならないので、別の優れたアーキテクチャと組み合わせた方が良いと思います。 

Sanaでアップスケールを行うワークフロー
Sanaでアップスケールを行うワークフローの出力例



■ 6. その他

 私が書いた他の記事は、メニューよりたどってください。

 記事に関することで何かありましたら、Xの@riddi0908までお願いします。



いいなと思ったら応援しよう!