1 points par GN⁺ 2024-10-04 | 1 commentaires | Partager sur WhatsApp
  • Depuis 2017, le Transformer a remodelé le deep learning, mais le coût de l’auto-attention augmente sur les longues séquences, ce qui remet en lumière les modèles récurrents entraînables en parallèle
  • LSTM et GRU, largement utilisés pendant les 20 années précédant le Transformer pour la modélisation de séquences, deviennent eux aussi parallélisables si l’on réduit la dépendance des portes à l’état précédent
  • Les versions simplifiées minLSTM et minGRU ont moins de paramètres que les LSTM et GRU classiques, sont entièrement parallélisables à l’entraînement et montrent des performances compétitives face aux modèles récents, Transformer inclus, sur plusieurs tâches
  • Les travaux visant à rendre les Transformer plus efficaces ont conduit à la sparsité, aux approximations low-rank et au tiling ; plus récemment, des modèles récurrents alternatifs comme les modèles à espace d’état, l’attention linéarisée et les RNN linéaires affichent eux aussi de solides performances
  • Grâce aux quelques lignes d’implémentation plain PyTorch en annexe, minGRU et minLSTM peuvent être considérés comme des modèles légers faciles à expérimenter pour les débutants, les praticiens et les chercheurs

Les modèles récurrents reviennent sur le devant de la scène après le Transformer

  • Les RNN sont largement utilisés depuis les années 1990 pour des tâches de modélisation de séquences comme la traduction automatique ou la génération de texte
    • Les modèles représentatifs sont les LSTM (1997) et les GRU (2014)
    • Leur structure est intrinsèquement séquentielle, ce qui limite la parallélisation et tend à réduire l’efficacité de calcul sur les longues séquences
  • Le Transformer a rapidement rencontré le succès en modélisation de séquences après avoir introduit en 2017 un mécanisme d’apprentissage parallèle via l’auto-attention
    • Il s’est ensuite étendu, au-delà des grands modèles de langage, à la vision par ordinateur, à l’apprentissage par renforcement et à la bioinformatique
    • L’auto-attention modélise les interactions entre tokens, mais sa complexité de calcul augmente de façon quadratique avec la longueur de la séquence
    • Sur les longues séquences ou dans les environnements aux ressources limitées, le coût peut fortement augmenter
  • Les recherches pour améliorer l’efficacité du Transformer ont suivi plusieurs directions
    • sparsité
    • approximations low-rank
    • tiling
  • Récemment, des modèles récurrents parallélisables, plus efficaces à faire passer à l’échelle, sont de nouveau en plein essor
    • modèles à espace d’état
    • attention linéarisée
    • RNN linéaires
    • Ces modèles récurrents récents exploitent des transitions dépendantes de l’entrée et affichent des performances élevées comparables à celles des Transformer
    • Ils sont appliqués non seulement aux grands modèles de langage, mais aussi aux images et aux données fondées sur des graphes

L’idée clé derrière minLSTM et minGRU

  • Cette étude réexamine sous un angle historique les LSTM et GRU, utilisés pendant longtemps avant le Transformer
  • Les deux modèles peuvent être vus comme des exemples précoces de modèles récurrents dépendants de l’entrée
  • Si l’on supprime la dépendance des portes à l’état précédent, les LSTM et GRU deviennent eux aussi compatibles avec un apprentissage parallèle
  • Une simplification supplémentaire mène à des versions minimales appelées minLSTM et minGRU
    • Ils comptent moins de paramètres que les LSTM et GRU classiques
    • Ils sont entièrement parallélisables pendant l’entraînement
    • Malgré leur structure simple, ils montrent des performances compétitives sur plusieurs tâches
    • Les comparaisons incluent des modèles récents, Transformer compris
  • Ce résultat remet en question la tendance consistant à augmenter sans cesse la complexité structurelle des modèles et celle des algorithmes
  • L’annexe contient une implémentation plain PyTorch de minGRU et minLSTM en quelques lignes de code
    • Les modèles sont légers et faciles à adapter
    • Leur forme les rend faciles à utiliser pour les débutants, les praticiens et les chercheurs

1 commentaires

 
GN⁺ 2024-10-04
Avis sur Hacker News
  • Si l’on voit les structures récurrentes comme des filtres IIR et les architectures purement feedforward comme des filtres FIR, on constate beaucoup de similitudes avec le traitement numérique du signal.
    Les filtres IIR nécessitent souvent beaucoup moins d’éléments que les filtres FIR produisant la même réponse, tandis que les filtres FIR sont généralement plus faciles à implémenter, contrôler et mesurer.
    J’ai l’impression que le matériel en arithmétique à virgule fixe ressemble aux architectures de machine learning qui tournent bien sur GPU, et que, pour que l’IA passe vraiment à une phase exponentielle effrayante, il lui faudra fondamentalement une architecture récurrente.
    Dans cette analogie, les LSTM ressemblent plutôt à un bricolage intermédiaire, comme un FIR à coefficients dynamiques ; à long terme, l’approche neuromorphique semble la meilleure sur le plan de l’efficacité.

    • Du point de vue du traitement du signal, selon la position des pôles de la fonction de transfert du filtre transformée en z, la zone de stabilité de la sortie d’un IIR est étroite, ce qui impose en général une conception prudente.
      Sinon, un filtre IIR décroît exponentiellement vers 0 ou croît exponentiellement vers l’infini.
      Les cellules RNN comme les LSTM ressemblent davantage à des filtres amortis auxquels on a ajouté des portes non linéaires pour empêcher l’atténuation et “mémoriser” quelque chose.
      Les filtres FIR sont beaucoup plus simples à concevoir et peuvent contenir de la mémoire sans ce genre de bricolage.
    • J’aimerais bien qu’on explique simplement ce qu’est l’approche neuromorphique et comment elle contribue à l’IA/AGI.
      En tant que profane, ma première impression est que cela ressemble à l’idée de 《The Society of Mind》, où plusieurs “agents” ou sous-systèmes interagissent de différentes manières, plutôt qu’à une simple simulation de neurones.
    • J’ai longtemps pensé que, sans architecture fondamentalement récurrente, l’IA ne pourrait pas atteindre une phase exponentielle effrayante, mais je me demande maintenant si de fenêtres de contexte gigantesques ne suffiraient pas.
      La récurrence est peut-être plus neuromorphique et importante à long terme, sans être forcément indispensable à une superintelligence.
      Cela dit, je suis un profane aux connaissances limitées sur le sujet, donc je peux me tromper complètement.
    • Je me demande si l’on peut obtenir de bonnes performances et une bonne scalabilité en implémentant à grande échelle des filtres IIR sur des architectures actuelles comme les GPU.
  • L’ensemble du domaine me semble insuffisant face au problème de l’horizon long.
    La solution aujourd’hui largement utilisée est le passage à l’échelle, mais on est encore très loin de la taille d’horizon que traite le cerveau d’un petit mammifère.
    Les modèles peuvent avoir des milliers de milliards de paramètres, mais pour les tâches de long terme et l’efficacité, j’ai l’impression que le cerveau d’un rat gagnerait encore.
    C’est comme s’il existait un petit algorithme d’exploration, simple et élégant, qui trouve des chemins presque optimaux avec un budget de calcul réduit tout en continuant à apprendre.
    J’envie presque les ingénieurs du futur qui résoudront un jour ce genre de problème dans un notebook Jupyter de 100 lignes sur un ordinateur portable.
    Si l’on trouve une méthode ou un algorithme adapté aux problèmes d’horizon long, un modèle à 2 milliards de paramètres pourrait peut-être dépasser les modèles actuels dans tous les domaines, sauf les problèmes de raisonnement courts et extrêmes.
    Parmi les solutions possibles, j’ai envisagé d’étendre la dimensionnalité du modèle au fil du temps, plutôt que de rechercher des poids parfaits.
    Plus la dimensionnalité est élevée, plus la capacité de stockage théorique augmente ; une couche pourrait fonctionner comme une superposition de plusieurs points atypiques, tandis qu’une autre saurait comment les utiliser, un peu comme dans un modèle à deux couches.
    Si l’on considère qu’il existe, dans le paysage de perte, plusieurs minima pour une tâche donnée, on pourrait reconfigurer le modèle au besoin pour se déplacer entre ces minima, créant ainsi un modèle unique avec presque une infinité de minima locaux, autrement dit une mémoire de dimension plus élevée.
    Si le cerveau humain crée et supprime des milliers de connexions chaque jour, ces connexions pourraient servir à orienter le paysage de perte interne entre les différents minima nécessaires au cours de la journée.

    • Oui, il manque à ce domaine son Graal : le problème de l’horizon long.
      Mais on n’a pas besoin d’un cerveau de rat pour classer des spams.
      Les grands modèles de plus de 2 milliards de paramètres restent trop lourds pour être exécutés pratiquement, et relèvent plutôt d’usages spécialisés ; il y a encore beaucoup de place pour des modèles intelligents et petits, qui ne résolvent que des problèmes utiles sur du matériel et des jeux de données limités.
      Des modèles dont la taille varie selon les besoins ont aussi été expérimentés, mais avec un budget énergétique limité ils se sont révélés trop inefficaces ou difficiles à optimiser.
      Malgré tout, si l’on veut continuer à passer à des échelles toujours plus grandes, il semble probable qu’on finisse par avoir besoin de tels modèles.
      Le vrai goulot d’étranglement est peut-être une percée dans l’entraînement lui-même.
      La perte de rétropropagation est trop simple pour optimiser parfaitement même les modèles actuels, et elle le sera encore davantage pour les futurs modèles plus grands.
      Comme rien ne garantit qu’une meilleure alternative existe, les approches actuelles du machine learning pourraient avoir une limite fixe.
  • Le fait que les discussions soient dispersées à plusieurs endroits est à la fois un avantage et un inconvénient
    J’ai trouvé intéressant ce billet de François Chollet vu sur Twitter/X : https://x.com/fchollet/status/1841902521717293273
    « Un travail intéressant pour ressusciter les RNN. https://arxiv.org/abs/2410.01201 — De manière générale, le fait que des architectures récentes venues de directions différentes fassent à peu près jeu égal avec les Transformers est la preuve que, dans le paradigme de l’ajustement de courbes, c’est-à-dire en deep learning, l’architecture n’a pas d’importance fondamentale
    L’ajustement de courbes consiste à embarquer un jeu de données sur une courbe. Le facteur clé, c’est le jeu de données, pas un ornement particulier codé en dur qui contraint la forme de la courbe. Si la courbe est suffisamment expressive, à grande échelle de données, toutes les architectures convergent vers les mêmes performances »

    • Je suis presque en désaccord avec l’idée selon laquelle « le facteur clé, c’est le jeu de données, pas un ornement particulier codé en dur qui contraint la forme de la courbe »
      Les jeux de données existent en grand nombre depuis longtemps, et les progrès des dix dernières années sont venus de la manière de concevoir la courbe, de l’ajuster aux données, et d’utiliser davantage de calcul
      Il y a peut-être un sens théorique à dire que d’anciens modèles pourraient résoudre les nouveaux problèmes de la même façon avec environ un million de fois plus de calcul, mais appeler cela « simplement de l’optimisation » revient à ignorer l’importance de l’analyse de complexité dans la conception d’algorithmes, un peu comme dire que bogosort et quicksort sont équivalents
      Si l’on ajoute des couches de techniques de régularisation pour réduire le surapprentissage, et même des structures plus agentiques comme la conception de l’espace de recherche dans Deep Q Learning ou OpenAI o1, la vision selon laquelle ce ne serait que de l’optimisation est peu convaincante
      Davantage de calcul à lui seul n’aurait pas permis aux anciennes architectures de résoudre ce genre de problèmes
    • Je n’ai pas lu l’article en entier, mais il semble davantage axé sur l’optimisation du calcul que sur la taille du jeu de données
      On y trouve des éléments comme « entièrement parallélisable pendant l’entraînement, 175 fois plus rapide sur des séquences de longueur 512 »
      Même si plusieurs architectures convergent avec le temps vers la même perte, compte tenu du coût des GPU à grande échelle, trouver l’architecture qui converge le plus vite a pas mal de valeur
    • L’un des grands rôles de ces divers ornements est de restreindre l’espace d’entraînement
      Si les CNN ont dominé la vision par ordinateur, ce n’est pas parce qu’ils faisaient quelque chose que les réseaux de neurones denses ne pouvaient pas faire, mais parce qu’ils supprimaient beaucoup de connexions peu importantes, permettant d’allouer le budget d’entraînement à des réseaux plus profonds
      De même, les Transformers sont excellents parce qu’ils permettent d’entraîner de très grands réseaux avec une certaine efficacité
      Cet article montre aussi que si l’on rend l’entraînement des RNN beaucoup plus rapide, ils peuvent en pratique être assez bons
      Le gros goulot d’étranglement est la vitesse et l’efficacité de l’entraînement, plus que le pouvoir expressif réel de l’architecture
    • Quand on pense au fait qu’un MLP est un approximateur universel de fonctions, cela paraît assez évident
      Un énorme MLP pourrait lui aussi produire les mêmes résultats qu’un Transformer
      Le problème, c’est l’échelle, et le fait qu’on ne peut pas entraîner un MLP suffisamment grand
      Les Transformers sont utiles parce qu’ils optimisent les performances
    • Au bout du compte, le point clé sera l’efficacité de calcul
      On ne veut pas réentraîner une fois par mois, mais en continu, et l’on ne veut pas qu’un agent discute avec 5 LLM, mais que des milliers de LLM fonctionnent ensemble
  • La réponse semble plutôt être « non »
    Ces RNN peuvent être suffisamment bons dans certains cas, et même battre les Transformers dans d’autres, mais ils ne semblent pas pouvoir remplacer universellement les Transformers dans les LLM
    Par exemple, si un utilisateur fournit un long texte et dit « traduis ceci en allemand », un Transformer peut revenir sur tout l’historique
    Un RNN, même avec une longueur de contexte illimitée, est limité à tout instant par la quantité d’information contenue dans son état caché
    Article connexe : https://arxiv.org/abs/2402.01032

    • Le fait que « la quantité d’information mémorisée soit limitée à l’état caché » n’est pas différent pour un Transformer
      Un Transformer est lui aussi, au final, lié à un état fini ; cet état est simplement organisé autrement
    • Ce problème tourmente les RNN depuis les années 90
      Il y a le problème de précision de l’information, qui concerne le nombre de bits qu’un état ancien doit transmettre, le problème de l’atténuation où les informations anciennes s’affaiblissent avec le temps, et le problème du mélange, où les représentations se combinent ou s’additionnent
    • Le contre-argument est qu’en augmentant suffisamment la taille de l’état caché, on peut y faire tenir une représentation compressée de séquences de la longueur voulue
      Ce qui m’intéresse, c’est de savoir si, à nombre d’opérations en virgule flottante fixé, un RNN peut concurrencer un Transformer, mais l’article d’origine ne semble pas vraiment traiter ce point
    • Il n’est pas nécessaire de dire « traduis en allemand » après un long texte
      On peut plutôt dire « traduis ce qui suit en allemand » ; dans ce cas, il suffit de mémoriser la tâche courante et une quantité beaucoup plus réduite d’entrées récentes
      Bien sûr, il faut aussi la capacité de produire la sortie en parallèle pendant le traitement de l’entrée
  • Si je comprends bien, ce qui a permis le boom ultérieur des Transformers, c’est qu’ils ont résolu deux grands problèmes des RNN
    La disparition du gradient limitait le contexte et la taille des modèles, et la difficulté à paralléliser limitait la taille des données d’entraînement
    Je me demande s’il existe aujourd’hui des solutions à ces deux problèmes

    • Un Transformer peut, à n’importe quel moment, aller récupérer une information antérieure qui devient utile plus tard
      Un RNN met constamment à jour sa mémoire et l’écrase, il doit donc anticiper et stocker à l’avance les informations qui seront utiles plus tard
      Dans les cas d’usage conversationnels comme ChatGPT, c’est un énorme avantage des Transformers
      Si l’on fournit un contexte puis que l’on pose des questions sur plusieurs tours, on ne sait parfois qu’à la fin de la séquence de tokens quel contexte était important pour une question donnée
      Plus précisément, il faudrait dire que c’est un avantage des modèles fondés sur l’attention, et il existe aussi des modèles hybrides comme Jamba qui combinent avec succès les deux approches
    • La disparition ou l’explosion du gradient ne touchait pas seulement les RNN, mais toutes les architectures profondes
      Les LSTM, proposés pour la première fois en 1997, ont apporté une première solution : https://www.semanticscholar.org/paper/Long-Short-Term-Memory...
      Il est intéressant de voir à quel point ce savoir semble presque oublié
      Vers 2014, les LSTM étaient extrêmement populaires : https://karpathy.github.io/2015/05/21/rnn-effectiveness/
      https://colah.github.io/posts/2015-08-Understanding-LSTMs/
    • D’après ma lecture rapide de l’article, celui-ci vise surtout la parallélisation et l’entraînement rapide, plutôt que la « disparition du gradient »
      Cela dit, en simplifiant l’unité récurrente, il semble améliorer les deux
      C’est un travail assez malin et intéressant
      L’article parle sans cesse d’une « architecture vieille de 10 ans », mais en réalité elle reste énormément utilisée aujourd’hui parce qu’elle est facile à adapter à plusieurs domaines
      La présenter comme une « concurrente » des Transformers n’est pas non plus totalement équitable, car les Transformers et les RNN ne sont pas mutuellement exclusifs, et il existe de nombreuses façons de les combiner
      Améliorer les RNN pourrait entraîner des améliorations dans toutes sortes d’endroits inattendus
  • J’aime vraiment la simplicité de l’architecture minGRU
    En gros, elle crée à partir du token un état caché proposé et un coefficient de mélange via des transformations linéaires distinctes, puis les combine avec torch.lerp(proposed_hidden_state, previous_hidden_state, mix_factors)
    Comme, à chaque couche, l’état caché proposé et le coefficient de mélange ne dépendent que du token courant, si l’on connaît toute la séquence à l’avance comme pendant l’entraînement, on peut tout calculer en parallèle puis les combiner en temps linéaire avec un scan parallèle
    Le fait que cela soit compétitif face aux Transformers et aux modèles à espace d’états dans de petites expériences satisfait le côté de moi qui croit que « la meilleure PR est celle qui supprime du code »
    Cela dit, tant qu’on ne l’aura pas mis à l’échelle avec des nombres de paramètres et des volumes de données comparables aux meilleurs modèles actuels, on ne saura pas s’il s’agit d’un Breakthrough avec un B majuscule
    À la lecture de l’annexe, il semble que tous les calculs soient faits dans l’espace logarithmique, apparemment pour des raisons de stabilité numérique
    J’ai du mal à en avoir l’intuition : est-ce parce qu’en retirant tanh à la sortie et en calculant dans l’espace linéaire, les valeurs pourraient exploser ?
    Le simple fait qu’une telle modélisation de séquences fonctionne est aussi intéressant
    C’est comme si l’on arrachait toutes les pages d’un livre, qu’on les donnait dans un ordre aléatoire et qu’on demandait, sans aucune connaissance des pages précédentes, de produire pour chaque page un vecteur et « une façon de mélanger ce vecteur avec le vecteur global des pages précédentes », puis que je remélange le tout dans l’ordre et que je note à quel point le vecteur final constitue un bon résumé du livre entier
    Pour l’instant, ils n’utilisent que deux couches linéaires denses pour transformer un token en état caché proposé et en coefficient de mélange d’interpolation ; je me demande aussi ce qui se passerait si cette transformation était un MLP plutôt qu’une seule couche linéaire

    • À première vue, cette architecture semble empêcher la capacité fondamentale à reconnaître des séquences de tokens
      On dirait au moins qu’elle rencontrerait des problèmes du type lemme de pompage
      Si [the ][cat ][is ][black ] produit une sortie proche d’un certain vecteur, alors une entrée où [the ][cat ][is ][black ] est répétée trois fois devrait se rapprocher encore davantage de ce vecteur, et s’éloigner d’un vecteur signifiant « pourquoi avoir répété trois fois la même phrase ? », non ?
      Sans mélange non linéaire entre les tokens d’entrée et l’état caché, j’ai l’impression qu’il restera beaucoup de similarité linéaire entre des séquences de tokens proches
    • Je ne vois pas cela comme un Breakthrough avec un B majuscule, mais les réseaux de neurones récurrents sont partout
      Si c’est une simplification qui améliore l’entraînement et les performances, elle prépare le terrain pour réempiler ensuite de la complexité à un niveau plus élevé
    • L’espace logarithmique est important lorsque les probabilités des tokens couvrent une très large plage de valeurs, c’est-à-dire plusieurs ordres de grandeur
      Ce n’est pas pour rien que l’ajustement par maximum de vraisemblance se fait toujours avec la log-vraisemblance
  • J’ai créé un RNN pour un projet universitaire ; à l’époque, je m’intéressais aux technologies historiques disparues et je pensais qu’une fois sorti de l’école je n’entendrais plus jamais parler de réseaux de neurones, donc qu’il fallait saisir l’occasion
    Ce que j’ai construit fonctionnait, mais c’était très simple et extrêmement lent sur un vieux portable
    Rien ne pouvait vraiment être rapide sur cette machine, mais je garde le souvenir que le RNN était nettement plus lent qu’un réseau feedforward
    J’étais convaincu que c’était une technologie morte, un objet de curiosité académique des années 1980-1990, et voir à quelle vitesse cela a changé m’a paru presque étrange

    • Je me sens vieux
      Vers 2000, j’ai écrit mon mémoire de master sur l’apprentissage de systèmes dynamiques, par exemple avec des RNN à des fins de contrôle, et à l’époque c’était un sujet assez nouveau
      J’avais codé la rétropropagation en C++ et je la laissais tourner toute la nuit ; c’était vraiment lent à cause des petits gradients
      L’architecture du réseau aussi se limitait à une seule couche cachée avec environ 5 ou 10 neurones
      Les réseaux de neurones étaient un petit sujet, et on avait de la chance si l’on trouvait un cours dessus ; j’ai fermé les yeux un instant, puis en 2015 j’ai regardé à nouveau et tout avait complètement changé
  • Les auteurs, parmi lesquels figure aussi Yoshua Bengio, ont le mérite de terminer l’article sur une question plutôt que de prétendre connaître la réponse.
    Ces modèles sont très petits, même selon les standards académiques, donc on ne peut pas considérer qu’un résultat s’étendra forcément jusqu’à l’échelle des LLM actuels.
    La conclusion essentielle est que les réseaux de la famille des RNN peuvent eux aussi être entraînés aussi efficacement que les alternatives modernes, mais que la compétitivité de leurs performances finales n’a été vérifiée qu’à petite échelle.

    • Il faut insister sur le « pas forcément ».
      Il me semble que la conclusion devrait aussi être : « le fait que les performances finales soient compétitives n’a été vérifié qu’à petite échelle ».
  • Les modèles de l’article ayant été rendus parallélisables, ce ne sont pas de « vrais » RNN pour les mêmes raisons que celles décrites dans https://arxiv.org/abs/2404.08819, et ils sont donc, en théorie, moins puissants que les RNN traditionnels.
    Ils ont du mal sur certaines catégories de problèmes où les RNN étaient à l’origine performants.
    En revanche, https://arxiv.org/abs/2405.04517 contient de « vrais » composants RNN et montre une forte amélioration sur les problèmes de suivi d’état, sur lesquels les Transformers peinent.

    • Ce sont aussi de vrais RNN.
      Ils dépendent toujours de l’état caché précédent, ce sont seulement les mécanismes de gating qui n’en dépendent pas.
      L’équation RNN de base peut être parallélisée avec un algorithme de scan parallèle des préfixes.
  • Je n’ai pas regardé l’article en détail, mais j’aimerais que quelqu’un puisse répondre.
    Comme dit plus haut, si l’on retire l’état caché d’un RNN, qu’est-ce qu’il reste ? Un MLP qui prédit à partir d’un seul token ?

    • Ils n’ont pas complètement supprimé l’état caché ; ils l’ont seulement retiré de la porte d’entrée, de la porte d’oubli et de la porte de mise à jour.
      Je n’ai pas entièrement digéré l’article, mais dans le cas du GRU, cela semble vouloir dire que le masquage de la mise à jour de l’état caché, c’est-à-dire z_t et r_t dans les équations de l’article, ne dépend que de la nouvelle entrée, et non de la somme de l’entrée et de l’état caché précédent.
    • Il n’est pas complètement supprimé ; seules certaines dépendances ont été retirées pour permettre le calcul par scan parallèle.
      Il y a toujours un état caché.
      C’est assez similaire à ce qui a été fait dans Mamba.
    • En survolant rapidement, on dirait qu’ils ont ajusté la mise à jour de l’état pour pouvoir l’exécuter via un scan parallèle, sans avoir à l’exécuter séquentiellement.
    • L’astuce consiste à faire en sorte que la dépendance récursive reste linéaire, ce qui rend l’entraînement parallèle possible.