Ces dernières années, la compréhension du langage naturel (NLU) a trouvé de plus en plus de valeur commerciale, alimentée par des améliorations de modèles ainsi que par l'évolutivité et la rentabilité de l'infrastructure basée sur le cloud. Plus précisément, le transformateur architecture d'apprentissage en profondeur, souvent mise en œuvre sous la forme de BERT modèles, a été un grand succès, mais la formation, le réglage fin et l'optimisation de ces modèles se sont avérés être un problème difficile. Grace à Collaboration entre AWS et Hugging Face, il est désormais plus simple d'entraîner et d'optimiser les modèles NLU sur Amazon Sage Maker à l'aide du SDK SageMaker Python, mais la recherche de données étiquetées pour ces modèles reste difficile et prend du temps.
Un problème NLU d'intérêt commercial particulier est la tâche de réponse aux questions. Dans cet article, nous montrons comment créer un ensemble de données personnalisé de réponse aux questions à l'aide de Vérité au sol Amazon SageMaker pour former une question Hugging Face répondant au modèle NLU.
Défis de réponse aux questions
La réponse aux questions implique qu'un modèle produit automatiquement une réponse à une requête à partir d'un corps de texte qui peut ou non contenir la réponse. Par exemple, étant donné la question suivante : "Quels flux de travail SageMaker Ground Truth prend-il en charge ?" un modèle doit être en mesure d'identifier le segment "consolidation des annotations et audit" dans le paragraphe suivant :
SageMaker Ground Truth aide à améliorer la qualité des étiquettes grâce à la consolidation des annotations et aux workflows d'audit. La consolidation des annotations est le processus de collecte des entrées d'étiquette de deux ou plusieurs étiqueteurs de données et de leur combinaison pour créer une seule étiquette de données pour votre modèle d'apprentissage automatique. Grâce aux flux de travail d'audit et de révision intégrés, les travailleurs peuvent effectuer une vérification des étiquettes et effectuer des ajustements pour améliorer la précision.
Ce problème est difficile car il nécessite un modèle pour comprendre le sens d'une question, plutôt que de simplement effectuer une recherche par mot-clé. Des modèles précis dans ce domaine peuvent réduire les coûts de support client en alimentant des chatbots intelligents, en fournissant des produits d'assistant vocal de haute qualité et en générant des revenus de boutique en ligne grâce à des réponses personnalisées aux questions sur les produits. Un grand ensemble de données dans ce domaine est le Ensemble de données de réponse aux questions de Stanford (SQuAD), un ensemble de données de questions-réponses diversifié qui présente un modèle avec de courts passages de texte et nécessite que le modèle prédise l'emplacement de la plage de texte de réponse dans le passage. SQuAD est un ensemble de données de compréhension de la lecture, composé de questions posées par des travailleurs de la foule sur un ensemble d'articles de Wikipédia, où la réponse à chaque question est soit une étendue de texte du passage correspondant, soit autrement marquée comme impossible à répondre.
L'un des défis de l'adaptation de SQuAD aux cas d'utilisation métier consiste à générer des ensembles de données personnalisés spécifiques à un domaine. Ce processus de création de nouveaux ensembles de données de questions et de réponses nécessite une interface utilisateur spécialisée qui permet aux annotateurs de mettre en évidence des plages et d'ajouter des questions à ces plages. Il doit également être en mesure de prendre en charge l'ajout de questions impossibles pour prendre en charge le format SQuAD 2.0, qui comprend des questions sans réponse. Ces questions impossibles aident les modèles à mieux comprendre les requêtes auxquelles il est impossible de répondre à l'aide du passage donné. Le modèles de travail personnalisés dans Ground Truth simplifient la génération de ces ensembles de données en offrant aux travailleurs une expérience d'annotation personnalisée pour créer des ensembles de données de questions et réponses.
Vue d'ensemble de la solution
Cette solution crée et gère les tâches d'étiquetage Ground Truth pour étiqueter un ensemble de données de questions-réponses personnalisé spécifique à un domaine à l'aide d'une interface utilisateur d'annotation personnalisée. Nous utilisons SageMaker pour former, affiner, optimiser et déployer un Hugging Face
Modèle BERT construit avec PyTorch sur un jeu de données personnalisé de réponse aux questions.
Vous pouvez implémenter la solution en déployant le AWS CloudFormation modèle dans votre compte AWS. AWS CloudFormation gère le déploiement du AWS Lambda des fonctions qui prennent en charge la pré-annotation et la consolidation d'annotations pour l'interface utilisateur d'annotation. Il crée également un Service de stockage simple Amazon (Amazon S3) compartiment et le Gestion des identités et des accès AWS (IAM) à utiliser lors de la création d'une tâche d'étiquetage.
Cet article vous explique comment effectuer les opérations suivantes :
- Créez votre propre ensemble de données de réponse aux questions ou augmentez-en un existant à l'aide de Ground Truth
- Utiliser les ensembles de données Hugging Face pour combiner et symboliser le texte
- Affinez un modèle BERT sur vos données de réponse aux questions à l'aide de la formation SageMaker
- Déployez votre modèle sur un endpoint SageMaker et visualisez vos résultats
Interface utilisateur d'annotation
Nous utilisons un nouveau modèle de tâche de travailleur personnalisé avec Ground Truth pour ajouter de nouvelles annotations au jeu de données SQuAD existant. Cette solution propose un modèle de tâche de travail ainsi qu'une fonction Lambda de pré-annotation (qui gère l'insertion des données dans l'interface utilisateur) et une fonction Lambda de post-annotation (qui extrait les résultats de l'interface utilisateur une fois l'étiquetage terminé).
Ce modèle de tâche de travailleur personnalisé vous permet de mettre en surbrillance du texte dans le volet de droite, puis d'ajouter une question correspondante dans le volet de gauche qui se rapporte au texte en surbrillance. Le texte en surbrillance dans le volet de droite peut également être ajouté à toute question créée précédemment. De plus, vous pouvez ajouter des questions impossibles selon ESCOUADE 2.0 format. Les questions impossibles permettent aux modèles de réduire le nombre de faux positifs non fiables lorsque le passage est incapable de répondre à une requête.
Cette interface utilisateur utilise le même schéma JSON que l'ensemble de données SQuAD 2.0, ce qui signifie qu'elle peut fonctionner sur plusieurs articles et paragraphes, affichant un paragraphe à la fois à l'aide de la Précédent et de Suivant boutons. L'interface utilisateur facilite la surveillance et la détermination du travail d'étiquetage que chaque annotateur doit effectuer lors de l'étape de soumission de la tâche.
Étant donné que l'interface utilisateur d'annotation est contenue dans un seul Liquide fichier HTML, vous pouvez personnaliser l'expérience d'étiquetage avec une connaissance de base de JavaScript. Vous pouvez également modifier Étiquettes liquides pour transmettre des informations supplémentaires dans l'interface utilisateur d'étiquetage, et vous pouvez modifier le modèle lui-même pour inclure des instructions de travail plus détaillées.
Prix estimés
Le déploiement de cette solution peut entraîner un coût maximum d'environ 20 $, sans tenir compte des coûts d'étiquetage humain. Amazon S3, Lambda, SageMaker et Ground Truth offrent tous la Niveau gratuit AWS, avec des frais pour une utilisation supplémentaire. Pour plus d'informations, consultez les pages de tarification suivantes :
- Tarification Amazon S3
- Tarification AWS Lambda
- Tarification d'Amazon SageMaker
- Tarification de l'étiquetage des données Amazon SageMaker – Ces frais dépendent du type de main-d'œuvre que vous utilisez. Si vous êtes un nouvel utilisateur de Ground Truth, nous vous suggérons d'utiliser une main-d'œuvre privée et de vous inclure en tant que travailleur pour tester la configuration de votre travail d'étiquetage.
Pré-requis
Pour implémenter cette solution, vous devez avoir les prérequis suivants :
- An Compte AWS.
- Familiarité avec Ground Truth. Pour plus d'informations, reportez-vous à Utiliser Amazon SageMaker Ground Truth pour étiqueter les données.
- Familiarité avec AWS CloudFormation. Pour plus d'informations, reportez-vous au Guide de l'utilisateur AWS CloudFormation.
- Un SageMaker main-d'œuvre. Pour cette démonstration, nous utilisons une main-d'œuvre privée. Vous pouvez créer une main-d'œuvre sur la console SageMaker.
Le GIF suivant montre comment créer une main-d'œuvre privée. Pour obtenir des instructions, consultez Créer une main-d'œuvre Amazon Cognito à l'aide de la page Labellisation des effectifs.
Lancer la pile CloudFormation
Maintenant que vous avez vu la structure de la solution, vous la déployez dans votre compte afin de pouvoir exécuter un exemple de workflow. Toutes les étapes de déploiement liées au pipeline d'étiquetage sont gérées par AWS CloudFormation. Cela signifie qu'AWS CloudFormation crée vos fonctions Lambda de consolidation de pré-annotation et d'annotation, ainsi qu'un compartiment S3 pour stocker les données d'entrée et de sortie.
Vous pouvez lancer la pile dans la région AWS us-east-1
sur la console AWS CloudFormation à l'aide de Lancer la pile bouton. Pour lancer la pile dans une autre région, utilisez les instructions trouvées dans le README du GitHub référentiel.
Faire fonctionner le bloc-notes
Une fois la solution déployée sur votre compte, une instance de bloc-notes nommée gt-hf-squad-notebook
est disponible dans votre compte. Pour commencer à utiliser l'ordinateur portable, procédez comme suit :
- Sur la console Amazon SageMaker, accédez à la page de l'instance de bloc-notes.
- Selectionnez Ouvrez JupyterLab pour ouvrir l'instance.
- Dans l'instance, accédez au référentiel
hf-gt-custom-qa
et ouvrez le cahierhf_squad_finetuning.ipynb
. - Selectionnez
conda_pytorch_p38
comme noyau.
Maintenant que vous avez créé une instance de bloc-notes et ouvert le bloc-notes, vous pouvez exécuter des cellules dans le bloc-notes pour faire fonctionner la solution. Le reste de cet article fournit des détails supplémentaires sur chaque section du bloc-notes au fur et à mesure.
Télécharger et inspecter les données
La Jeu de données SQuAD contient un ensemble de données de formation ainsi que des ensembles de données de test et de développement. Le bloc-notes télécharge le jeu de données SQuAD2.0 pour vous, mais vous pouvez choisir la version de SQuAD à utiliser en modifiant la cellule du bloc-notes sous Télécharger et inspecter les données.
SQuAD a été créé par Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev et Percy Liang. Pour plus d'informations, reportez-vous au papier original et de jeu de données. SQuAD a été autorisé par les auteurs sous le Licence publique internationale Creative Commons Attribution-ShareAlike 4.0.
Regardons un exemple de paire de questions et réponses de SQuAD :
Titre du paragraphe : Système_immunitaire
Le système immunitaire est un système de nombreuses structures et processus biologiques au sein d'un organisme qui protège contre la maladie. Pour fonctionner correctement, un système immunitaire doit détecter une grande variété d'agents, appelés agents pathogènes, allant des virus aux vers parasites, et les distinguer des tissus sains de l'organisme. Chez de nombreuses espèces, le système immunitaire peut être classé en sous-systèmes, tels que le système immunitaire inné par rapport au système immunitaire adaptatif, ou l'immunité humorale par rapport à l'immunité à médiation cellulaire. Chez l'homme, la barrière hémato-encéphalique, la barrière hémato-encéphalique et les barrières hémato-encéphaliques similaires séparent le système immunitaire périphérique du système neuro-immunitaire qui protège le cerveau.
Question : Le système immunitaire protège les organismes contre quoi ?
Réponse : la maladie
Charger le modèle
Maintenant que vous avez vu un exemple de paire de questions et de réponses dans SQuAD, vous pouvez télécharger un modèle que vous pouvez affiner pour répondre aux questions. Hugging Face vous permet de télécharger facilement un modèle de base qui a subi une pré-formation à grande échelle et de le réinitialiser pour une autre tâche en aval. Dans ce cas, vous téléchargez le distilbert-base-uncased
modèle et réutilisez-le pour la réponse aux questions en utilisant le AutoModelForQuestionAnswering
classe de Hugging Face. Vous utilisez également le AutoTokenizer
class pour récupérer le tokenizer pré-formé du modèle. Nous approfondissons le modèle que nous utilisons plus tard dans l'article.
Afficher l'entrée BERT
BERT vous oblige à transformer les données textuelles en une représentation numérique appelée tokens. Il existe une variété de tokenizers disponibles; les jetons suivants ont été créés par un tokenizer spécialement conçu pour BERT que vous instanciez avec un vocabulaire défini. Chaque jeton correspond à un mot du vocabulaire. Examinons la question du système immunitaire transformé et le contexte que vous fournissez au BERT pour l'inférence.
Inférence de modèle
Maintenant que vous avez vu ce que BERT prend en entrée, regardons comment vous pouvez obtenir des résultats d'inférence à partir du modèle. Le code suivant montre comment utiliser l'entrée tokenisée générée précédemment et renvoyer les résultats d'inférence à partir du modèle. Semblable à la façon dont BERT ne peut pas accepter de texte brut en entrée, il ne génère pas non plus de texte brut en sortie. Vous traduisez la sortie de BERT en identifiant les points de début et de fin dans le paragraphe que BERT a identifié comme la réponse. Ensuite, vous mappez cette sortie sur nos jetons et revenez au texte anglais.
Les résultats traduits sont les suivants :
Question : Le système immunitaire protège les organismes contre quoi ?
Réponse : la maladie
ÉQUIPE D'AUGMENTATION
Ensuite, pour obtenir des données étiquetées supplémentaires, nous utilisons un modèle de tâche de travailleur personnalisé dans Ground Truth. Nous pouvons d'abord créer un nouvel article au format SQuAD. Le bloc-notes copie ce fichier du référentiel vers Amazon S3, mais n'hésitez pas à apporter des modifications avant d'exécuter le ÉQUIPE D'AUGMENTATION cellule. Le format de SQuAD est illustré dans le code suivant. Chaque fichier SQuAD JSON contient plusieurs articles stockés dans le data
clé. Chaque article a une title
champ et un ou plusieurs paragraphes. Ces paragraphes contiennent des segments de texte appelés context
et toute question associée dans le qas
liste. Parce que nous annotons à partir de zéro, nous pouvons laisser le qas
liste vide et juste fournir le contexte. L'interface utilisateur est capable de parcourir à la fois les paragraphes et les articles, ce qui vous permet de rendre chaque tâche de travailleur aussi grande ou petite que vous le souhaitez.
Après avoir généré un exemple de fichier de données SQuAD, nous devons créer une Ground Truth fichier manifeste augmenté qui fait référence à nos données d'entrée. Nous faisons cela en générant un fichier au format de lignes JSON avec un "source
” clé correspondant à l'emplacement dans Amazon S3 où nous avons stocké nos données d'entrée SQuAD :
Accéder au portail d'étiquetage
Après avoir envoyé la tâche à Ground Truth, vous pouvez afficher la tâche d'étiquetage générée sur la console Ground Truth.
Pour effectuer l'étiquetage, vous devez vous connecter au compte du portail de travail que vous avez créé dans le cadre des étapes préalables. Votre travail est disponible dans le portail des travailleurs après quelques minutes de prétraitement. Après avoir ouvert la tâche, le modèle de travailleur personnalisé pour l'annotation Q&R vous est présenté. Vous pouvez ajouter des questions en mettant en surbrillance des sections de texte dans le contexte, puis en choisissant Ajouter une question.
Vérifier l'état du travail d'étiquetage
Après la soumission, vous pouvez exécuter le Vérifier l'état du travail d'étiquetage cellule pour voir si votre travail d'étiquetage est terminé. Attendez la fin avant de passer à d'autres cellules.
Charger les données étiquetées
Après l'étiquetage, le manifeste de sortie contient une entrée avec le nom de votre attribut d'étiquette (dans ce cas squad-1626282229
) contenant un URI S3 vers des données au format SQuAD que vous pouvez utiliser pendant la formation. Consultez le contenu du manifeste de sortie suivant :
Chaque ligne du manifeste correspond à une seule tâche de travail.
Charger la rame SQuAD
Le visage étreignant a un paquet de jeu de données qui vous offre la possibilité de télécharger et de prétraiter SQuAD, mais pour ajouter nos questions et réponses personnalisées, nous devons effectuer un peu de traitement. SQuAD est structuré autour d'ensembles thématiques. Chaque sujet a une variété d'énoncés de contexte différents et chaque énoncé de contexte a des paires de questions et de réponses. Parce que nous voulons créer nos propres questions pour la formation, nous devons combiner nos questions avec SQuAD. Heureusement pour nous, nos annotations sont déjà au format SQuAD, nous pouvons donc prendre nos exemples d'étiquettes et les ajouter en tant que nouveau sujet aux données SQuAD existantes.
Créer un objet de jeu de données de visage étreignant
Pour obtenir nos données dans le format de jeu de données de Hugging Face, nous avons plusieurs options. Nous pouvons utiliser le chargement_dataset option, auquel cas nous pouvons fournir un fichier CSV, JSON ou texte qui est chargé en tant qu'objet de jeu de données. Vous pouvez également fournir load_dataset
avec un script de traitement pour convertir votre fichier au format souhaité. Pour ce post, nous utilisons à la place le Dataset.from_dict()
méthode, qui nous permet de fournir un dictionnaire en mémoire pour créer un objet de jeu de données. Nous définissons également les fonctionnalités de notre jeu de données. Nous pouvons afficher les fonctionnalités en utilisant Visualiseur de jeu de données de Hugging Face, comme illustré dans la capture d'écran suivante.
Nos fonctionnalités sont les suivantes :
- ID – L'identifiant du texte
- titre – Le titre associé au sujet
- contexte – L'énoncé de contexte que le modèle doit rechercher pour trouver une réponse
- question – La question que l'on pose au mannequin
- répondre – Le texte de réponse accepté et son emplacement dans la déclaration de contexte
Les jeux de données Hugging Face nous permettent facilement de définir ce schéma :
Après avoir créé notre objet de jeu de données, nous devons tokenize le texte. Étant donné que les modèles ne peuvent pas accepter de texte brut en entrée, nous devons convertir notre texte en une entrée numérique qu'il peut comprendre, autrement appelée tokenization. La tokenisation est spécifique au modèle, alors comprenons le modèle que nous allons affiner. Nous utilisons un distilbert-base-sans boîtier maquette. Il ressemble beaucoup à BERT : il utilise des plongements d'entrée, une attention multi-tête (pour plus d'informations sur cette opération, reportez-vous à Le transformateur illustré) et les couches d'avance, mais a la moitié des paramètres du modèle de base BERT d'origine. Voir les couches de modèle initiales suivantes :
Décomposons chaque composant du titre du modèle. Le nom distilbert
indique le fait qu'il s'agit d'une version distillée du modèle de base BERT, qui est obtenu par un processus appelé distillation des connaissances. La distillation des connaissances nous permet de former un modèle d'étudiant plus petit non seulement sur les données de formation, mais également sur les réponses au même ensemble de formation à partir d'un modèle d'enseignant préformé plus large. base
fait référence à la taille du modèle, dans ce cas, le modèle a été distillé à partir d'un modèle de base BERT (par opposition à un grand modèle BERT). uncased
fait référence au texte sur lequel il a été formé. Dans ce cas, le texte ne tenait pas compte de la casse ; tout le texte sur lequel il a été formé était en minuscules. Le uncased
aspect affecte directement la façon dont nous symbolisons notre texte. Heureusement, en plus de fournir un accès facile au téléchargement de modèles de transformateurs, Hugging Face fournit également le tokenizer d'accompagnement du modèle. Nous avons également téléchargé un tokenizer personnalisé pour notre distilbert-base-uncased model
que nous utilisons maintenant pour transformer notre texte :
Une autre caractéristique de la classe dataset est qu'elle nous permet d'exécuter le prétraitement et la tokenisation en parallèle avec sa fonction de carte. Nous définissons une fonction de traitement et la passons ensuite à la méthode map.
Pour répondre aux questions, Hugging Face a besoin de plusieurs composants (qui sont également définis dans le glossaire):
- masque d'attention - Un masque indiquant au modèle à quels jetons prêter attention, utilisé principalement pour différencier le texte réel des jetons de remplissage
- start_positions – La position de départ de la réponse dans le texte
- fin_positions – La position finale de la réponse dans le texte
- ID_entrée – Les indices de jeton mappant les jetons au vocabulaire
Notre tokenizer marquera le texte, mais nous devons capturer explicitement les positions de début et de fin de notre réponse, c'est pourquoi nous avons défini une fonction de prétraitement personnalisée. Maintenant que nos entrées sont prêtes, commençons l'entraînement !
Lancer la tâche de formation
Nous pouvons exécuter la formation dans notre bloc-notes, mais les types d'instances dont nous avons besoin pour former notre modèle de questions-réponses dans un délai raisonnable, les instances p3 et p4, sont plutôt puissants. Ces instances ont tendance à être exagérées pour exécuter un ordinateur portable ou en tant que persistant Cloud de calcul élastique Amazon (Amazon EC2). C'est là qu'intervient la formation SageMaker. La formation SageMaker vous permet de lancer une tâche de formation sur une ou plusieurs instances spécifiées qui ne sont actives que pendant la durée de la tâche de formation. Cela nous permet de fonctionner sur des instances plus grandes comme le p4d.24xlarge, avec 8 GPU NVIDIA A100, mais sans se soucier d'avoir une facture énorme au cas où nous oublierions de l'éteindre. Cela nous donne également un accès facile à d'autres fonctionnalités de SageMaker, comme Expériences SageMaker pour suivre vos entraînements ML et Débogueur SageMaker pour comprendre et profiler vos métiers de formation.
Formation locale
Commençons par comprendre comment la formation d'un modèle dans Hugging Face fonctionne localement, puis passons en revue les ajustements que nous effectuons pour l'exécuter dans SageMaker.
Hugging Face facilite la formation grâce à l'utilisation de leur classe d'entraînement. La classe trainer nous permet de transmettre notre modèle, nos ensembles de données d'entraînement et de validation, nos hyperparamètres et même notre tokenizer. Parce que nous avons déjà notre modèle ainsi que nos ensembles d'entraînement et de validation, nous n'avons qu'à définir nos hyperparamètres. Nous pouvons le faire grâce au TrainingArguments
classe. Cela nous permet de spécifier des éléments tels que le taux d'apprentissage, la taille du lot, le nombre d'époques et des paramètres plus approfondis tels que la décroissance du poids ou une stratégie de planification du taux d'apprentissage. Après avoir défini notre TrainingArguments
, nous pouvons transmettre notre modèle, notre ensemble d'entraînement, notre ensemble de validation et nos arguments pour instancier notre classe d'entraînement. Ensuite, nous pouvons simplement appeler trainer.train()
pour commencer à former notre modèle. Le bloc de code suivant montre comment exécuter une formation locale :
Envoyer des données à S3
Faire la même chose dans la formation SageMaker est simple. La première étape consiste à mettre nos données dans Amazon S3 afin que notre modèle puisse y accéder. La formation SageMaker vous permet de spécifier une source de données ; vous pouvez utiliser des sources comme Amazon S3, Système de fichiers Amazon Elastic (Amazon EFS), ou Amazon FSx pour Lustre pour une ingestion de données hautes performances. Dans notre cas, notre jeu de données SQuAD augmenté n'est pas particulièrement volumineux, donc Amazon S3 est un bon choix. Nous téléchargeons nos données de formation dans un dossier d'Amazon S3 et lorsque SageMaker lance notre instance de formation, il télécharge les données à partir de notre emplacement spécifié.
Instancier le modèle
Pour lancer notre tâche d'entraînement, nous pouvons utiliser l'estimateur de visage étreignant intégré dans le SDK SageMaker. SageMaker utilise la classe d'estimateur pour définir les paramètres d'une tâche de formation ainsi que le nombre et le type d'instances à utiliser pour la formation. La formation SageMaker est construite autour de l'utilisation des conteneurs Docker. Vous pouvez utiliser les conteneurs par défaut dans SageMaker ou fournir votre propre conteneur personnalisé pour la formation. Dans le cas des modèles Hugging Face, SageMaker dispose de conteneurs Hugging Face intégrés avec toutes les dépendances dont vous avez besoin pour exécuter les tâches de formation Hugging Face. Tout ce que nous avons à faire est de définir notre script d'entraînement, que notre conteneur Hugging Face utilise comme point d'entrée.
Dans ce script d'apprentissage, nous définissons nos arguments, que nous transmettons à notre point d'entrée sous la forme d'un ensemble d'hyperparamètres, ainsi que notre code d'apprentissage. Notre code de formation est le même que si nous l'exécutions localement ; nous pouvons simplement utiliser le TrainingArguments
puis passez-les à un objet formateur. La seule différence est que nous devons spécifier l'emplacement de sortie pour que notre modèle soit dans /opt/ml/model
afin que la formation SageMaker puisse le prendre, le conditionner et l'envoyer à Amazon S3. Le bloc de code suivant montre comment instancier notre estimateur Hugging Face :
Affiner le modèle
Pour notre travail de formation spécifique, nous utilisons une instance p3.8xlarge composée de 4 GPU V100. La classe d'entraînement prend automatiquement en charge la formation sur des instances multi-GPU, nous n'avons donc pas besoin de configuration supplémentaire pour en tenir compte. Nous formons notre modèle pour deux époques, avec une taille de lot de 16 et un taux d'apprentissage de 4e5. Nous activons également la formation en précision mixte, qui utilise la précision mixte dans les domaines où nous pouvons réduire la précision numérique sans affecter la précision de notre modèle. Cela augmente notre mémoire disponible et nos vitesses d'entraînement. Pour lancer la tâche d'entraînement, nous appelons le fit
méthode de notre huggingface_estimator
classe.
Lorsque notre modèle est terminé, nous pouvons télécharger le modèle localement et le charger dans la mémoire de notre ordinateur portable pour le tester, ce qui est démontré dans l'ordinateur portable. Nous allons nous concentrer sur une autre option, en la déployant en tant que point de terminaison SageMaker !
Déployer le modèle entraîné
En plus de fournir des utilitaires pour la formation, SageMaker peut également permettre aux scientifiques des données et aux ingénieurs ML de déployer facilement des points de terminaison REST pour leurs modèles formés. Vous pouvez déployer des modèles formés dans ou en dehors de SageMaker. Pour plus d'informations, reportez-vous à Déployer un modèle dans Amazon SageMaker.
Étant donné que notre modèle a été formé dans SageMaker, il est déjà dans le bon format pour être déployé en tant que point de terminaison. Comme pour la formation, nous définissons une classe de modèle SageMaker qui définit le modèle, le code de service, ainsi que le nombre et le type d'instances que nous voulons déployer en tant que points de terminaison. Également similaire à la formation, le service est basé sur des conteneurs Docker, et nous pouvons utiliser l'un des conteneurs SageMaker intégrés ou fournir les nôtres. Pour cet article, nous utilisons un conteneur de service PyTorch intégré, nous devons donc simplement définir quelques éléments pour que notre point de terminaison soit opérationnel. Notre code de service a besoin de quatre fonctions :
- modèle_fn – Définit comment le point de terminaison charge le modèle (il ne le fait qu'une seule fois, puis le garde en mémoire pour les prédictions ultérieures)
- entrée_fn – Définit comment l'entrée est désérialisée et traitée
- prédire_fn – Définit comment notre modèle fait des prédictions sur notre entrée
- sortie_fn – Définit comment le point de terminaison formate et renvoie les données de sortie au client faisant la demande
Après avoir défini ces fonctions, nous pouvons déployer notre point de terminaison et lui transmettre des déclarations de contexte et des questions et renvoyer sa réponse prédite :
Visualiser les résultats du modèle
Parce que nous avons déployé un point de terminaison SageMaker qui nous permet d'envoyer des déclarations de contexte et de recevoir des réponses, nous pouvons revenir en arrière et visualiser les inférences résultantes dans le visualiseur SQuAD d'origine pour mieux visualiser ce que notre modèle a trouvé dans le contexte de passage. Pour ce faire, nous reformatons les résultats de l'inférence au format SQuAD, puis nous remplaçons les balises Liquid dans le modèle de travail par le JSON au format SQuAD. Nous pouvons ensuite iframer l'interface utilisateur résultante dans notre modèle de travail pour examiner de manière itérative les résultats dans le contexte d'un seul bloc-notes, comme illustré dans la capture d'écran suivante. Chaque question sur la gauche peut être cliqué pour mettre en surbrillance les étendues de texte sur la droite correspondant à la requête. Si aucune question n'est sélectionnée, toutes les étendues de texte sont mises en surbrillance à droite, comme indiqué ci-dessous.
Nettoyer
Pour éviter des frais futurs, exécutez le Nettoyer section du bloc-notes pour supprimer toutes les ressources, y compris les points de terminaison SageMaker, les objets S3 qui contiennent l'ensemble de données brutes et traitées et la pile CloudFormation. Lorsque la suppression est terminée, assurez-vous d'arrêter et de supprimer l'instance de bloc-notes qui héberge le script de bloc-notes actuel.
Conclusion
Dans cet article, vous avez appris à créer votre propre jeu de données de questions-réponses à l'aide de Ground Truth et à le combiner avec SQuAD pour former et déployer votre propre modèle de questions-réponses à l'aide de SageMaker. Une fois que vous avez terminé le bloc-notes, vous disposez d'un point de terminaison SageMaker déployé qui a été formé sur votre jeu de données Q&A personnalisé. Ce point de terminaison est prêt à être intégré dans vos flux de travail NLU de production, car les points de terminaison SageMaker sont disponibles via les API REST standard. Vous disposez également d'un ensemble de données personnalisé annoté au format SQuAD 2.0, qui vous permet de réentraîner votre modèle existant ou d'essayer d'entraîner d'autres architectures de modèles de questions-réponses. Enfin, vous disposez d'un mécanisme pour visualiser rapidement les résultats de votre inférence en chargeant le modèle de travail dans votre bloc-notes local.
Expérimenter le cahier, complétez-le avec vos propres questions, et formez et déployez votre propre modèle de réponse aux questions personnalisé pour vos cas d'utilisation NLU !
Bonne construction!
À propos des auteurs
Jérémy Feltracco est un ingénieur en développement logiciel au Amazon ML Solutions Lab chez Amazon Web Services. Il utilise son expérience en vision par ordinateur, en robotique et en apprentissage automatique pour aider les clients AWS à accélérer l'adoption de l'IA.
Vidya Sagar Ravipati est gestionnaire au Laboratoire de solutions Amazon ML, où il met à profit sa vaste expérience des systèmes distribués à grande échelle et sa passion pour l'apprentissage automatique pour aider les clients AWS de différents secteurs verticaux à accélérer leur adoption de l'IA et du cloud. Auparavant, il était ingénieur en apprentissage automatique dans les services de connectivité chez Amazon, qui a aidé à créer des plates-formes de personnalisation et de maintenance prédictive.
Isaac Privitéra est Senior Data Scientist au Amazon Machine Learning Solutions Lab, où il développe des solutions d'apprentissage automatique et d'apprentissage en profondeur sur mesure pour résoudre les problèmes commerciaux des clients. Il travaille principalement dans le domaine de la vision par ordinateur, se concentrant sur l'offre aux clients AWS d'une formation distribuée et d'un apprentissage actif.
- Coinsmart. Le meilleur échange Bitcoin et Crypto d'Europe.
- Platoblockchain. Intelligence métaverse Web3. Connaissance amplifiée. ACCÈS LIBRE.
- CryptoHawk. Radar Altcoins. Essai gratuit.
- Source : https://aws.amazon.com/blogs/machine-learning/build-a-custom-qa-dataset-using-amazon-sagemaker-ground-truth-to-train-a-hugging-face-qa- modèle nlu/
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- A Propos
- accélérer
- accès
- Selon
- Compte
- Comptabilité
- Avec cette connaissance vient le pouvoir de prendre
- à travers
- infection
- ajout
- Supplémentaire
- propos
- Adoption
- agents
- AI
- Tous
- Permettre
- déjà
- Amazon
- Amazon Web Services
- montant
- Une autre
- répondre
- Apis
- architecture
- Réservé
- arguments
- autour
- article
- sur notre blog
- Assistante gérante
- précaution
- audit
- augmentée
- auteurs
- Automatisation
- Automatique
- disponibles
- AWS
- fond
- une barrière
- obstacles
- Début
- va
- ci-dessous
- Projet de loi
- Bit
- Block
- corps
- frontière
- construire
- intégré
- la performance des entreprises
- Appelez-nous
- Peut obtenir
- capturer
- cas
- challenge
- difficile
- des charges
- Selectionnez
- classe
- le cloud
- code
- Collecte
- composant
- calcul
- ordinateur
- configuration
- Connectivité
- Console
- consolidation
- Contenant
- Conteneurs
- contient
- contenu
- entrepreneurs
- Correspondant
- Costs
- engendrent
- créée
- crée des
- La création
- Courant
- Customiser
- des clients
- Support à la clientèle
- Clients
- données
- Data Scientist
- profond
- livrer
- démontrer
- démontré
- dépend
- déployer
- déployé
- déployer
- déploiement
- un
- détaillé
- détails
- Déterminer
- Développement
- différent
- difficile
- directement
- Maladie
- distribué
- Docker
- Ne fait pas
- down
- download
- téléchargements
- conduite
- pendant
- même
- permettant
- Endpoint
- ingénieur
- Les ingénieurs
- Anglais
- évaluation
- exemple
- existant
- d'experience
- Extraits
- Visage
- Fonctionnalité
- Fonctionnalités:
- finalement
- Prénom
- Focus
- mettant l'accent
- Abonnement
- formulaire
- le format
- Avant
- trouvé
- gratuitement ici
- fonction
- plus
- avenir
- générer
- générateur
- génération
- GitHub
- aller
- Bien
- aider
- aide
- de haute qualité
- Souligner
- Surbrillance
- très
- hébergement
- Comment
- How To
- HTTPS
- majeur
- humain
- Les êtres humains
- Des centaines
- identifier
- identifier
- Identite
- image
- Mettre en oeuvre
- mis en œuvre
- impossible
- améliorer
- Inc
- comprendre
- inclut
- Y compris
- de plus en plus
- industrie
- d'information
- Infrastructure
- contribution
- l'intégration
- Intelligent
- intérêt
- Interfaces
- International
- intuitif
- IT
- lui-même
- JavaScript
- Emploi
- Emplois
- ACTIVITES
- spécialisées
- connu
- laboratoire
- l'étiquetage
- Etiquettes
- langue
- gros
- plus importantes
- lancer
- savant
- apprentissage
- Laisser
- les leviers
- Autorisé
- Probable
- Gamme
- Liquide
- Liste
- charge
- chargement
- locales
- localement
- emplacement
- click
- machine learning
- FAIT DU
- Fabrication
- gérés
- manager
- Localisation
- cartographie
- Map
- Stratégie
- masque
- assorti
- sens
- veux dire
- Mémoire
- mixte
- ML
- modèle
- numériques jumeaux (digital twin models)
- Surveiller
- PLUS
- (en fait, presque toutes)
- plusieurs
- Nature
- cahier
- nombre
- obtenu
- code
- Offres Speciales
- en ligne
- ouvert
- ouverture
- fonctionner
- d'exploitation
- opération
- Optimiser
- l'optimisation
- Option
- Options
- de commander
- organisation
- Autre
- autrement
- propre
- partie
- particulier
- particulièrement
- Payer
- effectuer
- Personnalisation
- Plateformes
- Point
- des notes bonus
- Portail
- position
- positif
- solide
- prévoir
- Prédictions
- établissement des prix
- Privé
- Problème
- d'ouvrabilité
- processus
- les process
- traitement
- Produit
- Vidéo
- Produits
- profilage
- fournir
- fournit
- aportando
- public
- Questions et réponses
- qualité
- question
- vite.
- raw
- en cours
- raisonnable
- recevoir
- réduire
- dépôt
- représentation
- Resources
- REST
- Résultats
- retourner
- de revenus
- Avis
- robotique
- Round
- Courir
- pour le running
- Évolutivité
- Scientifique
- scientifiques
- Sdk
- Rechercher
- sécurité
- clignotant
- segmentation
- segments
- choisi
- Services
- service
- set
- installation
- Shorts
- montré
- similaires
- étapes
- Taille
- compétences
- petit
- So
- Logiciels
- développement de logiciels
- solide
- sur mesure
- Solutions
- quelques
- l'espace
- spécial
- spécialisé
- spécifiquement
- empiler
- Standard
- Commencer
- Déclaration
- déclarations
- storage
- Boutique
- de Marketing
- structuré
- Étudiant
- réussi
- la quantité
- Support
- Les soutiens
- combustion propre
- Système
- tâches
- tester
- Avec
- fiable
- long
- Titre
- jeton
- tokenization
- tokenisé
- Tokens
- Les sujets
- torche
- Tracking
- Formation
- Transformer
- types
- ui
- comprendre
- compréhension
- us
- utilisé
- utiliser
- validation
- Plus-value
- variété
- fournisseurs
- Vérification
- Versus
- verticales
- Vidéo
- Voir
- virus
- vision
- Voix
- attendez
- web
- services Web
- Quoi
- tout en
- WHO
- Wikipédia
- dans les
- sans
- activités principales
- ouvriers
- Nos inspecteurs
- vos contrats
- vers
- années