Dans cet article, nous présentons le réglage fin d'un modèle Llama 2 à l'aide d'une méthode PEFT (Parameter-Efficient Fine-Tuning) et déployons le modèle affiné sur Inférence AWS2. Nous utilisons le Neurone AWS kit de développement logiciel (SDK) pour accéder au périphérique AWS Inferentia2 et bénéficier de ses hautes performances. Nous utilisons ensuite un conteneur d'inférence de grand modèle alimenté par Bibliothèque Java profonde (DJLServing) comme notre solution de diffusion de modèles.
Vue d'ensemble de la solution
Réglage efficace de Llama2 à l'aide de QLoRa
La famille Llama 2 de grands modèles de langage (LLM) est une collection de modèles de texte génératifs pré-entraînés et affinés dont l'échelle varie de 7 milliards à 70 milliards de paramètres. Llama 2 a été pré-entraîné sur 2 2 milliards de jetons de données provenant de sources accessibles au public. Les clients AWS choisissent parfois d'affiner les modèles Llama 2 en utilisant leurs propres données pour obtenir de meilleures performances pour les tâches en aval. Cependant, en raison du grand nombre de paramètres du modèle Llama XNUMX, un réglage précis pourrait être prohibitif et prendre beaucoup de temps. L'approche PEFT (Parameter-Efficient Fine-Tuning) peut résoudre ce problème en ajustant uniquement un petit nombre de paramètres supplémentaires du modèle tout en gelant la plupart des paramètres du modèle pré-entraîné. Pour plus d'informations sur PEFT, on peut lire ceci poster. Dans cet article, nous utilisons QLoRa pour peaufiner un modèle Llama 2 7B.
Déployer un modèle affiné sur Inf2 à l'aide d'Amazon SageMaker
AWS Inferentia2 est un accélérateur d'apprentissage automatique (ML) spécialement conçu pour les charges de travail d'inférence et offre des performances élevées à un coût jusqu'à 40 % inférieur pour les charges de travail d'IA générative et LLM par rapport à d'autres instances optimisées pour l'inférence sur AWS. Dans cet article, nous utilisons Amazon Elastic Compute Cloud (Amazon EC2) Instance Inf2, comprenant AWS Inferentia2, les accélérateurs Inferentia2 de deuxième génération, contenant chacun deux NeuronCores-v2. Chaque NeuronCore-v2 est une unité de calcul indépendante et hétérogène, avec quatre moteurs principaux : les moteurs Tensor, Vector, Scalar et GPSIMD. Il comprend une mémoire SRAM sur puce gérée par logiciel pour maximiser la localisation des données. Depuis que plusieurs blogs sur Inf2 ont été publiés, le lecteur peut s'y référer poster et notre Documentation pour plus d'informations sur Inf2.
Pour déployer des modèles sur Inf2, nous avons besoin du SDK AWS Neuron comme couche logicielle exécutée au-dessus du matériel Inf2. AWS Neuron est le SDK utilisé pour exécuter des charges de travail d'apprentissage en profondeur sur AWS Inferentia et Formation AWS instances basées. Il permet un cycle de vie de développement ML de bout en bout pour créer de nouveaux modèles, former et optimiser ces modèles et les déployer pour la production. AWS Neuron inclut un apprentissage en profondeur compilateur, d'exécutionet une les outils qui sont nativement intégrés à des frameworks populaires tels que TensorFlow et PyTorch. Dans ce blog, nous allons utiliser transformers-neuronx
, qui fait partie du SDK AWS Neuron pour les workflows d'inférence de décodeur de transformateur. Il supports une gamme de modèles populaires, dont Llama 2.
Pour déployer des modèles sur Amazon Sage Maker, nous utilisons généralement un conteneur contenant les bibliothèques requises, telles que Neuron SDK et transformers-neuronx
ainsi que le composant de diffusion de modèles. Amazon SageMaker maintient conteneurs d'apprentissage en profondeur (DLC) avec des bibliothèques open source populaires pour l'hébergement de grands modèles. Dans cet article, nous utilisons le Conteneur d'inférence grand modèle pour neurone. Ce conteneur contient tout ce dont vous avez besoin pour déployer votre modèle Llama 2 sur Inf2. Pour obtenir des ressources pour démarrer avec LMI sur Amazon SageMaker, veuillez vous référer à plusieurs de nos articles existants (Blog 1, Blog 2, Blog 3) sur ce sujet. En bref, vous pouvez exécuter le conteneur sans écrire de code supplémentaire. Vous pouvez utiliser le gestionnaire par défaut pour une expérience utilisateur transparente et transmettez l’un des noms de modèles pris en charge ainsi que tous les paramètres configurables du temps de chargement. Cela compile et sert un LLM sur une instance Inf2. Par exemple, pour déployer OpenAssistant/llama2-13b-orca-8k-3319
, vous pouvez fournir la configuration suivante (comme serving.properties
déposer). Dans serving.properties
, nous spécifions le type de modèle comme llama2-13b-orca-8k-3319
, la taille du lot est de 4, le degré parallèle du tenseur est de 2, et c'est tout. Pour la liste complète des paramètres configurables, reportez-vous à Toutes les options de configuration DJL.
Alternativement, vous pouvez écrire votre propre fichier de gestionnaire de modèle comme indiqué dans ceci exemple, mais cela nécessite d'implémenter les méthodes de chargement de modèle et d'inférence pour servir de pont entre les API DJLServing.
Pré-requis
La liste suivante présente les conditions préalables au déploiement du modèle décrit dans ce billet de blog. Vous pouvez implémenter soit à partir du Console de gestion AWS ou en utilisant la dernière version du Interface de ligne de commande AWS (AWS CLI).
Procédure pas à pas
Dans la section suivante, nous présenterons le code en deux parties :
- Affiner un modèle Llama2-7b et télécharger les artefacts du modèle vers un emplacement de compartiment Amazon S3 spécifié.
- Déployez le modèle dans un conteneur de service Inferentia2 à l'aide de DJL hébergé dans Amazon SageMaker.
Les exemples de code complets avec les instructions peuvent être trouvés dans ce GitHub dépôt.
Partie 1 : Affiner un modèle Llama2-7b à l'aide de PEFT
Nous allons utiliser la méthode récemment introduite dans l'article QLoRA : réglage d'adaptateur de bas rang prenant en compte la quantification pour la génération de langage par Tim Dettmers et coll. QLoRA est une nouvelle technique permettant de réduire l'empreinte mémoire des grands modèles de langage lors du réglage fin, sans sacrifier les performances.
Remarque: Le réglage fin du modèle llama2-7b présenté ci-dessous a été testé sur Amazon Carnet SageMaker Studio avec le noyau optimisé pour le GPU Python 2.0 en utilisant un ml.g5.2xlarge type d'instance. À titre de bonne pratique, nous vous recommandons d'utiliser un Amazon SageMakerStudio Environnement de développement intégré (IDE) lancé dans votre propre Cloud privé virtuel Amazon (Amazon VPC). Cela vous permet de contrôler, surveiller et inspecter le trafic réseau à l'intérieur et à l'extérieur de votre VPC à l'aide des capacités de mise en réseau et de sécurité AWS standard. Pour plus d'informations, consultez Sécurisation de la connectivité Amazon SageMaker Studio à l'aide d'un VPC privé.
Quantifier le modèle de base
Nous chargeons d'abord un modèle quantifié avec une quantification 4 bits en utilisant Transformateurs câlins bibliothèque comme suit :
Charger l'ensemble de données d'entraînement
Ensuite, nous chargeons l'ensemble de données pour alimenter le modèle pour l'étape de réglage fin indiquée comme suit :
Attacher une couche d'adaptateur
Ici, nous attachons une petite couche d'adaptateur pouvant être entraînée, configurée comme LoraConfig défini dans le Hugging Face's peft bibliothèque.
Former un mannequin
En utilisant la configuration LoRA présentée ci-dessus, nous affinerons le modèle Llama2 ainsi que les hyper-paramètres. Un extrait de code pour entraîner le modèle est présenté ci-dessous :
Fusionner le poids du modèle
Le modèle affiné exécuté ci-dessus a créé un nouveau modèle contenant les poids de l'adaptateur LoRA formés. Dans l'extrait de code suivant, nous fusionnerons l'adaptateur avec le modèle de base afin de pouvoir utiliser le modèle affiné pour l'inférence.
Télécharger le poids du modèle sur Amazon S3
Dans la dernière étape de la première partie, nous enregistrerons les poids des modèles fusionnés dans un emplacement Amazon S1 spécifié. Le poids du modèle sera utilisé par un conteneur de diffusion de modèles dans Amazon SageMaker pour héberger le modèle à l'aide d'une instance Inferentia3.
Partie 2 : Héberger le modèle QLoRA pour l'inférence avec AWS Inf2 à l'aide du conteneur SageMaker LMI
Dans cette section, nous passerons en revue les étapes de déploiement d'un modèle QLoRA affiné dans un environnement d'hébergement Amazon SageMaker. Nous utiliserons un Service DJL conteneur de SageMaker DLC, qui s'intègre à transformateurs-neuronx bibliothèque pour héberger ce modèle. La configuration facilite le chargement des modèles sur les accélérateurs AWS Inferentia2, parallélise le modèle sur plusieurs NeuronCores et permet le service via des points de terminaison HTTP.
Préparer les artefacts du modèle
DJL prend en charge de nombreuses bibliothèques d'optimisation du deep learning, notamment Vitesse profonde, Transformateur plus rapide et plus. Pour les configurations spécifiques au modèle, nous fournissons un serving.properties
avec des paramètres clés, tels que tensor_parallel_degree
ainsi que le model_id
pour définir les options de chargement du modèle. Le model_id
Il peut s'agir d'un identifiant de modèle Hugging Face ou d'un chemin Amazon S3 où les poids du modèle sont stockés. Dans notre exemple, nous fournissons l'emplacement Amazon S3 de notre modèle affiné. L'extrait de code suivant montre les propriétés utilisées pour la diffusion du modèle :
Veuillez vous référer à ceci Documentation pour plus d'informations sur les options configurables disponibles via serving.properties
. Veuillez noter que nous utilisons option.n_position=512
dans ce blog pour une compilation plus rapide d'AWS Neuron. Si vous souhaitez essayer une longueur de jeton d'entrée plus grande, nous recommandons au lecteur de précompiler le modèle à l'avance (voir Modèle de pré-compilation AOT sur EC2). Sinon, vous risquez de rencontrer une erreur de délai d'attente si le temps de compilation est trop long.
Après les serving.properties
fichier est défini, nous allons empaqueter le fichier dans un tar.gz
format, comme suit :
Ensuite, nous téléchargerons le fichier tar.gz vers un emplacement de compartiment Amazon S3 :
Créer un point de terminaison de modèle Amazon SageMaker
Pour utiliser une instance Inf2 pour le service, nous utilisons un Amazon Conteneur SageMaker LMI avec le support DJL neuronX. Veuillez vous référer à ceci poster pour plus d'informations sur l'utilisation d'un conteneur DJL NeuronX pour l'inférence. Le code suivant montre comment déployer un modèle à l'aide du SDK Amazon SageMaker Python :
Point de terminaison du modèle de test
Une fois le modèle déployé avec succès, nous pouvons valider le point de terminaison en envoyant un exemple de requête au prédicteur :
L’exemple de sortie est présenté comme suit :
Dans le contexte de l'analyse des données, l'apprentissage automatique (ML) fait référence à une technique statistique capable d'extraire le pouvoir prédictif d'un ensemble de données avec une complexité et une précision croissantes en réduisant de manière itérative la portée d'une statistique.
Le Machine Learning n’est pas une nouvelle technique statistique, mais plutôt une combinaison de techniques existantes. De plus, il n’a pas été conçu pour être utilisé avec un ensemble de données spécifique ou pour produire un résultat spécifique. Au contraire, il a été conçu pour être suffisamment flexible pour s’adapter à n’importe quel ensemble de données et faire des prédictions sur n’importe quel résultat.
Nettoyer
Si vous décidez que vous ne souhaitez plus faire fonctionner le point de terminaison SageMaker, vous pouvez le supprimer en utilisant AWS SDK pour Python (boto3), AWS CLI ou Amazon SageMaker Console. De plus, vous pouvez également arrêter les ressources Amazon SageMaker Studio qui ne sont plus nécessaires.
Conclusion
Dans cet article, nous vous avons montré comment affiner un modèle Llama2-7b à l'aide d'un adaptateur LoRA avec quantification 4 bits à l'aide d'une seule instance GPU. Ensuite, nous avons déployé le modèle sur une instance Inf2 hébergée dans Amazon SageMaker à l'aide d'un conteneur de service DJL. Enfin, nous avons validé le point de terminaison du modèle Amazon SageMaker avec une prédiction de génération de texte à l'aide du SDK SageMaker Python. Allez-y et essayez-le, nous aimons entendre vos commentaires. Restez à l'écoute des mises à jour sur davantage de fonctionnalités et de nouvelles innovations avec AWS Inferentia.
Pour plus d'exemples sur AWS Neuron, consultez échantillons-neurones-aws.
À propos des auteurs
Wei Té est architecte senior de solutions spécialisées en IA/ML chez AWS. Il se passionne pour aider les clients à faire progresser leur parcours AWS, en se concentrant sur les services Amazon Machine Learning et les solutions basées sur l'apprentissage automatique. En dehors du travail, il aime les activités de plein air comme le camping, la pêche et la randonnée avec sa famille.
Qingweje Li est un spécialiste de l'apprentissage automatique chez Amazon Web Services. Il a obtenu son doctorat. en recherche opérationnelle après avoir cassé le compte de subvention de recherche de son conseiller et échoué à décerner le prix Nobel qu'il avait promis. Actuellement, il aide les clients du secteur des services financiers et de l'assurance à créer des solutions d'apprentissage automatique sur AWS. Dans ses temps libres, il aime lire et enseigner.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :possède
- :est
- :ne pas
- :où
- $UP
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- A Propos
- au dessus de
- accélérateur
- accélérateurs
- accès
- Compte
- précision
- atteindre
- à travers
- d'activités
- adapter
- Supplémentaire
- En outre
- propos
- avancer
- Après
- devant
- AI
- AI / ML
- AL
- permet
- le long de
- Alpha
- aussi
- Amazon
- Apprentissage automatique d'Amazon
- Amazon Sage Maker
- Amazon SageMakerStudio
- Amazon Web Services
- an
- selon une analyse de l’Université de Princeton
- ainsi que le
- tous
- Apis
- Appliquer
- une approche
- SONT
- AS
- At
- joindre
- auto
- disponibles
- AWS
- Inférence AWS
- balle
- base
- basé
- mise en lot
- BE
- était
- profiter
- LES MEILLEURS
- Améliorée
- jusqu'à XNUMX fois
- Milliards
- Blog
- blogue
- PONT
- Cassé
- construire
- mais
- by
- CAN
- capacités
- capable
- Selectionnez
- le cloud
- code
- collection
- combinaison
- complet
- complexité
- composant
- calcul
- configuration
- configurée
- Connectivité
- Console
- consommant
- Contenant
- contient
- contexte
- des bactéries
- Prix
- pourriez
- créée
- Lecture
- Clients
- données
- l'analyse des données
- décider
- profond
- l'apprentissage en profondeur
- Réglage par défaut
- Vous permet de définir
- défini
- Degré
- livrer
- offre
- déployer
- déployé
- déployer
- décrit
- un
- Développement
- dispositif
- Docker
- down
- deux
- pendant
- Dynamic
- E & T
- chacun
- non plus
- permet
- end-to-end
- Endpoint
- Moteur
- Moteurs
- assez
- Environment
- erreur
- etc
- peut
- exemple
- exemples
- réalisé
- existant
- cher
- d'experience
- supplémentaire
- Visage
- facilite
- Échoué
- non
- famille
- plus rapide
- Doté d'
- Réactions
- Déposez votre dernière attestation
- finale
- finalement
- la traduction de documents financiers
- service financier
- Prénom
- Pêche
- flexible
- mettant l'accent
- suivre
- suivi
- Abonnement
- suit
- numérique
- Pour
- le format
- trouvé
- quatre
- cadres
- Congélation
- De
- plein
- En outre
- génération
- génératif
- IA générative
- obtenez
- Donner
- Go
- aller
- GPU
- subvention
- Matériel
- he
- entendre
- aider
- aide
- ici
- Haute
- haute performance
- sa
- hôte
- organisé
- hébergement
- Villa
- Comment
- How To
- Cependant
- HTML
- http
- HTTPS
- ID
- if
- image
- Mettre en oeuvre
- la mise en œuvre
- in
- comprendre
- inclut
- Y compris
- croissant
- indépendant
- industrie
- d'information
- innovations
- contribution
- entrées
- instance
- Des instructions
- Assurance
- des services
- Intègre
- développement
- introduit
- IT
- itération
- SES
- Java
- chemin
- jpg
- json
- XNUMX éléments à
- ACTIVITES
- Trousse (SDK)
- langue
- gros
- plus importantes
- Nouveautés
- lancé
- couche
- poules pondeuses
- apprentissage
- Longueur
- Niveau
- bibliothèques
- Bibliothèque
- vos produits
- comme
- aime
- Gamme
- Liste
- Flamme
- LLM
- charge
- chargement
- emplacement
- plus long
- love
- baisser
- click
- machine learning
- Entrée
- maintient
- a prendre une
- gestion
- de nombreuses
- maximisant
- Mémoire
- aller
- méthode
- méthodes
- pourrait
- ML
- modèle
- numériques jumeaux (digital twin models)
- Modules
- Surveiller
- PLUS
- (en fait, presque toutes)
- beaucoup
- plusieurs
- noms
- à l'
- Besoin
- réseau et
- trafic réseau
- de mise en réseau
- Nouveauté
- aucune
- prix Nobel
- Aucun
- noter
- nombre
- of
- on
- ONE
- uniquement
- sur
- ouvert
- open source
- Opérations
- à mettre en œuvre pour gérer une entreprise rentable. Ce guide est basé sur trois décennies d'expérience
- Optimiser
- optimisé
- Option
- Options
- or
- Autre
- autrement
- nos
- Résultat
- grandes lignes
- sortie
- au contrôle
- plus de
- propre
- paquet
- Papier
- Parallèle
- paramètre
- paramètres
- partie
- les pièces
- pass
- passionné
- chemin
- performant
- effectué
- plan
- Platon
- Intelligence des données Platon
- PlatonDonnées
- veuillez cliquer
- Populaire
- Post
- Poteaux
- power
- alimenté
- pratique
- La précision
- prédiction
- Prédictions
- Predictor
- conditions préalables
- Privé
- prix
- Problème
- processus
- produire
- Vidéo
- promis
- propriétés
- fournir
- publiquement
- publié
- Python
- pytorch
- gamme
- allant
- plutôt
- Lire
- Reader
- en cours
- reçu
- récemment
- recommander
- réduire
- reportez-vous
- se réfère
- dépôt
- nécessaire
- demandes
- conditions
- a besoin
- un article
- Resources
- réponse
- réponses
- bon
- Courir
- pour le running
- sacrifier
- sagemaker
- Épargnez
- Escaliers intérieurs
- mise à l'échelle
- portée
- Sdk
- fluide
- Deuxièmement
- Deuxième génération
- Section
- sécurité
- sur le lien
- envoi
- supérieur
- Séquence
- besoin
- service
- Services
- service
- set
- mise
- installation
- plusieurs
- Shorts
- vitrine
- montré
- montré
- Spectacles
- depuis
- unique
- Taille
- petit
- Fragment
- So
- Logiciels
- développement de logiciels
- kit de développement logiciel
- sur mesure
- Solutions
- parfois
- Identifier
- Sources
- spécialiste
- groupe de neurones
- spécifié
- Standard
- j'ai commencé
- statistique
- rester
- étapes
- Étapes
- stockée
- studio
- Avec succès
- tel
- Support
- Appareils
- Les soutiens
- tâches
- Enseignement
- technique
- techniques
- tensorflow
- examiné
- texte
- qui
- La
- leur
- Les
- puis
- Ces
- this
- Avec
- Tim
- fiable
- à
- jeton
- Tokens
- trop
- top
- sujet
- torche
- circulation
- Train
- qualifié
- Formation
- transformateur
- Billion
- oui
- Essai
- écoute
- réglage
- deux
- type
- Actualités
- téléchargé
- URL
- utilisé
- d'utiliser
- Utilisateur
- Expérience utilisateur
- en utilisant
- d'habitude
- VALIDER
- validé
- version
- via
- Salle de conférence virtuelle
- marcher
- walkthrough
- souhaitez
- était
- we
- web
- services Web
- poids
- WELL
- Quoi
- Qu’est ce qu'
- qui
- tout en
- sera
- comprenant
- dans les
- sans
- activités principales
- travailleur
- workflows
- écrire
- écriture
- Vous n'avez
- Votre
- zéphyrnet