Notifications

Je réponds à vos questions sur l'IA

Il y a 5 mois

yo,

Dans la vraie vie, je suis ingénieur en Intelligence Artificielle / Data Scientist.

Je sais que beaucoup de monde se pose des questions sur ce domaine, que ce soit du point de vue de l'orientation académique ou professionnelle, du marché de l'emploi, de l'aspect opérationnel (théorie, implémentation en pratique, fonctionnement en entreprise, etc.) ou même simplement d'un point de vue plus macro comme l'impact de l'automatisation sur les différents corps de métier, les défis actuels dans l'industrie, l'impact sur l'écologie ou d'autres sujets d'actualité ou plus philosophiques.

N'hésitez pas à poser vos questions liées à la data, l'IA ou l'informatique de manière générale dans les commentaires, je ferai de mon mieux pour y répondre !

Il y a 5 mois

Salut ! J'ai un souci technique sur ComfyUI que je n'arrive pas à résoudre. Enfaite je suis en train de monter un workflow pour upscale des séquences vidéo 2K→8K (24fps) avec LCM-LoRA + ControlNet tile pour la cohérence temporelle.

Le truc, c'est que quand je chaîne plusieurs KSampler Adv. (mix_1→mix_2) avec des schedulers customs (sigmas via SDTurboScheduler), ça me pete une OOM sur mon 4090, mais uniquement si je passe par des nodes CutByMask+ImageComposite en intermédiaire. 

Ce qui est chelou : nvidia-smi me montre toujours <18Go avant le crash. J'ai l'impression que c'est un leak dans l'attention cache des custom nodes ComfyUI-KJNodes que j'utilise pour le temporal blending, mais en regardant le code le tensor pinning a l'air correct.    

 

Quelque question pour m'aider si tu peux repondre se serai cool !   

Est ce que tu aurais une idée sur comment forcer le garbage collection du cache ATTN entre les itérations de sampling juste via un custom node ?

 Y'a moyen de tracer exactement quels tensors restent pinned dans torch.cuda.memory_stats() après un prompt_id.finish() ?  

C'est un workflow de 127 noeuds, j'ai dû activer le disable-smart-memory pour éviter des conflits avec mes nodes de buffer perso.      Si t'as déjà croisé ce genre de souci hesite pas a me dire , merci pour ton aide !
Il y a 5 mois

Salut,

Alors, je t'avoue que ComfyUI ne fait pas vraiment partie de mon workflow habituel, donc sans accès à ton environnement c’est compliqué d’être affirmatif.

Déjà ce n’est pas parce que nvidia-smi affiche encore de la VRAM libre qu’elle est forcément allouable dans n’importe quelles conditions. nvidia-smi te montre ce que le driver voit au niveau global, mais PyTorch gère cette mémoire en interne avec son propre allocateur. Il réserve des blocs, les découpe et les réutilise, ce qui peut mener à de la fragmentation. Du coup tu peux par exemple avoir des gigas libres, mais aucun bloc contigu suffisamment grand pour satisfaire une allocation donnée. 

ça vaut le coup de regarder la mémoire côté PyTorch plutôt que de se fier uniquement à nvidia-smi, par exemple avec torch.cuda.memory_allocated(), torch.cuda.memory_reserved() et torch.cuda.max_memory_allocated(). Si tu vois que la mémoire réservée monte run après run sans vraiment redescendre, ou que le max explose à certains endroits du graph, ça peut conforter l'hypothèse d'un leak mémoire.

Concernant le GC, il faut garder en tête qu’un tensor GPU ne sera pas libéré tant qu’il est encore référencé quelque part. Appeler gc.collect() ou torch.cuda.empty_cache() ne changera rien si la mémoire en question est référencée. Pour investiguer ça, torch.cuda.memory_snapshot() peut être utile, parce que ça permet de remonter l’historique des allocations et de voir quels blocs restent actifs et d’où ils viennent.

Peut être que cette issue peut être utile dans ton cas ? (je peux pas mettre le lien : github comfyanonymous/ComfyUI/issues/9739)

À titre de retour d’expérience plus général (plutôt côté audio / texte de mon côté), quand on commence à taper dans les limites mémoire, l'approche qui selon moi est la robuste à long terme reste de traiter les données par chunks et d’éviter au maximum les états persistants en VRAM entre itérations, surtout en prod.

Il y a 5 mois

@Neslou t'utilises des feed forward en prod ?

Il y a 5 mois

@gogolafarce si par feed-forward tu fais référence aux MLP classiques, donc à des réseaux de neurones vanilla, je crois que je n’en ai jamais vraiment mis en production tels quels.

De ce que j’ai pu voir jusqu'ici, les MLP sont très bien pour expérimenter et pour comprendre le deep learning, mais je n'ai jamais croisé de business case où ça pourrait s'utiliser réellement. Il faut déjà avoir suffisamment de données tabulaires pour que ça vaille le coup d’entraîner un NN, et même dans ce cas-là, rien ne garantit qu’un xgb ou un CatBoost ne fasse pas aussi bien, voire mieux. En plus, ces modèles sont souvent plus simples à expliquer, à maintenir et à gérer côté infra.

Quand j’ai eu besoin de construire des réseaux from scratch pour des usages spécifiques, je me suis plutôt orienté vers des architectures adaptées aux données, typiquement des RNN/LSTM ou des CNN, surtout sur des séries temporelles.

Après, si on parle stricto sensu de modèles mis en production pour de l’audio, du texte ou de l’image, ils contiennent quasiment toujours des couches feed-forward / denses à un moment ou à un autre. J’ai eu l’occasion de travailler sur du NER, de la transcription audio (en streaming et temps réel), de la reconnaissance d’objets, de l’OCR et du CLM, avec des modèles qui tournent en prod, mais dans ces cas-là c’était soit du fine-tuning, soit de l’utilisation de modèles existants avec un peu d’hyperparameter tuning.

Je ne sais pas si ça répond exactement à ta question...

Il y a 5 mois

@Neslou bah RNN (recurrent neural network) / LSTM (long short term memory) si je dis pas de betise sont des ameliorations des feed forward, je te demande parce que j'ai eu l'occasion de les utiliser en prod en donc je voulais savoir si toi aussi (je suis pas du tout dans l'IA moi mais quand j'ai des problèmes trop complexes je fais un réseau de neurone plus rapide mdr) 

Il y a 5 mois

Est-il possible que l'Humanité soit une création d' IA?

Répondre au sujet

Tu n'es pas encore en ligne, rejoins nous et commence à discuter avec les autres joueurs.