TARA : alignement temporel natif pour les références MiniMax H3

ComfyUI Wikinews

ComfyUI-BFSNodes ajoute TARA, un patch expérimental qui conserve la référence de mouvement native de MiniMax H3 et biaise l'attention vers l'instant de guide correspondant.

TARA (Temporally Aligned Reference Attention) est arrivé sur la branche principale de ComfyUI-BFSNodes le 23 octobre 2026 : un nœud opt-in plus un mode Shot Planner qui conserve la vidéo de conduite de MiniMax H3 sur le canal de référence natif et ajoute un biais temporel souple à l'attention de référence, au lieu de faire passer le guide par des latents Add Guide. Le pack est en version 1.115.33 et la fonctionnalité reste étiquetée expérimentale.

Le transfert de mouvement sur MiniMax H3 fonctionne généralement en injectant les latents du clip de conduite comme guide : Add Guide, ou un latent masqué dans le même espace latent. TARA prend l'autre chemin. Le clip entre comme référence native <Video N> dans MiniMax H3 Reference to Video, son origine RoPE temporelle est alignée sur l'horloge de sortie, et l'attention de chaque instant de sortie vers des instants de guide éloignés est pénalisée. Dans les termes du référentiel, le mode « conserve une référence vidéo native, aligne ses coordonnées RoPE temporelles avec la cible et pénalise doucement les requêtes cibles qui s'attachent à des instants de guide éloignés ».

Rien n'est entraîné pour le patch lui-même. Il n'ajoute aucun poids appris et ne charge aucun LoRA qui lui soit propre ; la préférence temporelle est calculée au moment de l'échantillonnage et ne touche que les requêtes de sortie qui s'attachent à la vidéo de mouvement sélectionnée. Les images de référence conservent leurs coordonnées natives, et le texte, l'audio de référence et l'auto-attention de la cible conservent leur règle normale.

La règle temporelle

Seules les arêtes allant des requêtes de la vidéo de sortie vers les clés de la vidéo de mouvement sélectionnée sont modifiées :

dt = abs(output_time - guide_time)
penalty(dt) = min(strength * (max(dt - window, 0) / falloff)^2, cap)
score = dot(Q, K) / sqrt(head_dim) - penalty(dt)

Les valeurs par défaut sont une fenêtre libre de 0.20 s, un falloff de 0.25 s, une strength de 2.0 et un cap de 6.0, exposés sur le nœud sous les noms window, falloff, strength et cap. À l'intérieur de la fenêtre libre, il n'y a aucune pénalité. En dehors, la pénalité croît quadratiquement jusqu'à atteindre le cap, de sorte que les images de guide éloignées restent disponibles avec un faible poids au lieu d'être masquées. Avec les valeurs par défaut, la correction locale s'annule vers 0.633 s.

Différence de tempsPénalitéFacteur d'attention
0.00 s0.001.000000
0.40 s1.280.278037
0.80 s6.000.002479

Une mise en garde est documentée clairement : mettre strength à zéro supprime le biais mais pas l'alignement RoPE, donc une vraie comparaison « TARA désactivé » implique de contourner le nœud et de router le modèle d'origine à la fois vers le guider et vers le scheduler.

Le câblage

Le nœud autonome est BFS MiniMax H3 TARA - Native Temporal Alignment (Experimental), placé sur le chemin MODEL après le chargement du LoRA et avant le guider. Le clip de mouvement est une référence native <Video N> normale, et motion_video_index sélectionne celle qui fournit le mouvement ; la numérotation des images et des vidéos est indépendante.

Le référentiel demande 24 fps des deux côtés et des fenêtres d'images correspondantes (107 images est un nombre valide), déconseille d'empiler un second patch temporel, et maintient hors du chemin MODEL Add Guide, les guides de première image, VSA, SLA et les remplacements inconnus d'attention ou de blocs. Les masques de génération ordinaires restent autorisés, car un masque ne crée pas de guide temporel. Sur les chemins CFG, chaque branche de conditionnement évaluée par le modèle patché doit conserver la référence de mouvement.

Dans le Shot Planner (BFS Shot H3 Conditioning), le même comportement tient en une entrée de liste déroulante, guide_mode = TARA - Native Temporal Alignment (experimental). Le nœud de conditionnement renvoie le modèle patché, et c'est la grille temporelle compactée du plan en cours qui est échantillonnée.

Trois backends

  • Flash Partitions (par défaut depuis 1.115.11) conserve la règle mais l'évalue via FlashAttention CUDA natif avec des sorties log-sum-exp, en fusionnant trois contributions non négatives au lieu de construire un tenseur de biais dense ou un noyau torch.compile. Il nécessite CUDA FP16/BF16 et la primitive FlashAttention-with-LSE de PyTorch.
  • Noyaux one-pass de Comfy Kitchen (1.115.16 et versions ultérieures) fusionnent la règle dans des noyaux denses INT8 et sol-attn et suppriment la boucle d'attention par image. Des bibliothèques précompilées sont fournies pour SM80, SM86, SM89, SM90, SM100 et SM120 sous Linux, avec des DLL Windows pour SM86, SM89 et SM120 ; le pilote doit prendre en charge CUDA 13 même lorsque PyTorch tourne sur 12.x. À partir de 1.115.17, la configuration à la première utilisation est automatique sous Linux SM120, et une ligne de log au moment de l'échantillonnage indique si le chemin fusionné a réellement été exécuté.
  • Compatibilité sol-attn (1.115.14) est prise en charge avec des limites documentées, et le nœud officiel Backend d'attention du modèle est respecté depuis 1.115.13.

Ce que disent les chiffres

Le référentiel sépare un microbenchmark isolé des logs de flux de travail complet d'un utilisateur, et étiquette les deux. Sur une RTX PRO 6000 Blackwell avec 107 126 tokens, 8 têtes et BF16 :

BackendAppel d'attention
Native FlashAttention0.327 s
Flash Partitions0.422 s
Original temporal FlexAttention0.628 s

Cela représente environ 1.5x par rapport au backend temporel d'origine pour cette forme, mesuré pendant qu'un processus d'entraînement tournait, avec 8 têtes au lieu des 56 de H3, et il ne s'agit pas d'une affirmation de vitesse sur le modèle complet. Une exécution utilisateur sur RTX 5090 en 544×928 et 360 images a rapporté 179.18 s pour la première évaluation complète du modèle à guide scale 1.0 (52 751 lignes de guide) et 54.45 s à l'échelle 0.5 (11 984 lignes), avec une seconde évaluation à 47.19 s. L'ancien chemin FlexAttention a été enregistré à 603.40 s pour sa première étape, initialisation comprise, ce que la documentation qualifie de non comparable à un appel d'attention déjà chaud.

Ce qu'il vous faut encore

TARA ne remplace pas le LoRA de transfert de mouvement, il modifie la façon dont la référence est conditionnée. La documentation associe le nœud à un checkpoint entraîné via la branche feat/h3-native-temporal-motion de ai-toolkit (native_temporal_v1), tandis que la comparaison publique du référentiel utilise un LoRA au step 10500 entraîné pour Add Guide. Sous le patch temporel, ce LoRA suit la performance source et conserve les vêtements du personnage de référence, ce que l'auteur consigne comme une observation expérimentale plutôt qu'une garantie. Un checkpoint natif-temporel fraîchement entraîné au step 750 est mentionné dans la documentation comme présentant une rétention d'identité plus faible et n'est pas publié en téléchargement, il n'existe donc pas encore d'adaptateur public assorti.

Sur le Discord Banodoco, un utilisateur a essayé le nœud sur une RTX 4090 et une H100 le jour de sa sortie et a rapporté que les deux cartes l'exécutaient, le chemin Kitchen étant légèrement plus lent que flash partitions sur ce matériel.

Six colonnes synchronisées issues de la vidéo de comparaison du référentiel

Une image de la comparaison à six colonnes, de gauche à droite : le guide d'origine, le LoRA step-10500 avec TARA à guide scale 1.0, le même LoRA avec TARA à 0.5, le même LoRA avec des latents Add Guide, une référence native sans le patch temporel, et le modèle de base avec une référence native. Les colonnes temporelles sont marquées NEW dans la vidéo.

L'exportation complète de 15 secondes côte à côte issue du référentiel, les six colonnes en lecture simultanée.

Régler les quatre contrôles

Le pack fournit également un guide de paramètres animé avec une version HTML hors ligne dont les curseurs animent la même règle. Son conseil est de partir des valeurs par défaut, de garder seed, LoRA, prompt, source et sortie fixes, et de modifier un contrôle à la fois. La dérive de mouvement est d'abord un problème de timeline : un mauvais <Video 1>, une fréquence d'images discordante ou une fenêtre d'images décalée ne peuvent pas être corrigés par un biais plus fort. La dérive d'identité renvoie à l'affectation des références, au LoRA et au conditionnement d'image plutôt qu'aux contrôles temporels.

Les quatre contrôles TARA et la façon dont ils façonnent la courbe de poids temporel

Fenêtre libre, falloff, strength et cap, d'après le guide de paramètres du référentiel.

Limites

  • La fonctionnalité est expérimentale et opt-in ; la valeur par défaut du Planner reste Add Guide, et la documentation indique que la validation complète de la qualité visuelle est incomplète.
  • La démo publiée est qualitative : des seeds identiques d'une colonne à l'autre, mais tous les réglages de génération n'ont pas été capturés, et le remplacement d'arrière-plan demandé reste partiel.
  • Les deux clips doivent avoir des grilles temporelles correspondantes, et la politique conserve le travail d'attention quadratique dense.
  • La validation à ce jour consiste en des tests de calcul CPU et de routage, plus des évaluations RTX 5090 rapportées par les utilisateurs. L'audio du guide est compacté nativement mais n'est pas biaisé temporellement.

Disponibilité

ComfyUI-BFSNodes est publié dans le registre Comfy sous le nom bfsnodes et s'installe via ComfyUI Manager, ou peut être cloné dans custom_nodes/. TARA fonctionne au-dessus des nœuds natifs MiniMax H3 et des poids Comfy-Org/MiniMax-H3 utilisés pour la génération H3 classique.

Le contrat de conditionnement complet se trouve dans H3_NATIVE_TEMPORAL.md, la dérivation des backends et les tableaux de timings dans H3_FLASH_PARTITIONS.md, et la branche de recherche derrière la méthode dans alisson-anjos/ai-toolkit. Pour une utilisation hors de ce pack de nœuds, il existe un guide d'installation manuelle.

Commentaires

Connectez-vous avec GitHub pour rejoindre la discussion.

Chargement des commentaires…
TARA : alignement temporel natif pour les références MiniMax H3 | ComfyUI Wiki