Buckets:
AnyFlowFARTransformer3DModel
Le Transformer 3D causal (FAR) utilisé par AnyFlowFARPipeline — la variante FAR de AnyFlow. Consultez la page AnyFlowFARPipeline pour le papier, les auteurs et les points de contrôle publiés. Il étend le socle Wan2.1 v0.35.1 avec trois ajouts :
- masque de bloc causal FAR via
torch.nn.attention.flex_attention, prenant en charge la génération autorégressive par morceaux telle qu'introduite dans FAR. - Embedding de patch à trames compressées (
far_patch_embedding) pour les trames de contexte (déjà générées), initialisées à partir de l'patch_embeddingpleine résolution au moment de la construction, par interpolation trilinéaire. - Embedding de carte de flux à double pas de temps (identique à
AnyFlowTransformer3DModel) — chaque appel de propagation conditionne sur le pas de temps sourcetet le pas de temps cibler.
L’ordonnancement de blocs par défaut (chunk_partition) est stocké dans la configuration du modèle ; les points de contrôle NVIDIA AnyFlow-FAR publiés utilisent [1, 3, 3, 3, 3, 3, 3, 2] pour la configuration canonique de 81 images. forward accepte une surcharge chunk_partition par appel, de sorte que le même point de contrôle gère également d’autres configurations num_frames sans réentraînement.
from diffusers import AnyFlowFARTransformer3DModel
# Causal AnyFlow checkpoint (FAR):
transformer = AnyFlowFARTransformer3DModel.from_pretrained(
"nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", subfolder="transformer"
)
AnyFlowFARTransformer3DModel[[diffusers.AnyFlowFARTransformer3DModel]]
diffusers.AnyFlowFARTransformer3DModel[[diffusers.AnyFlowFARTransformer3DModel]]
diffusers.AnyFlowFARTransformer3DModel(patch_size: typing.Tuple[int] = (1, 2, 2), compressed_patch_size: typing.Tuple[int] = (1, 4, 4), full_chunk_limit: int = 3, num_attention_heads: int = 40, attention_head_dim: int = 128, in_channels: int = 16, out_channels: int = 16, text_dim: int = 4096, freq_dim: int = 256, ffn_dim: int = 13824, num_layers: int = 40, cross_attn_norm: bool = True, eps: float = 1e-06, image_dim: typing.Optional[int] = None, rope_max_seq_len: int = 1024, gate_value: float = 0.25, deltatime_type: str = 'r', chunk_partition: typing.Tuple[int, ...] = (1, 3, 3, 3, 3, 3, 3, 2))
Paramètres :
patch_size (Tuple[int], par défaut (1, 2, 2)) : dimensions des patches 3D pour les blocs à résolution complète.
compressed_patch_size (Tuple[int], par défaut (1, 4, 4)) : Dimensions de patch plus grandes pour les segments (contexte) compressés FAR.
full_chunk_limit (int, par défaut 3) : Nombre maximal de blocs en résolution complète avant que les blocs antérieurs ne soient rétrogradés en contexte FAR compressé. Les points de contrôle publiés utilisent 3.
num_attention_heads (int, par défaut 40) : Nombre de têtes d'attention.
attention_head_dim (int, par défaut 128) : Le nombre de canaux dans chaque tête.
in_channels (int, par défaut 16) : Le nombre de canaux dans le latent d'entrée.
out_channels (int, par défaut 16) : Le nombre de canaux dans le latent de sortie.
text_dim (int, par défaut 4096) : Dimension d'entrée pour les embeddings de texte (UMT5).
freq_dim (int, par défaut 256) : Dimension pour les embeddings temporels sinusoïdaux.
ffn_dim (int, par défaut 13824) : Dimension intermédiaire du réseau feed-forward.
num_layers (int, par défaut 40) : Nombre de blocs transformer.
cross_attn_norm (bool, par défaut True) : Active la normalisation de l'attention croisée.
eps (float, par défaut 1e-6) : Epsilon pour les couches de normalisation.
image_dim (Optional[int], facultatif, par défaut None) : Dimension de l'intégration d'image pour le conditionnement I2V.
rope_max_seq_len (int, par défaut 1024) : Longueur maximale de séquence utilisée pour précalculer les fréquences de position rotative.
gate_value (float, par défaut 0.25) : Porte de mélange entre les embeddings de pas source et de pas delta.
deltatime_type (str, par défaut 'r') : Soit "r" (delta est l'étape temporelle cible) soit "t-r" (delta est l'intervalle absolu).
chunk_partition (Tuple[int, ...], par défaut (1, 3, 3, 3, 3, 3, 3, 2)) : Nombre de frames par chunk utilisé par défaut par le pipeline. Les points de contrôle NVIDIA AnyFlow-FAR publiés ciblent num_frames=81 (21 frames latentes avec un pas temporel VAE de 4), répartis en 1 + 3*6 + 2. Un num_frames différent nécessite une surcharge correspondante de chunk_partition passée à AnyFlowFARPipeline.call() (et de même à forward).
Causal (FAR) 3D Transformer pour l'échantillonnage de cartes de flux AnyFlow avec génération auto-régressive par blocs.
Étend le socle Wan2.1 v0.35.1 avec :
- masque de bloc causal FAR via
torch.nn.attention.flex_attention, prenant en charge la génération autorégressive par morceaux (FAR). - Embedding de patch à trames compressées
far_patch_embeddingpour les trames de contexte (déjà générées), initialisé à partir depatch_embeddingpar interpolation trilinéaire, afin qu'un modèle nouvellement construit se trouve déjà à un point de départ raisonnable, même avant l'ajustement fin LoRA. - Embedding de carte de flux à double pas de temps pour l'échantillonnage à pas arbitraire (identique à
AnyFlowTransformer3DModel).
Utilisez AnyFlowTransformer3DModel à la place pour un T2V bidirectionnel simple — cette variante ignore le masquage causal FAR et far_patch_embedding et est environ 5 à 10 % plus petite.
build_attention_mask[[diffusers.AnyFlowFARTransformer3DModel.build_attention_mask]]
build_attention_mask(chunk_partition: typing.List[int], height: int, width: int, has_clean_context: bool = False, device: typing.Optional[torch.device] = None, mode: str = 'train')
Paramètres :
chunk_partition : nombre de trames par bloc (la somme doit correspondre au nombre de trames latentes).
height, width : dimensions spatiales latentes.
has_clean_context : True lorsque clean_hidden_states sera transmis à travers forward (entraînement V2V/I2V) ; seule cette présence affecte la disposition du masque.
device : appareil pour le BlockMask résultant. Le masque n'est pas déplacé automatiquement par device_map="auto" ; construisez-le sur le même appareil que celui sur lequel résideront les entrées du transformeur.
mode : "train" (correspond à _forward_train) ou "cache" (correspond à _forward_cache). Le chemin autorégressif _forward_inference effectue l'attention à travers le cache KV et n'a pas de mode ici.
Retourne : ~torch.nn.attention.flex_attention.BlockMask
masque causal couvrant la disposition FAR, rembourré jusqu'à un multiple de 128 le long de la dimension de séquence (exigence de taille de bloc de BlockMask).
Levée : ValueError
ValueError-- simoden'est ni"train"ni"cache".
Préconstruisez le ~torch.nn.attention.flex_attention.BlockMask causal en dehors de forward.
Transmettez le résultat via le mot-clé attention_mask de forward pour rendre l'ensemble du transformateur compatible avec torch.compile(fullgraph=True). En l'absence d'un masque préconstruit, forward se rabat sur sa construction interne — ce chemin utilise flex_attention.create_block_mask(_compile=False) et brise le graphe de compilation.
forward[[diffusers.AnyFlowFARTransformer3DModel.forward]]
forward(hidden_states: Tensor, timestep: Tensor, r_timestep: Tensor, encoder_hidden_states: Tensor, chunk_partition: typing.List[int], encoder_hidden_states_image: typing.Optional[torch.Tensor] = None, clean_hidden_states: typing.Optional[torch.Tensor] = None, clean_timestep: typing.Optional[torch.Tensor] = None, kv_cache: typing.Optional[typing.List[typing.Dict[str, torch.Tensor]]] = None, kv_cache_flag: typing.Optional[typing.Dict[str, typing.Any]] = None, attention_mask: typing.Optional[torch.nn.attention.flex_attention.BlockMask] = None, attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None, return_dict: bool = True)
Paramètres :
hidden_states (torch.Tensor) : Entrée latente de forme (B, F, C, H, W).
timestep (torch.Tensor) : Pas de temps t de la carte de flux source (plus bruitée).
r_timestep (torch.Tensor) : Pas de temps r de la carte de flux cible (plus propre).
encoder_hidden_states (torch.Tensor) : embeddings de texte UMT5.
chunk_partition (List[int]) : Nombre de trames par bloc ; le total doit correspondre au nombre de trames latentes dans hidden_states.
encoder_hidden_states_image (torch.Tensor, facultatif) : embedding d'image I2V ; concaténé avant les jetons de texte s'il est fourni.
clean_hidden_states (torch.Tensor, facultatif) : Images de conditionnement propres (sans bruit) utilisées par le déroulement de l'entraînement.
clean_timestep (torch.Tensor, facultatif) : Timesteps des images de conditionnement propres dans le déroulement de l'entraînement.
kv_cache (List[Dict[str, torch.Tensor]], facultatif) : Cache KV par bloc pour l'inférence autorégressive. None sélectionne le chemin d'entraînement.
kv_cache_flag (Dict[str, Any], facultatif) : métadonnées du cache KV (par exemple, l'indicateur is_cache_step et les nombres de jetons).
attention_mask (BlockMask, facultatif) : masque causal préconstruit, généralement créé via build_attention_mask. Utilisé par les chemins d’entraînement et de préremplissage du cache KV ; le chemin d’inférence autorégressive effectue l’attention à travers le cache KV et n’utilise pas de masque complet. Lorsque None, les chemins d’entraînement / de cache construisent le masque en interne ; ce repli n’est pas sûr pour la compilation (la fonction sous-jacente flex_attention.create_block_mask casse le graphe sous fullgraph=True), il est donc recommandé de passer un masque préconstruit lorsque forward est enveloppé dans torch.compile.
attention_kwargs (dict, facultatif) : Transmis aux processeurs d'attention.
return_dict (bool, facultatif, par défaut True) : Si False, renvoie des tuples positionnels au lieu d'une dataclass de sortie.
Retourne : [~models.transformer_2d.Transformer2DModelOutput], [AnyFlowFARTransformerOutput] ou tuple
Lorsque return_dict est False, un simple tuple est renvoyé. Sinon, le déroulement d'entraînement causal (kv_cache is None) renvoie un [~models.transformer_2d.Transformer2DModelOutput], tandis que les chemins de préremplissage du cache et d'inférence autorégressive renvoient un [AnyFlowFARTransformerOutput].
Passage avant causal FAR. Aiguille vers l'un des trois chemins internes :
kv_cache is None→ déroulement d’entraînement causal (renvoieTransformer2DModelOutput).kv_cache is not Noneetkv_cache_flag["is_cache_step"]→ cache-prefill (renvoieAnyFlowFARTransformerOutputavecsample=None).- Sinon → étape d'inférence autorégressive (renvoie
AnyFlowFARTransformerOutput).
AnyFlowFARTransformerOutput[[diffusers.models.transformers.transformer_anyflow_far.AnyFlowFARTransformerOutput]]
diffusers.models.transformers.transformer_anyflow_far.AnyFlowFARTransformerOutput[[diffusers.models.transformers.transformer_anyflow_far.AnyFlowFARTransformerOutput]]
diffusers.models.transformers.transformer_anyflow_far.AnyFlowFARTransformerOutput(sample: typing.Optional[torch.Tensor] = None, kv_cache: typing.Optional[typing.List[typing.Dict[str, torch.Tensor]]] = None)
Paramètres :
sample (torch.Tensor ou None) : Cible de débruitage prédite pour le bloc autorégressif. None pour le chemin de préremplissage du cache, qui n'écrit que le cache KV et ne produit aucun échantillon utilisable.
kv_cache (list[dict[str, torch.Tensor]], facultatif) : État du cache KV par bloc utilisé par les étapes autorégressives suivantes.
Classe de données de sortie des chemins avant causaux de AnyFlowFARTransformer3DModel.
Xet Storage Details
- Size:
- 13 kB
- Xet hash:
- 3e04da64df382d4bfe6be34e85337066c157cff8fae214408fed258e73d623d9
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.