Ce nœud applique deux optimisations expérimentales de réduction de la mémoire VRAM à la transmission avant du modèle Ideogram4. Il fait partie de la catégorie "KJNodes/expérimental" et peut altérer les sorties du modèle — ne l’utilisez que lorsque la mémoire VRAM de pointe est un facteur limitant et après avoir vérifié la qualité de la sortie.
Description
Le nœud Optimisations Ideogram4 KJ patche le modèle Ideogram4 pour réduire la mémoire GPU de pointe pendant l’inférence en ciblant les deux plus grands tenseurs transitoires de chaque bloc de transformeur : les activations SwiGLU et le calcul RoPE. Les deux optimisations sont contrôlées par des entrées booléennes et entières discrètes, permettant un contrôle fin entre économies de mémoire et surcharge de calcul.
Entrées
-
model (MODÈLE, Requis) – Le modèle de base Ideogram4 auquel les optimisations seront appliquées.
-
chunk_ffn (BOOLÉEN, défaut
True) – Lorsqu’il est activé, les activations du feedforward (SwiGLU) sont divisées sur la dimension de la séquence de tokens, limitant la taille intermédiaire du tenseur à(B, chunk_size, hidden)au lieu de(B, L, hidden). Cela réduit la mémoire de pointe au prix d’une légère augmentation du calcul. -
ffn_chunks (ENTIER, défaut
2, plage 1–64, pas 1) – Le nombre de morceaux de séquence dans lesquels diviser le feedforward. Des valeurs plus élevées donnent une mémoire de pointe plus faible mais augmentent la surcharge (plus de lancements de noyaux). Une valeur de1désactive effectivement le découpage. Commencez par2et augmentez si la mémoire VRAM est toujours insuffisante. -
ffn_seq_threshold (ENTIER, défaut
1024, plage 256–65536, pas 256) – Le découpage n’est appliqué que lorsque la longueur de la séquence de tokens d’entrée dépasse cette valeur. Pour les séquences courtes (par exemple, moins de 1024 tokens), la mémoire de base est déjà suffisamment faible pour que le découpage ajoute une surcharge inutile. Définissez ce seuil en fonction de votre longueur de génération typique. -
bf16_rope (BOOLÉEN, défaut
True) – Lorsqu’il est activé, l’Embedding de Position Rotative (RoPE) est appliqué dans le dtype de travail du modèle (généralementbfloat16oufloat16) au lieu d’être converti enfloat32. Cela réduit de moitié environ la mémoire d’activation RoPE et correspond à la précision utilisée dans les implémentations de référence Hugging Face. La qualité de la sortie peut différer légèrement du chemin RoPEfp32par défaut.
Sorties
- MODÈLE – Le même modèle avec les optimisations sélectionnées patchées. Il est destiné à être utilisé comme remplacement direct du modèle non patché d’origine dans un flux de travail ComfyUI.
Notes d’utilisation
- Les deux optimisations sont expérimentales. Testez toujours la qualité de la sortie et comparez avec le modèle non patché avant de déployer dans un flux de travail de production.
- Les optimisations
chunk_ffnetbf16_ropesont indépendantes ; activez uniquement ce dont vous avez besoin. Pour des économies de mémoire maximales, activez les deux. - Lors de l’utilisation de
chunk_ffn, commencez avec la valeur par défautffn_chunks = 2et n’augmentez que si le débordement de mémoire VRAM persiste, car plus de morceaux introduisent une surcharge plus importante. - Le
ffn_seq_thresholdest surtout utile lorsque votre flux de travail traite à la fois des séquences très courtes et très longues (par exemple, conditionnement d’image vs génération d’image complète). Réglez-le pour éviter une surcharge sur les invites courtes. - Ces optimisations sont conçues spécifiquement pour Ideogram4 ; elles n’auront aucun effet sur d’autres architectures de modèle et peuvent provoquer des erreurs si elles sont appliquées. Assurez-vous que le modèle d’entrée est une variante Ideogram4.
Commentaires
Connectez-vous avec GitHub pour rejoindre la discussion.