# Configurer AutoML pour effectuer l’apprentissage d’un modèle de traitement en langage naturel (préversion)

S’APPLIQUE À : SDK Python azure-ai-ml v2 (préversion)

Important

Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Dans cet article, vous apprendrez à former des modèles de traitement du langage naturel (NLP) avec le Machine Learning automatisé dans Azure Machine Learning. Vous pouvez créer des modèles NLP avec ML automatisé via le Kit de développement logiciel (SDK) Python Azure Machine Learning v2 (préversion) ou l’interface CLI Azure Machine Learning v2.

Le ML automatisé prend en charge NLP, ce qui permet aux professionnels du ML et aux scientifiques des données d’apporter leurs propres données textuelles et de construire des modèles personnalisés pour des tâches telles que la classification de textes multi-classes, la classification de textes multi-étiquettes et la reconnaissance d’entités nommées (NER).

Vous pouvez intégrer en toute transparence la fonctionnalité d’étiquetage des données Azure Machine Learning pour étiqueter vos données texte ou placer vos données étiquetées existantes. Le ML automatisé offre la possibilité d’utiliser la formation distribuée sur des clusters de calcul à plusieurs GPU pour accélérer l’apprentissage des modèles. Le modèle résultant peut être rendu opérationnel à l’échelle en tirant parti des fonctionnalités de MLOps d’Azure ML.

Prérequis

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

  • Abonnement Azure. Si vous n’avez pas d’abonnement Azure, inscrivez-vous ou essayez la version gratuite ou payante d’Azure Machine Learning aujourd’hui.

  • Un espace de travail Azure Machine Learning avec un calculateur d’entraînement de GPU. Pour créer l’espace de travail, voir Créer un espace de travail Azure Machine Learning. Pour plus d’informations sur les instances GPU fournies par Azure, consultez Tailles de machine virtuelle optimisées par GPU.

    Avertissement

    La prise en charge des modèles multilingues et de l’utilisation de modèles avec une longueur de séquence maximale plus longue est nécessaire pour plusieurs cas d’usage de NLP, comme les jeux de données non anglais et les documents plus longs. Par conséquent, ces scénarios peuvent nécessiter une plus grande mémoire GPU pour que l’apprentissage du modèle aboutisse, par exemple la série NC_v3 ou la série ND.

  • L'interface CLI Azure Machine Learning v2 installée. Pour obtenir des conseils sur la mise à jour et l’installation de la dernière version, consultez Installer et configurer l’interface CLI (v2).

  • Cet article suppose une connaissance de base en matière de configuration d’une expérience de Machine Learning automatisé. Suivez le guide pratique pour connaître les principaux modèles de conception des expériences de Machine Learning automatisé.

Sélectionnez votre tâche de NLP

Déterminez la tâche de NLP que vous souhaitez accomplir. Actuellement, le ML automatisé prend en charge les tâches de NLP suivantes du réseau neuronal profond.

Tâche Syntaxe du travail AutoML Description
Classification d’images à plusieurs classes CLI v2 : text_classification
Kit de développement logiciel (SDK) v2 (préversion) : text_classification()
Il existe plusieurs classes possibles, et chaque exemple peut être classé comme exactement une classe. La tâche consiste à prédire la classe correcte pour chaque exemple.

Par exemple, la classification d’un script de film en tant que « comédie » ou « romantique ».
Classification de texte multiétiquette CLI v2 : text_classification_multilabel
Kit de développement logiciel (SDK) v2 (préversion) : text_classification_multilabel()
Il existe plusieurs classes possibles, et chaque exemple peut être affecté à un nombre quelconque de classes. La tâche consiste à prédire toutes les classes de chaque exemple

Par exemple, la classification d’un script de film en tant que « comédie » ou « romantique », ou « comédie et romantique ».
Reconnaissance d’entité nommée (NER) CLI (v2) : text_ner
Kit de développement logiciel (SDK) v2 (préversion) : text_ner()
Il existe plusieurs étiquettes possibles pour les jetons dans les séquences. La tâche consiste à prédire les étiquettes de tous les jetons pour chaque séquence.

Par exemple, l’extraction d’entités spécifiques à un domaine à partir d’un texte non structuré, comme des contrats ou des documents financiers

Préparation des données

Pour les expériences de NLP dans le ML automatisé, vous pouvez apporter vos données au format .csv pour les tâches de classification multi-classe et multi-étiquette. Pour les tâches de NER, les fichiers .txt à deux colonnes qui utilisent un espace comme séparateur et adhèrent au format CoNLL sont pris en charge. Les sections suivantes fournissent des détails supplémentaires sur le format de données accepté pour chaque tâche.

Multi-classe

Pour la classification multiclasse, le jeu de données peut contenir plusieurs colonnes de texte et exactement une colonne d’étiquette. L’exemple suivant n’a qu’une seule colonne de texte.

text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"

Multi-étiquette

Dans le cas d’une classification en plusieurs étiquettes, les colonnes du jeu de données sont les mêmes que pour les classes multiples, mais il existe des exigences de format spéciales pour les données dans la colonne d’étiquette. Les deux formats et exemples acceptés sont répertoriés dans le tableau suivant.

Options de format de colonne d’étiquette Étiquettes multiples Une étiquette Aucune étiquette
Texte brut "label1, label2, label3" "label1" ""
Liste Python avec guillemets "['label1','label2','label3']" "['label1']" "[]"

Important

Différents analyseurs sont utilisés pour lire les étiquettes pour ces formats. Si vous utilisez le format texte brut, utilisez uniquement des caractères alphabétiques, numériques et '_' dans vos étiquettes. Tous les autres caractères sont reconnus comme séparateurs d’étiquettes.

Par exemple, si votre étiquette est "cs.AI", elle est lue en tant que "cs" et "AI". Tandis qu’avec le format de liste Python, l’étiquette est "['cs.AI']", lue sous la forme "cs.AI".

Exemples de données pour plusieurs étiquettes au format texte brut.

text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""

Exemple de données pour plusieurs étiquettes dans une liste Python avec des guillemets.

text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"

La reconnaissance d’entités nommées (NER)

Contrairement aux cas multi-classe ou à étiquettes multiples, qui acceptent les jeux de données au format .csv, la reconnaissance d’entité nommée requiert le format CoNLL. Le fichier doit contenir exactement deux colonnes et, dans chaque ligne, le jeton et l’étiquette sont séparés par un seul espace.

Par exemple,

Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc

Stephen B-per
Curry I-per
got O
three O
championship O
rings O

Validation des données

Avant la formation, le ML automatisé applique des vérifications de validation des données sur les données d’entrée pour s’assurer que celles-ci peuvent être prétraitées correctement. Si l’une de ces vérifications échoue, l’exécution échoue avec le message d’erreur approprié. Voici les conditions requises pour réussir les vérifications de validation des données pour chaque tâche.

Notes

Certaines vérifications de validation des données sont applicables à la fois à la formation et au jeu de validation, tandis que d’autres s’appliquent uniquement au jeu d’apprentissage. Si le jeu de données de test n’a pas pu passer la validation des données, cela signifie que le ML automatisé n’a pas pu le capturer et qu’il existe un risque d’échec de l’inférence de modèle ou d’une baisse des performances du modèle.

Tâche Contrôle de validation des données
Toutes les tâches Au moins 50 exemples d’apprentissage sont requis
Multi-classe et multi-étiquette Les données d’apprentissage et les données de validation doivent avoir
- Le même ensemble de colonnes
- Le même ordre de colonnes de gauche à droite
- Le même type de données pour les colonnes portant le même nom
- Au moins deux étiquettes uniques
- Des noms de colonnes uniques au sein de chaque jeu de données (par exemple, le jeu d’apprentissage ne peut pas avoir plusieurs colonnes nommées Age)
Multi-classe uniquement None
Étiquettes multiples uniquement - Le format de la colonne d’étiquette doit être au format accepté
- Au moins un échantillon doit avoir 0 ou 2+ étiquettes, sinon il doit s’agir d’une tâche multiclass
- Toutes les étiquettes doivent être au format str ou int, sans chevauchement. Vous ne devez pas avoir à la fois des étiquettes 1 et '1'
NER uniquement - Le fichier ne doit pas commencer par une ligne vide
- Chaque ligne doit être une ligne vide ou suivre le format {token} {label}, où il y a exactement un espace entre le jeton et l’étiquette et aucun espace après l’étiquette
- Toutes les étiquettes doivent commencer par I-, B- ou être exactement O. Respect de la casse
- Exactement une ligne vide entre deux échantillons
- Exactement une ligne vide à la fin du fichier

Configurer une expérience

La fonctionnalité de NLP du ML est déclenchée via des travaux de type automl spécifique d’une tache. Le flux de travail est le même que pour soumettre des expériences de ML automatisé pour des tâches de classification, de régression et de prévision. Vous devez définir des paramètres comme vous le feriez pour ces expériences, par exemple, experiment_name, compute_name et des entrées de données.

Cependant, il existe des différences clés :

  • Vous pouvez ignorer primary_metric, car il ne concerne que la création de rapports. Actuellement, le ML automatisé ne forme qu’un modèle par exécution pour NLP et il n’y a pas de sélection de modèle.
  • Le paramètre label_column_name est uniquement requis pour les tâches de classification de texte multiclasse et à plusieurs étiquettes.
  • Si la majorité des échantillons de votre jeu de données comportent plus de 128 mots, il est considéré comme étant de longue portée. Par défaut, le ML automatisé considère que tous les exemples sont du texte de longue portée. Pour désactiver cette fonctionnalité, incluez le paramètre enable_long_range_text=False dans votre AutoMLConfig.
    • Si vous activez le texte à longue portée, vous aurez besoin d’un GPU doté d’une plus grande capacité de mémoire, comme la série NCv3 ou ND.
    • Le paramètre enable_long_range_text est accessible uniquement aux tâches de classification multiclasse.

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

Pour les travaux AutoML de l’interface CLI v2, vous configurez votre expérience dans un fichier YAML comme suit.

Paramètres de langue

Dans le cadre de la fonctionnalité de NLP, le ML automatisé prend en charge les 104 langues qui tirent parti des modèles DNN de texte préformés et spécifiques aux langues, comme la famille de modèles BERT. Actuellement, la sélection de langue par défaut est l’anglais.

Le tableau suivant récapitule le modèle appliqué en fonction du type de tâche et de la langue. Consultez la liste complète des langages pris en charge et de leurs codes.

Type de tâche Syntaxe pour dataset_language Algorithme du modèle de texte
Classification de texte multiétiquette "eng"
"deu"
"mul"
BERT anglais sans casse
German BERT
BERT multilingue

Pour tous les autres langages, le Machine Learning automatisé applique BERT multilingue
Classification d’images à plusieurs classes "eng"
"deu"
"mul"
BERT anglais avec casse
BERT multilingue

Pour tous les autres langages, le Machine Learning automatisé applique BERT multilingue
La reconnaissance d’entités nommées (NER) "eng"
"deu"
"mul"
BERT anglais avec casse
German BERT
BERT multilingue

Pour tous les autres langages, le Machine Learning automatisé applique BERT multilingue

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

Vous pouvez spécifier la langue de votre jeu de données dans la section caractérisation de votre fichier YAML de configuration. BERT est également utilisé dans le processus de caractérisation de la formation d’expérimentation de ML automatisé. Découvrez-en plus sur l’intégration de BERT et la caractérisation dans le ML automatisé.

featurization:
   dataset_language: "eng"

Entraînement distribué

Vous pouvez également exécuter vos expériences NLP avec la formation distribuée sur un cluster de calcul Azure ML.

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

Soumettre le travail AutoML

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)

Pour soumettre votre travail AutoML, vous pouvez exécuter la commande CLI v2 suivante avec le chemin d’accès à votre fichier .yml, le nom de l’espace de travail, le groupe de ressources et l’ID d’abonnement.


az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]

Exemples de code

Consultez les exemples de fichiers YAML suivants pour chaque tâche NLP.

Étapes suivantes