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
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, consultez Créer des ressources d’espace de travail. 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.
Le kit SDK Python d’Azure Machine Learning installé.
Pour installer le kit de développement logiciel (SDK), vous pouvez :
Créer une instance de calcul, qui installe automatiquement le kit SDK et est préconfigurée pour les workflows ML. Consultez Créer et gérer une instance de calcul Azure Machine Learning pour plus d’informations.
Installez vous-même le package
automl
, qui comprend l’installation par défaut du Kit de développement logiciel (SDK).
Important
Les commandes python de cet article requièrent la dernière
azureml-train-automl
version du package.- Installez le dernier package
azureml-train-automl
dans votre environnement local. - Pour plus d’informations sur le dernier package
azureml-train-automl
, consultez les notes de publication.
Cet article suppose une connaissance de base en matière de configuration d’une expérience de Machine Learning automatisé. Suivez le didacticiel ou les procédures 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 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 votreAutoMLConfig
. Cela profitera au niveau de performance du modèle, mais l’apprentissage prendra plus de temps.
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.
- Classification d’images (plusieurs classes)
- Classification de texte multiétiquette
- Reconnaissance d’entité nommée
Étapes suivantes
- Découvrez plus d’informations sur comment et où déployer un modèle.
- Résoudre les problèmes d’expériences de ML automatisé.