La Grosse Conf 2024 - Open-source AI with HuggingFace
La genèse de l’IA générative
L’open-source, c’est le cœur de l’activité de Hugging Face. Devenu en quelques années un acteur incontournable de la communauté IA dans le monde, le “github du machine learning” comme certains s’amusent à l’appeler, a un rôle majeur dans la démocratisation de l’intelligence artificielle générative.
Julien Simon est Chief Evangelist chez Hugging Face depuis 2021, un rôle qu’il avait occupé précédemment chez AWS pendant 6 ans. Avant cela, il est passé par des grands noms du secteur de la tech, comme Criteo, Aldebaran, ou Viadeo pour ne citer qu’eux, où il a occupé les postes de CTO et VP engineering.
Julien Simon - Chief Evangelist chez Hugging Face à la Grosse Conf’
Il nous incite à commencer notre voyage dans l’IA générative moderne avec la lecture de l’article “Attention Is All You Need”, qui introduit l’architecture Transformers en deep learning. Celle-ci est au centre de tous les modèles à l’état de l’art aujourd’hui. En quelques années, les transformers ont remplacé toutes les architectures dites “classiques” en deep learning, comme les LSTM, CNN, tant l’écart de performance était grand. Aujourd’hui ils sont partout. Loin d’être des curiosités de laboratoires, ces modèles sont en production depuis des années dans les grands groupes de la tech. Julien Simon nous parle notamment de BERT (dont le T signifie … Transformers) qui améliorent la pertinence des recherches Google aujourd’hui. Les modèles actuels d’intelligence artificielle générative sont les derniers nés de cette rupture technologique et sont déjà connus du grand public. Parmi eux, Github Copilot, Llama, et l’incontournable ChatGPT.
Hugging Face et l’open-source dans tout ça
L’entreprise regroupe l’ensemble des ressources open-source pour faire de l’IA aujourd’hui : modèles, datasets, librairies, intégration cloud, accélérateurs… Avec des partenaires comme Google, AWS, Microsoft ou encore Nvidia, Hugging Face construit la plateforme centralisée pour rendre l’état de l’art en IA open-source accessible et intégrable pour tous. Plus précisément, Hugging Face héberge maintenant plus d’un demi-million de modèles sur son Hub. En plus de cela, le site propose les “Spaces” des espaces dédiés pour que les organisations exposent leurs modèles, ainsi que les Inference Endpoints pour déployer ces modèles sur un cloud partenaire, ou on-premises. Ils contribuent également à la communauté open-source avec des modèles comme StarCoder et maintenant StarCoder 2, référence dans la génération de code, ainsi qu’un chat entièrement open-source nommé HuggingChat. Leur objectif est que chacun puisse travailler avec leurs modèles de manière optimale, peu importe l’environnement.
Julien Simon nous montre ensuite plusieurs exemples concrets de code pour utiliser les librairies Hugging Face. Grâce à leurs pipelines haut niveau, il est possible d’utiliser des modèles de deep learning parmi les plus sophistiqués en quelques lignes de code.
Il en est persuadé, l’open-source est l’option privilégiée pour implémenter des solutions à l’état de l’art. Il met notamment en avant les points suivants :
- L’accessibilité : tous les modèles du Hub sont aussi des repository Git, il est très simple de télécharger les poids
- La transparence : les utilisateurs ont accès à l’architecture des modèles et la méthodologie d’entraînement
- La confidentialité : le niveau de contrôle permet de déployer les modèles sur vos infrastructures et d’être indépendant d’API en boîte noire.
- La propriété des modèles : les utilisateurs sont indépendants de fournisseurs externes, ils possèdent les modèles qu’ils utilisent.
- La liberté de choix : les utilisateurs peuvent changer de modèles quand ils le souhaitent
- La flexibilité : les utilisateurs peuvent déployer n’importe où
Certes mais quid de la performance ? Julien Simon enfonce le clou :
“Un bon modèle open-source fine-tuné sur des données de qualité va presque systématiquement dépasser un gros modèle générique”
Pour lui, c’est la somme de tous ces éléments qui est la source de l’adoption et la satisfaction de leurs clients.
Comment choisir un modèle ?
Comment choisir parmi le demi-million de modèles disponibles sur Hugging Face Hub ? La plateforme propose différents leaderboards. Le plus connu est le open llm leaderboard qui recense les performances des LLM disponibles. Utilisé conjointement avec le performance leaderboard, il permet aux utilisateurs d’avoir une vision à la fois des performances métiers et techniques des modèles. Il existe même une variante de ces boards pour les modèles d’embeddings, redevenus “cool” dernièrement avec le RAG.
Cependant, Julien Simon a une vision pragmatique des modèles. Pour lui, ce sont des outils interchangeables. Il convient de choisir le meilleur à l’instant T mais l’état de l’art évolue si vite qu’il faut savoir s’en séparer pour évoluer. Il nous énonce le principe du rasoir d'Ockham appliqué au machine learning,
“Utilisez [...] le plus petit modèle qui va faire le job !”.
Cela afin de maximiser le retour sur investissement. Pour lui, la performance ne vient pas du modèle mais des données. Ce sont ces dernières qui ont de la valeur. Les modèles sont un coût, ils changent vite, les datasets sont un investissement, ils pourront encore servir dans 30 ou 40 ans. Il conclut :
“Moins de data scientists, plus de data engineer !”
Des LLM toujours plus rapides et performants
Comment libérer tout le potentiel des LLM ?
D’abord commencer par faire du RAG. Vous pouvez obtenir un gain de performance important pour un coût bien moindre que le fine tuning. Il ne faut pas se servir du LLM comme d’une source de données mais comme d’un assistant à la réflexion. Il suffit donc d’avoir un modèle capable de comprendre et rédiger. C’est faisable avec de “petits modèles” de moins de 7 milliards de paramètres. Hugging Face observe même des performances impressionnantes chez ses clients avec des modèles encore plus petits, de 2 ou 3 milliards de paramètres.
Julien Simon s’exprime ensuite sur les fenêtres de contexte des LLM i.e le nombre de tokens qu’ils peuvent lire en une fois. Un token est une unité de langage qui vaut grossièrement ¾ d’un mot. Celle-ci n’a cessé d’augmenter dernièrement. On a vu gpt4-turbo avec une fenêtre de 128k tokens, puis claude2 avec 200k et enfin gemini 1.5 pro avec 1M. Pour lui, il s’agit d’un non-sens. Il nous rappelle qu’un roman standard fait environ 100000 mots, et doute très fortement qu’il existe un cas d’usage pertinent où il faudrait lire une dizaine de romans à chaque appel du LLM. Cela sans même compter les temps de latence qui peuvent atteindre plusieurs minutes… Si le RAG ne suffit pas, il peut être nécessaire de spécialiser le modèle sur le domaine métier. Jusqu'en septembre dernier, le fine tuning de LLM était trop complexe et coûteux. Depuis, le coût a été réduit par 1000 grâce à des méthodes comme LoRA, QLoRA. Pour lui la tendance à utiliser des modèles trop gros et trop complexes est le facteur numéro un qui empêche un PoC de passer en production. En effet, l’inférence représente 80-90% du coût d’un projet. Souvent, on l’oublie au profit de l’entraînement en phase de PoC mais c’est bien celle-ci qui va déterminer la réussite ou non d’un projet en production.
Il nous encourage à chercher des alternatives au déploiement sur GPU haut de gamme comme les Nvidia A100. Si nous travaillons avec de petits modèles, comme il nous pousse à le faire, il est inutile d’utiliser autant de ressources. Des alternatives sérieuses comme les AMD MI300 ou Nvidia A10G peuvent être envisagées. L’inférence sur CPU est également de plus en plus intéressante et accessible.
Pour aller plus loin sur l’accélération de modèles, il nous redirige vers ses précédentes interventions disponibles sur youtube : https://www.youtube.com/juliensimonfr
Julien Simon conclut sa présentation avec des exemples concrets d’optimisation sur différentes plateformes, rendus possibles par Hugging Face et ses partenaires. Pour commencer, il est possible depuis la sortie de PyTorch 2 d’accélérer l’inférence des modèles de 20% à 30% grâce à la compilation. Cela est possible sur CPU et GPU avec une seule ligne de code ! Même simplicité avec AMD, le code est identique à celui utilisé pour Nvidia. Le coût de migration est donc nul pour les utilisateurs qui souhaitent profiter de cette accélération. Il met l’accent sur l’inférence sur CPU. En effet, contrairement aux GPU, ceux-ci sont disponibles partout et en grande quantité. Grâce à la librairie optimum-intel, il est facile d’aller chercher tout leur potentiel pour l’inférence en local. Dans la famille des librairies optimum, développées par Hugging Face pour l’optimisation, on trouve aussi optimum neuron. Cette dernière permet de bénéficier de l’accélération des puces inferentia développées par AWS spécifiquement pour l’inférence de grands modèles. Avec toujours la simplicité et l’accessibilité en tête, Hugging Face rend l’optimisation transparente. Cela ne demande souvent qu’une ligne de code !
Pour appuyer ses propos, Julien Simon nous fait une démonstration avec un modèle phi2 sur un ordinateur de milieu de gamme accessible au grand public. Il s’agit d’un petit modèle de langage, en effet il ne comporte “que” 2 milliards de paramètres contre plusieurs dizaines pour les modèles à l’état de l’art. Malgré sa taille, c’est un modèle compétitif, spécialement entraîné pour produire des raisonnements mathématiques. Il nous le prouve avec une question qui nécessite une compréhension des lois de la physique : “Lily has a rubber ball that she drops from the top of a wall. The wall is 2 meters tall. How long will it take for the ball to reach the ground?”. Devant nous, le modèle commence à écrire des équations qui impliquent une bonne maîtrise de la première loi de Newton, pour finalement nous répondre “0,64 seconds”. C’est correct. Tout cela sur CPU et en quelques secondes. CQFD.
Take away
Pour terminer, Julien Simon nous rappelle les points suivants :
- Ne restez pas fixé sur le “meilleur” modèle, ça change toutes les semaines
- Choisissez un modèle par cas d’usage, no free lunch
- Un petit modèle avec des données de bonne qualité vous apportera plus qu’un gros modèle générique
- C’est l’optimisation de l’inférence qui va générer votre ROI, beaucoup plus que le modèle
“Le futur est ouvert, le futur est open-source”