Il y a eu de nombreuses avancées récentes dans le domaine de la PNL. Des modèles préformés et des services de PNL entièrement gérés ont démocratisé l'accès et l'adoption de la PNL. Amazon comprendre est un service entièrement géré qui peut effectuer des tâches NLP telles que la reconnaissance d'entités personnalisées, la modélisation de sujets, l'analyse des sentiments et plus encore pour extraire des informations à partir de données sans avoir besoin d'une expérience préalable en ML.
L'année dernière, AWS a annoncé un partenariat comprenant Étreindre le visage pour accélérer la mise en production des modèles de traitement du langage naturel (TAL). Hugging Face est une communauté d'IA open source, axée sur la PNL. Leur bibliothèque basée sur Python (Transformateurs) fournit des outils pour utiliser facilement les architectures Transformer de pointe populaires telles que BERT, RoBERTa et GPT. Vous pouvez appliquer ces modèles à une variété de tâches NLP, telles que la classification de texte, l'extraction d'informations et la réponse aux questions, parmi autres.
Amazon Sage Maker est un service entièrement géré qui offre aux développeurs et aux spécialistes des données la possibilité de créer, de former et de déployer rapidement des modèles d'apprentissage automatique (ML). SageMaker supprime les tâches lourdes de chaque étape du processus ML, ce qui facilite le développement de modèles de haute qualité. Le SDK Python SageMaker fournit des API et des conteneurs open source pour former et déployer des modèles sur SageMaker, à l'aide de plusieurs frameworks ML et d'apprentissage en profondeur différents.
L'intégration de Hugging Face avec SageMaker vous permet de créer des modèles de Hugging Face à grande échelle sur vos propres cas d'utilisation spécifiques à votre domaine.
Dans cet article, nous vous expliquons comment créer et déployer un résumé de texte personnalisé Hugging Face sur SageMaker. Nous utilisons Pegasus [1] à cette fin, le premier modèle basé sur Transformer spécifiquement pré-entraîné sur un objectif adapté au résumé de texte abstrait. BERT est pré-formé pour masquer des mots aléatoires dans une phrase; en revanche, pendant la pré-formation de Pegasus, les phrases sont masquées à partir d'un document d'entrée. Le modèle génère ensuite les phrases manquantes sous la forme d'une séquence de sortie unique en utilisant toutes les phrases non masquées comme contexte, créant ainsi un résumé exécutif du document.
Grâce à la flexibilité de la bibliothèque HuggingFace, vous pouvez facilement adapter le code présenté dans cet article à d'autres types de modèles de transformateurs, tels que t5, BART, etc.
Chargez votre propre ensemble de données pour affiner un modèle Hugging Face
Pour charger un ensemble de données personnalisé à partir d'un fichier CSV, nous utilisons le load_dataset
méthode du package Transformers. Nous pouvons appliquer la tokenisation à l'ensemble de données chargé en utilisant le datasets.Dataset.map
fonction. le map
La fonction effectue une itération sur l'ensemble de données chargé et applique la fonction tokenize à chaque exemple. L'ensemble de données tokenisé peut ensuite être transmis au formateur pour affiner le modèle. Voir le code suivant :
Créez votre script de formation pour l'estimateur Hugging Face SageMaker
Comme expliqué dans le post AWS et Hugging Face collaborent pour simplifier et accélérer l'adoption des modèles de traitement du langage naturel, former un modèle Hugging Face sur SageMaker n'a jamais été aussi facile. Nous pouvons le faire en utilisant l'estimateur Hugging Face du SDK SageMaker.
L'extrait de code suivant affine Pegasus sur notre ensemble de données. Vous pouvez également trouver de nombreux exemples de cahiers qui vous guident dans le réglage fin de différents types de modèles, disponibles directement dans le référentiel GitHub des transformateurs. Pour activer la formation distribuée, nous pouvons utiliser le Bibliothèque de parallélisme des données dans SageMaker, qui a été intégré à l'API HuggingFace Trainer. Pour activer le parallélisme des données, nous devons définir le distribution
paramètre dans notre estimateur de visage étreignant.
La taille de lot d'entraînement maximale que vous pouvez configurer dépend de la taille du modèle et de la mémoire GPU de l'instance utilisée. Si la formation distribuée SageMaker est activée, la taille totale du lot est la somme de chaque lot distribué sur chaque appareil/GPU. Si nous utilisons un ml.g4dn.16xlarge avec entraînement distribué au lieu d'une instance ml.g4dn.xlarge, nous avons huit fois (8 GPU) plus de mémoire qu'une instance ml.g4dn.xlarge (1 GPU). La taille du lot par appareil reste la même, mais huit appareils s'entraînent en parallèle.
Comme d'habitude avec SageMaker, nous créons un train.py
script à utiliser avec le mode Script et transmettre des hyperparamètres pour la formation. L'extrait de code suivant pour Pegasus charge le modèle et l'entraîne à l'aide des transformateurs Trainer
classe:
Le code complet est disponible sur GitHub.
Déployer le modèle Hugging Face formé sur SageMaker
Nos amis de Hugging Face ont rendu l'inférence sur les modèles SageMaker pour Transformers plus simple que jamais grâce à la Boîte à outils d'inférence de visage étreignant SageMaker. Vous pouvez déployer directement le modèle précédemment formé en configurant simplement la variable d'environnement "HF_TASK":"summarization"
(pour les instructions, voir Modèles Pegasus), en choisissant Déployer, puis en choisissant Amazon Sage Maker, sans avoir besoin d'écrire un script d'inférence.
Cependant, si vous avez besoin d'un moyen spécifique pour générer ou post-traiter des prédictions, par exemple en générant plusieurs suggestions récapitulatives basées sur une liste de différents paramètres de génération de texte, écrire votre propre script d'inférence peut être utile et relativement simple :
Comme indiqué dans le code précédent, un tel script d'inférence pour HuggingFace sur SageMaker n'a besoin que des fonctions de modèle suivantes :
- modèle_fn() – Lit le contenu de ce qui a été enregistré à la fin du travail de formation à l'intérieur
SM_MODEL_DIR
, ou à partir d'un répertoire de poids de modèle existant enregistré en tant que fichier tar.gz dans Service de stockage simple Amazon (Amazon S3). Il est utilisé pour charger le modèle formé et le tokenizer associé. - input_fn () – Formate les données reçues d'une demande faite au point de terminaison.
- prédire_fn () – Appelle la sortie de
model_fn()
(le modèle et le tokenizer) pour exécuter l'inférence sur la sortie deinput_fn()
(les données formatées).
En option, vous pouvez créer un output_fn()
fonction pour le formatage d'inférence, en utilisant la sortie de predict_fn()
, ce que nous n'avons pas démontré dans cet article.
Nous pouvons ensuite déployer le modèle Hugging Face formé avec son script d'inférence associé sur SageMaker en utilisant le Modèle SageMaker étreignant le visage classe:
Tester le modèle déployé
Pour cette démo, nous avons formé le modèle sur le Ensemble de données Avis sur les vêtements de commerce électronique pour femmes, qui contient des critiques d'articles vestimentaires (que nous considérons comme le texte d'entrée) et leurs titres associés (que nous considérons comme des résumés). Une fois que nous avons supprimé les articles avec des titres manquants, l'ensemble de données contient 19,675 70 avis. Le réglage fin du modèle Pegasus sur un ensemble d'entraînement contenant 3.5 % de ces articles pour cinq époques a pris environ 3.16 heures sur une instance ml.pXNUMXxlarge.
Nous pouvons ensuite déployer le modèle et le tester avec quelques exemples de données de l'ensemble de test. Voici un exemple d'avis décrivant un pull :
Grâce à notre script d'inférence personnalisé hébergé dans un point de terminaison SageMaker, nous pouvons générer plusieurs résumés pour cette revue avec différents paramètres de génération de texte. Par exemple, nous pouvons demander au point de terminaison de générer une gamme de résumés très courts à modérément longs spécifiant différentes pénalités de longueur (plus la pénalité de longueur est petite, plus le résumé généré est court). Voici quelques exemples de saisie de paramètres et les récapitulatifs générés par la machine suivants :
Quel résumé préférez-vous ? Le premier titre généré capture tous les faits importants de la revue, avec un quart du nombre de mots. En revanche, le dernier n'utilise que trois mots (moins de 1/10e de la longueur de la critique originale) pour se concentrer sur la caractéristique la plus importante du pull.
Conclusion
Vous pouvez affiner un résumé de texte sur votre jeu de données personnalisé et le déployer en production sur SageMaker avec cet exemple simple disponible sur GitHub. Additionnel exemples de cahiers pour former et déployer des modèles Hugging Face sur SageMaker sont également disponibles.
Comme toujours, AWS apprécie les commentaires. Veuillez soumettre vos commentaires ou questions.
Bibliographie
[1] PEGASUS : Pré-formation avec des phrases Gap extraites pour le résumé abstrait
À propos des auteurs
Viktor Malesević est un ingénieur en apprentissage automatique chez AWS Professional Services, passionné par le traitement du langage naturel et les MLOps. Il travaille avec les clients pour développer et mettre en production des modèles d'apprentissage en profondeur stimulants sur AWS. Dans ses temps libres, il aime partager un verre de vin rouge et du fromage avec des amis.
Aamna Najmi est un Data Scientist avec AWS Professional Services. Elle est passionnée d'aider les clients à innover avec les technologies Big Data et Intelligence Artificielle pour exploiter la valeur commerciale et les informations à partir des données. Dans ses temps libres, elle aime jardiner et voyager dans de nouveaux endroits.
- AI
- art de l'IA
- générateur d'art ai
- robot IA
- Amazon Sage Maker
- intelligence artificielle
- certification en intelligence artificielle
- intelligence artificielle en banque
- robot d'intelligence artificielle
- robots d'intelligence artificielle
- logiciel d'intelligence artificielle
- Apprentissage automatique AWS
- blockchain
- conférence blockchain ai
- cognitif
- intelligence artificielle conversationnelle
- crypto conférence ai
- de dall
- l'apprentissage en profondeur
- google ai
- machine learning
- Platon
- platon ai
- Intelligence des données Platon
- Jeu de Platon
- PlatonDonnées
- jeu de platogamie
- échelle ai
- syntaxe
- zéphyrnet