Introduction | Installation | Commencer | Documents | Communauté | Licence | Citer la torche
Important
Mise à jour du 25 septembre 2024 : torchtune prend en charge les modèles Llama 3.2 11B Vision , Llama 3.2 3B et Llama 3.2 1B ! Essayez-les en suivant nos instructions d'installation ici, puis exécutez l'une des configurations de texte ici ou les configurations de vision ici.
torchtune est une bibliothèque PyTorch permettant de créer, peaufiner et expérimenter facilement des LLM.
torchtune fournit :
Implémentations PyTorch des LLM populaires des familles de modèles Llama, Gemma, Mistral, Phi et Qwen
Recettes de formation piratables pour un réglage complet, LoRA, QLoRA, DPO, PPO, QAT, distillation des connaissances, etc.
Efficacité de la mémoire prête à l'emploi, améliorations des performances et mise à l'échelle avec les dernières API PyTorch
Configurations YAML pour configurer facilement des recettes de formation, d'évaluation, de quantification ou d'inférence
Prise en charge intégrée de nombreux formats d'ensembles de données et modèles d'invite populaires
torchtune prend actuellement en charge les modèles suivants.
Modèle | Tailles |
---|---|
Lama3.2-Vision | 11B [modèles, configurations] |
Lama3.2 | 1B, 3B [modèles, configurations] |
Lama3.1 | 8B, 70B, 405B [modèles, configurations] |
Lama3 | 8B, 70B [modèles, configurations] |
Lama2 | 7B, 13B, 70B [modèles, configurations] |
Code-Llama2 | 7B, 13B, 70B [modèles, configurations] |
Mistral | 7B [modèles, configurations] |
Gemme | 2B, 7B [modèles, configurations] |
Microsoft Phi3 | Mini [modèles, configurations] |
Qwen2 | 0,5B, 1,5B, 7B [modèles, configurations] |
Nous ajoutons toujours de nouveaux modèles, mais n'hésitez pas à signaler un problème si vous aimeriez en voir un nouveau dans Torchtune.
torchtune fournit les recettes de réglage suivantes pour la formation sur un ou plusieurs appareils.
Méthode de réglage fin | Appareils | Recette | Exemples de configuration(s) |
---|---|---|---|
Mise au point complète | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B mono-appareil Lama 3.1 70B distribué |
Réglage fin de LoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0,5B mono-appareil Gemma 7B distribué |
Réglage fin de QLoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Phi3 Mini mono-appareil Lama 3.1 405B distribué |
Réglage fin DoRA/QDoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Llama3 8B QDoRA mono-appareil Llama3 8B DoRA distribué |
Formation basée sur la quantification | 4-8 | qat_distribué | Lama3 8B QAT |
Optimisation des préférences directes | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B mono-appareil Lama2 7B distribué |
Optimisation des politiques proximales | 1 | ppo_full_finetune_single_device | Mistral7B |
Distillation des connaissances | 1 | knowledge_distillation_single_device | Qwen2 1,5B -> 0,5B |
Les configurations ci-dessus ne sont que des exemples pour vous aider à démarrer. Si vous voyez un modèle ci-dessus non répertorié ici, nous le prenons probablement toujours en charge. Si vous ne savez pas si quelque chose est pris en charge, veuillez ouvrir un ticket sur le dépôt.
Vous trouverez ci-dessous un exemple des besoins en mémoire et de la vitesse d'entraînement pour différents modèles de Llama 3.1.
Note
Pour faciliter la comparaison, tous les chiffres ci-dessous sont fournis pour une taille de lot 2 (sans accumulation de gradient), un ensemble de données compressé jusqu'à une longueur de séquence de 2 048 et une compilation au chalumeau activée.
Si vous souhaitez fonctionner sur un matériel différent ou avec des modèles différents, consultez notre documentation sur les optimisations de mémoire ici pour trouver la configuration qui vous convient.
Modèle | Méthode de réglage fin | Exécutable sur | Mémoire maximale par GPU | Jetons/s * |
---|---|---|---|---|
Lama 3.1 8B | Mise au point complète | 1x4090 | 18,9 Gio | 1650 |
Lama 3.1 8B | Mise au point complète | 1xA6000 | 37,4 Gio | 2579 |
Lama 3.1 8B | LoRA | 1x4090 | 16,2 Gio | 3083 |
Lama 3.1 8B | LoRA | 1xA6000 | 30,3 Gio | 4699 |
Lama 3.1 8B | QLoRA | 1x4090 | 7,4 Gio | 2413 |
Lama 3.1 70B | Mise au point complète | 8x A100 | 13,9 Gio ** | 1568 |
Lama 3.1 70B | LoRA | 8x A100 | 27,6 Gio | 3497 |
Lama 3.1 405B | QLoRA | 8x A100 | 44,8 Go | 653 |
*= Mesuré sur une période d'entraînement complète
**= Utilise le déchargement du processeur avec l'optimiseur fusionné
torchtune est testé avec la dernière version stable de PyTorch ainsi qu'avec la version préliminaire nocturne. torchtune exploite torchvision pour affiner les LLM multimodaux et torchao pour les dernières techniques de quantification ; vous devriez également les installer.
# Installer stable PyTorch, torchvision, torchao stable releasespip installer torch torchvision torchao pip installer torchtune
# Installez PyTorch, torchvision, torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # les options complètes sont cpu/cu118/cu121/cu124pip install --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
Vous pouvez également consulter notre documentation d'installation pour plus d'informations, y compris l'installation de torchtune à partir des sources.
Pour confirmer que le package est correctement installé, vous pouvez exécuter la commande suivante :
régler --help
Et devrait voir le résultat suivant :
utilisation : tune [-h] {ls,cp,download,run,validate} ... Bienvenue dans les options CLI! de torchtune : -h, --help afficher ce message d'aide et quitter...
Pour démarrer avec torchtune, consultez notre premier didacticiel Finetune. Notre didacticiel de workflow de bout en bout vous montrera comment évaluer, quantifier et exécuter l'inférence avec un modèle Llama. Le reste de cette section fournira un aperçu rapide de ces étapes avec Llama3.1.
Suivez les instructions sur le référentiel officiel meta-llama
pour vous assurer d'avoir accès aux poids officiels des modèles Llama. Une fois l'accès confirmé, vous pouvez exécuter la commande suivante pour télécharger les poids sur votre ordinateur local. Cela permettra également de télécharger le modèle de tokenizer et un guide d'utilisation responsable.
Pour télécharger Llama3.1, vous pouvez exécuter :
tune télécharger méta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --ignore-patterns "original/consolidated.00.pth" --hf-token
Conseil
Définissez votre variable d'environnement HF_TOKEN
ou transmettez --hf-token
à la commande afin de valider votre accès. Vous pouvez trouver votre jeton sur https://huggingface.co/settings/tokens
Vous pouvez affiner Llama3.1 8B avec LoRA sur un seul GPU à l'aide de la commande suivante :
tune run lora_finetune_single_device --config llama3_1/8B_lora_single_device
Pour la formation distribuée, tune CLI s'intègre à torchrun. Pour exécuter un réglage complet de Llama3.1 8B sur deux GPU :
tune run --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
Conseil
Assurez-vous de placer toutes les commandes torchrun avant la spécification de la recette. Tous les arguments CLI après cela remplaceront la configuration et n’auront pas d’impact sur la formation distribuée.
Il existe deux manières de modifier les configurations :
Remplacements de configuration
Vous pouvez directement écraser les champs de configuration à partir de la ligne de commande :
régler exécuter lora_finetune_single_device --config lama2/7B_lora_single_device batch_size = 8 activate_activation_checkpointing=Vrai max_steps_per_epoch=128
Mettre à jour une copie locale
Vous pouvez également copier la configuration dans votre répertoire local et modifier directement le contenu :
régler cp llama3_1/8B_full ./my_custom_config.yaml Copié dans ./my_custom_config.yaml
Ensuite, vous pouvez exécuter votre recette personnalisée en dirigeant la commande tune run
vers vos fichiers locaux :
tune run full_finetune_distributed --config ./my_custom_config.yaml
Consultez tune --help
pour toutes les commandes et options CLI possibles. Pour plus d’informations sur l’utilisation et la mise à jour des configurations, jetez un œil à notre analyse approfondie des configurations.
torchtune prend en charge le réglage fin d'une variété d'ensembles de données différents, notamment les ensembles de données de style instruction, de style chat, de préférences, etc. Si vous souhaitez en savoir plus sur la façon d'appliquer ces composants pour affiner votre propre ensemble de données personnalisé, veuillez consulter les liens fournis ainsi que nos documents API.
torchtune se concentre sur l'intégration avec les outils et bibliothèques populaires de l'écosystème. Ce ne sont là que quelques exemples, d’autres étant en cours de développement :
Hugging Face Hub pour accéder aux poids des modèles
Harnais d'évaluation LM d'EleutherAI pour évaluer les modèles formés
Ensembles de données Hugging Face pour accéder aux ensembles de données de formation et d'évaluation
PyTorch FSDP2 pour la formation distribuée
torchao pour les types de précision inférieure et les techniques de quantification post-formation
Pondérations et biais pour l'enregistrement des métriques et des points de contrôle, ainsi que pour le suivi des progrès de la formation
Comet comme autre option pour l'enregistrement
ExecuTorch pour l'inférence sur l'appareil à l'aide de modèles affinés
bits et octets pour les optimiseurs de mémoire faible pour nos recettes mono-appareil
PEFT pour un réglage continu ou une inférence avec des modèles torchtune dans l'écosystème Hugging Face
Nous apprécions vraiment notre communauté et les contributions apportées par nos merveilleux utilisateurs. Nous utiliserons cette section pour citer certaines de ces contributions. Si vous souhaitez également aider, veuillez consulter le guide CONTRIBUTION.
@SalmanMohammadi pour avoir ajouté une recette complète de bout en bout pour le réglage fin de l'apprentissage par renforcement à partir de la rétroaction humaine (RLHF) avec PPO pour peaufiner le flambeau
@fyabc pour l'ajout de modèles Qwen2, d'un tokenizer et de l'intégration de recettes à torchtune
@solitude-alive pour avoir ajouté le modèle Gemma 2B au torchtune, y compris les modifications de recettes, les validations numériques des modèles et l'exactitude des recettes
@yechenzhi pour l'ajout de l'optimisation des préférences directes (DPO) à torchtune, y compris la recette et la configuration ainsi que les contrôles d'exactitude
Le code Llama2 de ce référentiel est inspiré du code Llama2 original.
Nous tenons à remercier chaleureusement EleutherAI, Hugging Face et Weights & Biases pour avoir été de merveilleux collaborateurs et pour avoir travaillé avec nous sur certaines de ces intégrations dans torchtune.
Nous souhaitons également remercier certaines bibliothèques et outils impressionnants de l'écosystème :
gpt-fast pour les techniques d'inférence LLM performantes que nous avons adoptées prêtes à l'emploi
recettes de lamas pour lancer la communauté Llama2
bitsandbytes pour apporter plusieurs techniques basées sur la mémoire et les performances à l'écosystème PyTorch
@winglian et axolotl pour les premiers commentaires et réflexions sur la conception et l'ensemble des fonctionnalités de torchtune.
lit-gpt pour avoir fait avancer la communauté de réglage fin LLM.
HF TRL pour rendre la modélisation des récompenses plus accessible à la communauté PyTorch.
torchtune est publié sous la licence BSD 3. Cependant, vous pouvez avoir d'autres obligations légales qui régissent votre utilisation d'autres contenus, telles que les conditions de service des modèles tiers.
Si vous trouvez la bibliothèque torchtune utile, veuillez la citer dans votre travail comme ci-dessous.
@software{torchtune, title = {torchtune : bibliothèque de réglage fin de PyTorch}, auteur = {mainteneurs et contributeurs de torchune}, url = {https//github.com/pytorch/torchtune}, licence = {BSD-3-Clause}, mois = avril, année = {2024}}