
ComfyUIでSanaを試す・再(VRAM 8GB、推奨12GB)
※ Last update 1-26-2025
※ 前回の記事を取り消し、一から書き直して公開しています。
※ 状況を鑑みて8GBとしましたが、6GBでも動くと思います(3-2.参照)。
※ Sanaは今後もアップデートが続く予定のため、本記事は執筆時点の現況についてのみ扱います。
■ 0. 概要
▼ 0-0. はじめに
本記事ではComfyUIで画像生成AIの「Sana」を利用します。Sanaの紹介や初リリース当時の情報については、下記の記事を参照してください。
▼ 0-1. 関連リンク
Sana (information & code)
https://github.com/NVlabs/SanaSana-ComfyUI (information for ComfyUI)
https://github.com/NVlabs/Sana/blob/main/asset/docs/ComfyUI/comfyui.mdComfyUI_ExtraModels (custom nodes)
https://github.com/Efficient-Large-Model/ComfyUI_ExtraModelsOnline Demo
https://nv-sana.mit.edu/fal ($0.0085 per MP)
https://fal.ai/models/fal-ai/sanaReplicate ($0.0018 per use?)
https://replicate.com/nvidia/sana
■ 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」に移動してください。使用したいモデルだけで構いません。
1024px (1K)
VRAM 6GB?(推奨12GB)
https://huggingface.co/Efficient-Large-Model/Sana_1600M_1024px_BF16
checkpoints/Sana_1600M_1024px_BF16.pth2048px (2K)
VRAM 12GB(推奨16GB)
https://huggingface.co/Efficient-Large-Model/Sana_1600M_2Kpx_BF16
checkpoints/Sana_1600M_2Kpx_BF16.pth4096px (4K)
VRAM 24GB
https://huggingface.co/Efficient-Large-Model/Sana_1600M_4Kpx_BF16
checkpoints/Sana_1600M_4Kpx_BF16.pth
小規模な0.6Bのモデルもあります。使用リソースが少なくて済み、生成も早いですが、出力は相応に劣ります。
0.6B 1024px
https://huggingface.co/Efficient-Large-Model/Sana_600M_1024px
checkpoints/Sana_600M_1024px_MultiLing.pth
その他、512px版のモデルがありますが割愛します。
▼ 1-4. VAEのダウンロード(任意)
VAEを手動で設置したい場合の手順です。自動でダウンロードさせたい場合は、この項目をスキップしてください。
ファイルをダウンロードして「ComfyUI\models\vae\sana」に移動してください。「dc-ae-f32c32-sana-1.0-diffusers.safetensors」にリネームするのも良いかもしれません。
dc-ae-f32c32-sana-1.0-diffusers
https://huggingface.co/mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers
diffusion_pytorch_model.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-b」では、手動で任意の解像度を設定します。オリジナルのワークフローを作成する場合は、必ず「Empty Sana Latent Image」を使用してください。

▼ 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

▼ 2-4. VAEの設定
VAEは、下記のいずれかを選択してください。「vae_type」と「dtype」は下記画面のとおりとします。
自動的にダウンロードしたい場合 …
mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers手動で設置した場合 …
sana/diffusion_pytorch_model.safetensors

なお、選択肢にある長い名前のものは、自動的にダウンロードした際に追加されます。こちらを選んでも差し支えはありません。
■ 3. 生成の実行
▼ 3-1. はじめに
ここまでで、ワークフローの読み込みと設定が終わりました。これより生成を行いますが、VRAMが少ない場合の設定を先に紹介します。筆者は実機で確認していないため、その点はご了承ください。
▼ 3-2. VRAM 6GBへの対応
Text EncoderをCPU動作に変更すると、VRAM(GPUメモリ)の使用量が減ります。ただし、その分メインRAMを使用し、プロンプトの処理に少しだけ時間を要します。「dtype」の設定に注意してください。

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

▼ 3-4. 生成の実行
UI上の「Queue」をクリックすると生成を開始します。初回や必要時にはダウンロードが発生します。
ワークフローではStepsを低めにしているので、品質を上げたい場合は増やしてください。標準は28程度のようです。また、CFGの値も全体に影響します。


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

■ 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秒を切る程度で生成できます。

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秒少々で生成できます。

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

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

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

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

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

▼ 4-3. 画像集2
まずは、前回の記事で使用したプロンプトです。

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







■ 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同士で行っても質はあまり良くならないので、別の優れたアーキテクチャと組み合わせた方が良いと思います。


■ 6. その他
私が書いた他の記事は、メニューよりたどってください。
記事に関することで何かありましたら、Xの@riddi0908までお願いします。