Partager via


Configurer le Machine Learning automatisé pour effectuer l’apprentissage d’un modèle de traitement en langage naturel avec Python (préversion)

S’APPLIQUE À : SDK Python azureml v1

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 le SDK Azure Machine Learning Python.

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 qui en résulte peut être rendu opérationnel à grande échelle en tirant parti des fonctionnalités MLOps d’Azure Machine Learning.

Prérequis

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 AutoMLConfig Description
Classification d’images à plusieurs classes task = '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 task = '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) task = '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 un jeu de données Azure Machine Learning avec le format .csv pour les tâches de classification multi-classes et à plusieurs étiquettes. 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 - Les jeux d’entraînement et de validation doivent être fournis
- Au moins 50 exemples d’entraînement 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 AutoMLConfig, qui est le même workflow que pour soumettre des expériences de ML automatisé pour les tâches de classification, régression et prévision. Vous devez définir la plupart des paramètres comme vous le feriez pour ces expériences, comme task, compute_target et les 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. Pour ce scénario, vous pouvez activer l’option de texte à longue portée avec le paramètre enable_long_range_text=True dans votre AutoMLConfig. Cela profitera au niveau de performance du modèle, mais l’apprentissage prendra plus de temps.
    • 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.
automl_settings = {
    "verbosity": logging.INFO,
    "enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}

automl_config = AutoMLConfig(
    task="text-classification",
    debug_log="automl_errors.log",
    compute_target=compute_target,
    training_data=train_dataset,
    validation_data=val_dataset,
    label_column_name=target_column_name,
    **automl_settings
)

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

Vous pouvez spécifier la langue de votre jeu de données dans votre FeaturizationConfig. 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é.

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)

Entraînement distribué

Vous pouvez également exécuter vos expériences NLP avec la formation distribuée sur un cluster de calcul Azure Machine Learning. Cela est géré automatiquement par le ML automatisé lorsque les paramètres max_concurrent_iterations = number_of_vms et enable_distributed_dnn_training = True sont fournis dans votre AutoMLConfig pendant la configuration de l’expérimentation.

max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True

Dans ce cas, il planifie la formation distribuée des modèles de NLP et s’adapte automatiquement à chaque GPU sur votre machine virtuelle ou cluster de machines virtuelles. Le nombre maximal de machines virtuelles autorisées est de 32. La formation est planifiée avec un nombre de machines virtuelles qui est une puissance de deux.

Exemples de notebooks

Consultez les exemples de notebook pour des exemples de code détaillés pour chaque tâche de NLP.

Étapes suivantes