1 points par GN⁺ 2024-01-10 | 1 commentaires | Partager sur WhatsApp
  • Mixtral 8x7B est un modèle SMoE (Sparse Mixture of Experts) qui conserve l’architecture de base de Mistral 7B tout en remplaçant les blocs feedforward de chaque couche par 8 experts, et il est publié en open weights sous licence Apache 2.0
  • Pour chaque token, un routeur ne sélectionne que 2 experts sur 8 pour le calcul ; le modèle peut ainsi accéder à 47B de paramètres par token, tout en limitant à 13B les paramètres actifs à l’inférence
  • Il a été entraîné avec une fenêtre de contexte de 32k tokens et a montré des performances supérieures ou comparables à Llama 2 70B et GPT-3.5 sur l’ensemble des benchmarks évalués, avec une force particulière en mathématiques, génération de code et tâches multilingues
  • Mixtral 8x7B – Instruct est un modèle de chat entraîné au suivi d’instructions via fine-tuning supervisé et optimisation directe des préférences (DPO), et il surpasse GPT-3.5 Turbo, Claude-2.1, Gemini Pro et Llama 2 70B-chat en évaluation humaine
  • L’architecture à experts clairsemés permet d’augmenter le nombre total de paramètres tout en maîtrisant le coût de calcul par token, ce qui laisse espérer une inférence plus rapide à faible batch size et un débit plus élevé à grande batch size

Modèles publiés et performances sur les benchmarks

  • Mixtral 8x7B est un modèle open weights à mélange clairsemé d’experts (SMoE), disponible sous licence Apache 2.0 pour un usage académique et commercial
  • Le modèle de base ainsi que Mixtral 8x7B – Instruct pour le suivi d’instructions ont été publiés ensemble
  • Le code et une page web sont disponibles
  • Sur plusieurs benchmarks, il dépasse Llama 2 70B et GPT-3.5 ou atteint un niveau équivalent
  • Il montre de meilleures performances que Llama 2 70B sur les tâches nécessitant des mathématiques, de la génération de code et de la compréhension multilingue
  • Il a été confirmé qu’il peut retrouver l’information dans une fenêtre de contexte de 32k tokens, quelle que soit sa position et la longueur de la séquence

Architecture à mélange clairsemé d’experts

  • Mixtral est un transformer decoder-only qui remplace les blocs feedforward d’un transformer classique par des couches Mixture-of-Experts
  • Dans chaque couche, le réseau de routage sélectionne 2 experts parmi 8 pour chaque token
    • Les sorties des experts sélectionnés sont combinées par somme pondérée
    • Le choix des experts peut varier à chaque pas de temps
  • Un token peut accéder à 47B de paramètres, mais les paramètres actifs réellement utilisés à l’inférence sont de 13B
  • Cette architecture vise à augmenter le nombre total de paramètres du modèle tout en contrôlant le coût de traitement par token et la latence

Mode de calcul des couches MoE

  • La sortie du module MoE est calculée comme une somme pondérée des sorties des réseaux d’experts, avec des poids déterminés par le réseau de gating
  • Si le vecteur de gating est clairsemé, il n’est pas nécessaire de calculer la sortie des experts dont la valeur de gate est nulle
  • Mixtral applique softmax aux K logits les plus élevés de la couche linéaire
    • K est un hyperparamètre qui détermine le nombre d’experts utilisés par token
    • Dans Mixtral, K = 2
  • En augmentant le nombre d’experts n tout en gardant K fixe, il est possible d’augmenter le nombre total de paramètres tout en maintenant pratiquement constant le coût de calcul par token
  • Cela sépare donc le nombre total de paramètres clairsemés du nombre de paramètres actifs utilisés pour traiter chaque token

Implémentation et efficacité en inférence

  • Les couches MoE peuvent être exécutées efficacement sur un seul GPU grâce à des kernels spécialisés
  • Megablocks accélère l’exécution en représentant les opérations FFN des couches MoE comme une grande multiplication de matrices creuses, et gère aussi les cas où le nombre de tokens affectés à chaque expert varie
  • Les couches MoE peuvent être distribuées sur plusieurs GPU via le parallélisme de modèle standard et le parallélisme d’experts (Expert Parallelism)
    • Les tokens à traiter par un expert donné sont routés vers le GPU correspondant
    • Les sorties des experts sont renvoyées à leur position de token d’origine
  • En parallélisme d’experts, un équilibrage de charge est nécessaire afin de répartir uniformément le travail entre GPU
  • Afin de pouvoir exécuter Mixtral sur une stack entièrement open source, une modification intégrant les kernels CUDA de Megablocks au projet vLLM a été proposée, et Skypilot prend en charge le déploiement d’endpoints vLLM sur des instances cloud

Modèle Instruct et caractéristiques d’évaluation

  • Mixtral 8x7B – Instruct est un modèle de chat entraîné au suivi d’instructions via fine-tuning supervisé et optimisation directe des préférences (DPO)
  • Sur les benchmarks d’évaluation humaine, il obtient de meilleures performances que GPT-3.5 Turbo, Claude-2.1, Gemini Pro et Llama 2 70B-chat
  • Sur des benchmarks comme BBQ et BOLD, il présente moins de biais et un profil de sensibilité plus équilibré
  • Grâce à son architecture clairsemée, on peut attendre une vitesse d’inférence plus élevée à faible batch size et un débit supérieur à grande batch size
  • Il se distingue structurellement de GShard en ce qu’il remplace tous les sous-blocs FFN par des couches MoE, alors que GShard n’en remplace qu’une partie

1 commentaires

 
GN⁺ 2024-01-10
Avis sur Hacker News
  • Cet article détaille un modèle rendu public et utilisé depuis environ un mois. Mixtral 8x7B est vraiment excellent : il a grosso modo la taille d’un modèle 13B, mais il est évalué bien plus haut que les modèles de taille comparable dans des classements comme https://www.reddit.com/r/LocalLLaMA/comments/1916896/llm_com...
    Ravenwolf a indiqué que ce modèle se comportait en pratique un peu mieux que ne le suggéraient certains benchmarks, et mon expérience va dans le même sens. Pour un modèle de cette taille, il est étonnamment bon, et largement suffisant pour un usage quotidien sur Mac en chat, en saisie de code et pour d’autres usages
    Ce qui est apparu après la publication des poids, c’est qu’il est assez probable que les 8 experts aient tous été initialisés à partir de Mistral 7B, puis aient divergé ensuite. C’est pourquoi la communauté des LLM locaux mène beaucoup d’expériences consistant à cloner le modèle pour créer des experts à moindre coût
    On pensait généralement qu’entraîner un réseau 8x7B demanderait autant de travail qu’entraîner huit réseaux 7B, mais il semble que ce n’ait pas été le cas pour Mistral, ce qui est très intéressant
    Avec la publication continue d’articles comme Calm de DeepMind, et d’expériences combinant des couches à la volée comme Goliath-120b, il paraît très probable que l’on voie cette année des améliorations d’architecture assez intéressantes côté LLM. Calm semble indiquer l’étape suivante après les MoE, et des modèles comme Goliath montrent qu’une mise en œuvre très paresseuse de Calm — simplement alterner des couches entières de poids, sans combinaison linéaire des couches — peut déjà produire un effet important
    Dans l’ensemble, en 2024, probablement dès le premier semestre, on devrait voir de puissants modèles tourner avec de bonnes performances sur du matériel grand public

    • Moi aussi, j’ai obtenu de très bons résultats avec Mixtral, c’est vraiment impressionnant. Le problème, c’est que c’est un modèle relativement gros, donc difficile à faire tourner en inférence entièrement sur GPU sur du matériel grand public. Ce n’est pas comme les modèles 7B/13B que les gens utilisent habituellement
      Jusqu’ici, les principales plateformes grand public capables de le faire tourner sans quantification trop agressive au point de dégrader la qualité de sortie semblent être les Mac Apple Silicon récents avec mémoire unifiée, en général à partir de 48 Go. On dit que c’est possible aussi avec 32 Go ou 36 Go, mais il n’y a pas beaucoup de marge
      Comme l’a souligné coder543, une configuration multi-GPU avec suffisamment de VRAM cumulée permettrait de l’exécuter sans recourir à une quantification plus destructrice
    • Mixtral est bon, mais le benchmark de Ravenwolf n’a aucun sens. On dirait une personne quelconque qui essaie de réinventer MMLU en allemand, sans rigueur ni cohérence
      La contamination des jeux de données est un problème, mais ce n’est pas en demandant des astuces sur un subreddit et en évaluant les LLM de manière folklorique qu’on le résoudra
    • J’attends avec impatience les annonces matérielles. Des produits conçus explicitement pour l’accélération de LLM on-device grand public semblent clairement approcher
    • Je suis vraiment curieux de voir quand on aura un MoE basé sur des modèles plus petits, comme Phi-2
  • Ce qui ressort avec ce modèle, c’est que son nombre de paramètres utilisés est aussi bas que celui d’un 13B : il peut donc tourner de manière fluide et en haute qualité sur une 3090, tout en battant GPT-3.5 sur HumanEval et en offrant aussi un contexte de 32k
    La 3090 est une carte grand public et courante dans les PC de gaming. J’aimerais que les développeurs de jeux commencent à expérimenter l’intégration de Mixtral déployé localement dans leurs jeux. Par exemple, dans un jeu comme Civilization, chaque dirigeant pourrait être piloté par un LLM

    • Mixtral peut tourner à une vitesse de génération de tokens correcte sur les Apple MacBook Pro M1/M2/M3 sortis depuis 2020, à condition d’avoir 32 Go de RAM ou plus. Avec 16 Go de RAM, ça marche aussi dans une certaine mesure, mais sans doute avec une quantification similaire à celle utilisée sur une 3090, et la différence de quantification se ressent
      Sur mon M2 Pro, la vitesse de génération et l’intelligence me donnent l’impression d’utiliser GPT-3.5 Turbo. C’est le premier modèle que j’ai commencé à utiliser réellement à la place de GPT-3.5, au-delà du simple fait de jouer avec parce que la technologie est sympa
      Un Apple M2 Pro avec 32 Go de RAM est dans la même gamme de prix qu’un PC de gaming équipé d’une 3090 ; c’est donc un autre exemple où des gens ordinaires disposant d’un système raisonnablement performant peuvent, « par hasard », faire tourner un modèle comparable à GPT-3.5
      Si vous avez un appareil Apple qui remplit ces conditions et que vous voulez expérimenter, LLM Studio est open source et facilite la prise en main : https://lmstudio.ai/
      J’espère que Mixtral et les modèles qui suivront encourageront beaucoup plus de bricolage expérimental
    • Selon Google, le prix d’une RTX 3090 se situe entre 1 480 et 1 680 dollars
      Pour cette somme, on peut acheter un PC complet ; j’ai donc du mal à croire qu’un GPU aussi cher soit « grand public » et « courant »
      Existe-t-il des GPU adaptés aux LLM ou à d’autres IA génératives qui ne soient pas absurdement chers ? Ou bien des produits spécialement conçus pour l’IA plutôt que pour les graphismes de jeux ?
    • Il est aussi important de noter qu’un modèle en quantification 4 bits peut tourner sur CPU à une vitesse proche de la lecture. En particulier, si certains résultats peuvent être précalculés de façon asynchrone, cela peut ouvrir de nombreux cas d’usage
    • J’expérimente l’utilisation de modèles locaux comme agents, et les personnes intéressées devraient connaître la fonctionnalité « grammars » de llama.cpp. Elle permet de forcer la sortie du modèle à respecter une structure donnée, ce qui est utile non seulement pour garantir une sortie JSON valide, mais aussi pour imposer des contraintes plus précises du type « si x est choisi, alors y doit obligatoirement être fourni »
      Par exemple, on peut demander à un acteur qui planifie à l’avance de répondre à trois éléments arbitraires parmi les 5W, tout en le laissant écrire librement dans les valeurs de chaîne JSON, afin de s’en servir ensuite comme contexte pour choisir dans un ensemble d’actions limité. Ou encore permettre au modèle de demander plus de temps de réflexion à la fin de sa réponse, mais l’obliger à indiquer l’action suivante s’il ne le demande pas
      À mon avis, cela n’a pas d’impact sur la vitesse de génération et peut être utilisé de manière très créative. En revanche, si la sortie est tronquée, il peut être nécessaire de régénérer, et j’ai dû écrire une fonction séparée qui s’arrête dès qu’un objet JSON valide est fermé, ou lorsque plus de cinq sauts de ligne consécutifs sont générés. Cela peut varier selon les modèles
    • L’utilisation de VRAM est plus proche de celle d’un modèle 47B. Même si seulement deux experts sont utilisés à la fois pendant l’inférence, tous les experts sont nécessaires pour produire la complétion
  • Si vous voulez essayer ce modèle, ce sera probablement l’une des versions distribuées par Mozilla/jart sous forme de Llamafile

    1. Télécharger le llamafile (30,03 Go) : https://huggingface.co/jartine/Mixtral-8x7B-Instruct-v0.1-ll...
    2. chmod +x mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile
    3. ./mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile
      [0] https://hacks.mozilla.org/2023/11/introducing-llamafile/
      [1] https://github.com/Mozilla-Ocho/llamafile#quickstart
  • Sur Mac Silicon, c’est possible avec Ollama
    https://ollama.ai/
    ollama pull mixtral
    Si vous voulez une interface web façon ChatGPT : https://github.com/ollama-webui/ollama-webui
    docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v ollama-webui:/app/backend/data --name ollama-webui --restart always ghcr.io/ollama-webui/ollama-webui:main
    Il suffit ensuite d’aller sur http://localhost:3000. Ollama peut aussi être utilisé avec LangChain

    • Il existe aussi quelques fine-tunings débridés. Dolphin semble assez populaire et a été entraîné davantage sur des données de code. Si vous voulez rester sous 32 Go, il y a https://ollama.ai/library/dolphin-mixtral:8x7b-v2.7-q3_K_M
    • Sur Mac M1, je ne pense pas qu’on utilise Ollama, ni aucun autre hébergeur de LLM, via Docker. À ma connaissance, il n’y a toujours pas de prise en charge de Metal
  • Articles récents liés
    Mixtral of experts - https://news.ycombinator.com/item?id=38598559 - décembre 2023, 300 commentaires
    Mistral-8x7B-Chat - https://news.ycombinator.com/item?id=38594578 - décembre 2023, 69 commentaires
    Mistral "Mixtral" 8x7B 32k model [magnet] - https://news.ycombinator.com/item?id=38570537 - décembre 2023, 239 commentaires

  • Mixtral devance notamment largement Llama 2 70B sur les benchmarks de mathématiques, de génération de code et multilingues
    Je suis curieux de voir ses performances en maths. Les maths ont toujours semblé être un point faible évident, et un domaine que personne n’a encore vraiment réussi à traiter efficacement

    • Les maths sont, dans une certaine mesure, une faiblesse intrinsèque des LLM. La prédiction du mot suivant n’a pas été conçue à l’origine pour exceller en mathématiques
      Je ne pense pas que de meilleurs LLM suffisent à « résoudre » ce problème ; cela ne sera probablement possible qu’avec des modèles multimodaux ayant accès à l’exécution de programmes et à des calculatrices
  • Je n’ai pas lu énormément d’articles sur les LLM, mais je trouve que celui-ci est assez faible, avec peu de détails. Je parle bien de l’article lui-même, pas des résultats du LLM
    S’il était arrivé sur mon bureau pour relecture, je l’aurais probablement renvoyé rien que pour cette raison. Par exemple, il n’explique pas vraiment comment les experts ont été entraînés ni quels jeux de données ont été utilisés
    Est-ce la norme actuelle dans ce domaine ?

    • Cela devient assez courant. Les deux éléments mentionnés, à savoir les détails d’entraînement et le mélange de jeux de données, sont en pratique les seuls avantages concurrentiels que possèdent les entreprises
      Le code et l’architecture étant faciles à reproduire, toute organisation disposant de suffisamment d’argent peut « facilement » créer un modèle concurrent
      OpenAI a lancé cette tendance, puis l’a entérinée avec le « rapport technique » de GPT-4, qui ne précisait même pas le nombre de paramètres du modèle. Concernant les jeux de données, ils étaient déjà flous depuis bien plus longtemps
    • Oui, je pense pareil. En fait, je m’attends à ce qu’ils aient entraîné chaque expert séparément, puis l’ensemble, puisqu’il faut aussi entraîner le réseau de routage
      Je ne suis pas du tout spécialiste des LLM, mais ce serait intéressant, notamment de savoir comment les différents paramètres d’entraînement influencent les performances
  • Je me demande quand des modèles multimodaux accessibles publiquement commenceront à apparaître
    Les progrès des modèles uniquement textuels ont été impressionnants, mais beaucoup des comportements « émergents » de GPT-4 pourraient être dus non seulement au MoE ou au nombre de paramètres, mais aussi à l’apprentissage multimodal
    Je me demande si l’on observera un bond similaire avec des modèles multimodaux plus petits

    • LLaVA est public. Cela dit, ce n’est peut-être pas le bond attendu : https://llava-vl.github.io/
      Meta a aussi publié, sous licence non commerciale, un modèle multimodal reliant 6 modalités : https://ai.meta.com/blog/imagebind-six-modalities-binding-ai...
    • D’après un bref test, CogVLM était très bon : https://github.com/THUDM/CogVLM
      Les poids du modèle étant sous licence non commerciale, ce n’est apparemment pas vraiment de l’open source, mais cela correspond bien à « l’accès public » demandé
      Ce serait bien que quelqu’un entraîne from scratch un modèle compatible avec CogVLM sous licence open source
    • D’après ce que j’ai entendu de personnes chez les FAANG, Google avait pris de l’avance sur OpenAI sur ce point, et OpenAI est en train de rattraper un peu son retard. Bien sûr, côté langage, OpenAI garde toujours un net avantage. Tout cela est de seconde main
  • Je me demande si l’on peut exécuter ce modèle avec les outils LLM de Simon Willison. Je n’ai pas trouvé de mention de Mixtral dans les issues ni les discussions
    À part ça, existe-t-il un moyen simple d’essayer ce modèle en ligne de commande ?

  • Dans une récente interview sur le podcast A16Z, le fondateur de Mistral a déclaré qu’ils avaient en interne plusieurs modèles d’une qualité située entre ChatGPT et GPT-4
    Vu la qualité de ce qui a été publié jusqu’à présent, la période s’annonce intéressante pour les LLM open source

    • Cela dit, rien n’indique que les modèles Mistral plus puissants seront eux aussi publiés en FOSS