Explorez Lama 3
Introduction
Quoi de mieux que Lama 1 ? LLama 2. Quoi de mieux que LLama 2 ? LLama 3. Meta a récemment annoncé LLama 3, le grand modèle de langage open source de nouvelle génération. Llama 3 propose désormais des modèles de langage avancés avec des paramètres 8B et 70B. Ces modèles se sont avérés excellents dans diverses tâches et offrent de meilleures capacités de raisonnement. Le modèle est open source à des fins commerciales et permet à la communauté d'innover dans les applications d'IA, les outils de développement, etc. Cet article explore les capacités du modèle à l'aide des droplets GPU de DigitalOcean.
Le Llama 3 publie quatre modèles LLM de Meta, construits sur le framework Llama 2. Ces modèles sont disponibles en deux tailles : paramètres 8B et 70B, chacun comportant des versions de base (pré-entraînées) et optimisées pour les instructions. Ils sont conçus pour fonctionner correctement sur différents types de matériel grand public et offrent une longueur de contexte de 8 000 jetons.
- Meta-Llama-3-8b : modèle de base 8B
- Meta-Llama-3-8b-instruct : Instruire la version affinée du modèle de base 8b
- Meta-Llama-3-70b : modèle de base 70B
- Meta-Llama-3-70b-instruct : Instruire la version affinée du modèle de base 70b
Le document de recherche original n’a pas encore été publié. Cependant, Meta prétend publier le document prochainement.
Conditions préalables
- Matériel : GPU hautes performances (par exemple, NVIDIA A100 ou H100) avec au moins 16 Go de VRAM.
- Logiciel : Python 3.8+, PyTorch 2.x et bibliothèque Hugging Face Transformers.
- Environnement : boîte à outils CUDA et cuDNN installés pour l'accélération GPU.
- Poids du modèle : téléchargement des poids LLaMA 3 avec les autorisations de licence appropriées de Meta AI.
- Stockage : minimum 20 Go d'espace disque libre pour le modèle et les dépendances.
Améliorations de Llama 3
Les derniers modèles Llama 3 avec les paramètres 8B et 70B constituent un pas en avant considérable par rapport à Llama 2, établissant une nouvelle norme pour les grands modèles linguistiques. Ce sont les meilleurs modèles de leur catégorie, grâce à de meilleures méthodes de pré-entraînement et de réglage. Les améliorations post-formation ont considérablement réduit les erreurs et amélioré les performances des modèles en matière de raisonnement, de génération de code et de suivi des instructions. En bref, Llama 3 est plus avancé et flexible que jamais.
Référence de performance LLama 3 (Source)
Lors du développement de Llama 3, l'objectif principal était l'optimisation du modèle pour des situations réelles. Un ensemble d'évaluation de premier ordre a été créé avec 1 800 invites couvrant 12 tâches critiques : recherche de conseils, codage et résumé. De plus, les données de validation ont été utilisées en privé pour empêcher le surajustement du modèle. Les évaluations humaines comparant Llama 3 à d’autres modèles montrent des résultats prometteurs dans diverses tâches et scénarios.
Le graphique montre les résultats des évaluations humaines dans plusieurs catégories et des invites par rapport à Claude Sonnet, Mistral Medium et GPT-3.5. (Source)
Pour améliorer les capacités de Llama 3, Meta s’est concentré sur l’intensification du pré-entraînement et le perfectionnement des techniques post-entraînement.
L'intensification de la pré-formation impliquait le développement de lois de mise à l'échelle précises pour optimiser les fuites de données et l'utilisation des calculs. Étonnamment, même après une formation sur des quantités massives de données (jusqu'à 15 000 milliards de jetons), les modèles ont continué à s'améliorer. Diverses méthodes de parallélisation et clusters GPU personnalisés ont été combinés pour une formation efficace et une efficacité multipliée par trois par rapport à Llama 2.
Pour le réglage fin des instructions, différentes techniques telles que le réglage fin supervisé et l'optimisation des préférences ont été envisagées. De plus, une conservation minutieuse des données de formation et l’apprentissage à partir des classements de préférences ont considérablement amélioré les performances des modèles, en particulier dans les tâches de raisonnement et de codage. Ces avancées permettent aux modèles de mieux comprendre et de mieux répondre aux requêtes complexes.
Architecture du modèle
Lors de la conception de Llama 3, une configuration standard de transformateur, réservée uniquement au décodeur, a été installée. Par rapport à Llama 2, un tokeniseur efficace avec un vocabulaire de 128 000 jetons a contribué à améliorer les performances. De plus, pour rendre les modèles Llama 3 plus rapides lors de l'inférence, une attention de requête groupée (GQA) sur différentes tailles a été introduite. Au cours de la formation, des séquences de 8 192 jetons et une technique de masquage pour maintenir l’attention dans les limites du document ont été utilisées.
La création du meilleur modèle linguistique commence par un ensemble de données de formation de qualité supérieure. Pour Llama 3, plus de 15 000 milliards de jetons ont été sélectionnés à partir de sources accessibles au public, soit sept fois plus que ce qui a été utilisé pour Llama 2. Cet ensemble de données comprend même quatre fois plus de code. Ce modèle vise une utilisation multilingue en incluant plus de 5 % de données non anglaises, couvrant 30 langues, même si nous prévoyons que l'anglais surpassera toujours les autres.
Pour maintenir la qualité, des pipelines de filtrage de données robustes sont construits, l'utilisation de méthodes telles que les filtres heuristiques et les classificateurs de texte augmentant également les performances du modèle. Grâce à des expérimentations approfondies, les chercheurs garantissent que Llama 3 fonctionne bien dans diverses tâches, des anecdotes au codage et au-delà.
Démo de Lama 3
Avant de commencer, assurez-vous d'avoir accès au modèle « meta-llama/Meta-Llama-3-70B » sur huggingface.co
Pour utiliser Llama 3, nous allons d'abord commencer par mettre à jour le package Transformers.
#upgrade the transformer package
pip install -U "transformers==4.40.0" --upgrade
Ensuite, exécutez l'extrait de code suivant. Le billet de blog Hugging Face indique que le modèle nécessite généralement environ 16 Go de RAM, y compris des GPU tels que 3090 ou 4090.
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model="meta-llama/Meta-Llama-3-8B-Instruct",
model_kwargs={"torch_dtype": torch.bfloat16},
device="cuda",
)
pipeline("Hey how are you doing today?")
Si vous recevez l'erreur « RuntimeError : cutlassF : aucun noyau trouvé pour se lancer ! », essayez le code ci-dessous et exécutez à nouveau la cellule.
torch.backends.cuda.enable_mem_efficient_sdp(False)
torch.backends.cuda.enable_flash_sdp(False)
'generated_text' : « Hé, comment vas-tu aujourd'hui ? J'espère que vous passez une bonne journée jusqu'à présent ! Je viens de "
Peu de choses à garder à l'esprit ici,
- Dans notre exemple, nous avons utilisé « bfloat16 » pour charger le modèle. À l'origine, Meta utilisait « bfloat16 ». Il s'agit donc d'une méthode d'exécution recommandée pour garantir la meilleure précision ou pour effectuer des évaluations. Pour des cas concrets, essayez
float16
, qui peut être plus rapide en fonction de votre matériel. - On peut également compresser automatiquement le modèle, en le chargeant en mode 8 bits ou 4 bits. L'exécution en mode 4 bits nécessite moins de mémoire, ce qui le rend compatible avec de nombreuses cartes graphiques grand public et des GPU moins puissants. Vous trouverez ci-dessous un exemple d'extrait de code expliquant comment charger le pipeline en mode 4 bits.
pipeline = transformers.pipeline(
"text-generation",
model="meta-llama/Meta-Llama-3-8B-Instruct",
model_kwargs={
"torch_dtype": torch.float16,
"quantization_config": {"load_in_4bit": True},
"low_cpu_mem_usage": True,
},
)
L'avenir de Lama 3
Bien que les modèles 8B et 70B actuels soient impressionnants, les chercheurs Meta travaillent sur des modèles encore plus grands avec plus de 400B de paramètres. Ces modèles sont encore en formation. Dans les mois à venir, ils disposeront de nouvelles fonctionnalités intéressantes telles que la multimodalité, des capacités de conversation multilingues, une compréhension du contexte plus longue et des capacités globalement plus fortes.
Conclusion
Avec Llama 3, Meta s'est fixé pour objectif de créer les meilleurs modèles ouverts, comparables aux meilleurs modèles propriétaires disponibles aujourd'hui. La meilleure chose à propos de Meta's Llama 3 est sa philosophie open source consistant à publier tôt et souvent pour permettre à la communauté d'accéder à ces modèles pendant qu'ils sont encore en développement. Les modèles textuels publiés sont les premiers de la collection de modèles Llama 3. Comme l'a déclaré Meta, leur objectif principal est de rendre Llama 3 multilingue et multimodal, d'avoir un contexte plus étendu et de continuer à améliorer les performances globales dans les capacités de base du LLM telles que le raisonnement et le codage.
Nous avons hâte de voir la suite dans le domaine GenAI.
Références
- Welcome Llama 3 - Le nouveau LLM ouvert de Meta
- méta-lama/Meta-Llama-3-70B
- Dépôt original Llama-3
- Présentation de Meta Llama 3 : le LLM le plus performant disponible à ce jour