Buckets:
SanaTransformer2DModel
SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformers による2次元データ向けの Diffusion Transformer モデルが、NVIDIA と MIT HAN Lab の Enze Xie、Junsong Chen、Junyu Chen、Han Cai、Haotian Tang、Yujun Lin、Zhekai Zhang、Muyang Li、Ligeng Zhu、Yao Lu、Song Han によって紹介されました。
論文の抄録は以下の通りです:
Sanaは、最大4096×4096解像度の画像を効率的に生成できるテキストから画像への生成フレームワークです。Sanaは、ノートPCのGPU上でデプロイ可能であり、驚くほど高速な速度で、テキストと画像の整合性が強い高解像度かつ高品質な画像を合成できます。コアな設計には以下が含まれます:(1) 深い圧縮オートエンコーダ:従来のAEが画像を8倍にしか圧縮しないのに対し、私たちは画像を32倍に圧縮できるAEを訓練し、潜在トークンの数を効果的に削減しました。(2) Linear DiT:DiT内のすべてのバニラアテンションを、品質を犠牲にせずに高解像度でより効率的に動作する線形アテンションに置き換えました。(3) デコーダー専用のテキストエンコーダ:T5を最新のデコーダー専用の小型LLMに置き換え、コンテキスト内学習を用いた複雑な人間指示を設計することで、画像とテキストの整合性を高めました。(4) 効率的な訓練とサンプリング:サンプリングステップを削減するためのFlow-DPM-Solverを提案し、効率的なキャプションラベリングと選択によって収束を加速します。その結果、Sana-0.6Bは、現代の巨大な拡散モデル(例:Flux-12B)と非常に競争力があり、サイズは20分の1、測定されたスループットでは100倍以上速いです。さらに、Sana-0.6Bは16GBのノートPC GPU上でデプロイでき、1024×1024解像度の画像を1秒未満で生成できます。Sanaは低コストでのコンテンツ作成を可能にします。コードとモデルは公開リリース予定です。
モデルは、以下のコードスニペットで読み込むことができます。
from diffusers import SanaTransformer2DModel
transformer = SanaTransformer2DModel.from_pretrained("Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", subfolder="transformer", dtype=torch.bfloat16)
SanaTransformer2DModel[[diffusers.SanaTransformer2DModel]]
diffusers.SanaTransformer2DModel[[diffusers.SanaTransformer2DModel]]
diffusers.SanaTransformer2DModel(in_channels: int = 32, out_channels: int | None = 32, num_attention_heads: int = 70, attention_head_dim: int = 32, num_layers: int = 20, num_cross_attention_heads: int | None = 20, cross_attention_head_dim: int | None = 112, cross_attention_dim: int | None = 2240, caption_channels: int = 2304, mlp_ratio: float = 2.5, dropout: float = 0.0, attention_bias: bool = False, sample_size: int = 32, patch_size: int = 1, norm_elementwise_affine: bool = False, norm_eps: float = 1e-06, interpolation_scale: int | None = None, guidance_embeds: bool = False, guidance_embeds_scale: float = 0.1, qk_norm: str | None = None, timestep_scale: float = 1.0)
パラメータ:
in_channels (int、デフォルトは32) : 入力におけるチャネル数。
out_channels (int, optional, デフォルトは 32) : 出力のチャネル数。
num_attention_heads (int、デフォルトは70) : マルチヘッドアテンションで使用するヘッド数。
attention_head_dim (int、デフォルトは32) : 各ヘッドのチャネル数。
num_layers (int、デフォルトは20) : 使用する Transformer ブロックの層数。
num_cross_attention_heads (int、任意、デフォルトは20) : クロスアテンションに使用するヘッド数。
cross_attention_head_dim (int、任意、デフォルトは112) : クロスアテンションにおける各ヘッドのチャネル数。
cross_attention_dim (int、任意、デフォルトは2240) : クロスアテンションの出力のチャネル数。
caption_channels (int、デフォルトは2304) : キャプション埋め込みのチャネル数。
mlp_ratio (float、デフォルトは2.5) : GLUMBConv層で使用する拡張比率。
dropout (float、デフォルトは0.0) : dropout の確率。
attention_bias (bool、デフォルトはFalse) : アテンション層でバイアスを使用するかどうか。
sample_size (int、デフォルトは32) : 入力潜在変数の基本サイズ。
patch_size (int、デフォルトは1) : パッチ埋め込み層で使用するパッチのサイズ。
norm_elementwise_affine (bool、デフォルトはFalse) : 正規化層で要素ごとのアフィニティを使用するかどうか。
norm_eps (float、デフォルトは1e-6) : 正規化レイヤーのepsilon値です。
qk_norm (str、任意、デフォルトはNone) : クエリとキーに使用する正規化。
timestep_scale (float、デフォルトは1.0) : タイムステップに使用するスケール。
Sanaモデルファミリーで導入された2次元Transformerモデルです。
forward[[diffusers.SanaTransformer2DModel.forward]]
forward(hidden_states: Tensor, encoder_hidden_states: Tensor, timestep: Tensor, guidance: typing.Optional[torch.Tensor] = None, encoder_attention_mask: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, attention_kwargs: dict[str, typing.Any] | None = None, controlnet_block_samples: tuple[torch.Tensor] | None = None, return_dict: bool = True)
パラメータ:
hidden_states (torch.Tensor、形状 (batch_size, in_channels, height, width)) : 入力 hidden_states。
encoder_hidden_states (torch.Tensor、shape (batch_size, sequence_len, embed_dims)) : 使用する条件埋め込み(プロンプトなどの入力条件から計算される埋め込み)。
timestep (torch.LongTensor) : デノイジングステップを示すために使用されます。
guidance (torch.Tensor, 任意) : ガイダンススケール埋め込み。
encoder_attention_mask (torch.Tensor, 任意) : encoder_hidden_states に適用されるクロスアテンションマスク。
attention_mask (torch.Tensor, 任意) : hidden_states に適用される自己注意マスク。
attention_kwargs (dict, 任意) : 指定された場合、diffusers.models.attention_processor の self.processor で定義されている AttentionProcessor に渡される kwargs の辞書です。
controlnet_block_samples (tuple of torch.Tensor, optional) : 指定された場合、transformer ブロックの残差に追加されるテンソルのリスト。
return_dict (bool、任意、デフォルトはTrue) : プレーンなタプルではなく~models.transformer_2d.Transformer2DModelOutputを返すかどうか。
戻り値:
return_dict が True の場合、~models.transformer_2d.Transformer2DModelOutput が返され、それ以外の場合は、最初の要素がサンプルテンソルである tuple が返されます。
SanaTransformer2DModel の forward メソッド。
Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]
diffusers.models.modeling_outputs.Transformer2DModelOutput[[diffusers.models.modeling_outputs.Transformer2DModelOutput]]
diffusers.models.modeling_outputs.Transformer2DModelOutput(sample: torch.Tensor)
パラメータ:
sample (torch.Tensor、shape は (batch_size, num_channels, height, width)、または Transformer2DModel が離散型の場合 (batch size, num_vector_embeds - 1, num_latent_pixels)) : encoder_hidden_states 入力を条件とする隠れ状態の出力です。離散型の場合、ノイズ除去されていない潜在ピクセルの確率分布を返します。
Transformer2DModelの出力です。
Xet Storage Details
- Size:
- 8.95 kB
- Xet hash:
- 58e5e8ad7b19450bd9614194cfbe08c2e3a3667c67411e024258b7e1b0ce1992
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.