Didacticiel ML.NET - Démarrage en 10 minutes
Intro
Objectif
Utilisez ML.NET Model Builder dans Visual Studio pour entraîner et utiliser votre premier modèle d'apprentissage automatique avec ML.NET.
Installez l’interface CLI ML.NET, puis entraînez et utilisez votre premier modèle Machine Learning avec ML.NET.
Prérequis
Aucun.
macOS 12.0 ou versions ultérieures.
Durée d’exécution
10 minutes + temps de téléchargement/d'installation
Scénario
Application qui peut prédire si le texte des avis des clients est négatif ou positif.
Télécharger et installer
Télécharger et installer Visual Studio 2022.
Télécharger Visual Studio 2022
Lors de l'installation, la charge de travail .NET desktop development doit être sélectionnée avec le composant ML.NET Model Builder facultatif. L'utilisation du lien ci-dessus doit présélectionner correctement tous les prérequis, comme indiqué sur l'image suivante :
Vous avez déjà Visual Studio 2022 ?
Si vous avez déjà Visual Studio 2022, vérifiez qu’il est à jour et que la charge de travail requise est installée :
- Sélectionnez la touche Windows, tapez Visual Studio Installer, puis appuyez sur Entrée.
- Si vous y êtes invité, autorisez le programme d’installation à se mettre à jour lui-même.
- Si une mise à jour pour Visual Studio 2022 est disponible, un bouton Mettre à jour est affiché. Sélectionnez-le pour effectuer la mise à jour avant de modifier l’installation. Nous vous recommandons d’utiliser la dernière version de Visual Studio 2022 pour ce didacticiel.
- Recherchez votre installation Visual Studio 2022 et sélectionnez le bouton Modifier.
- Sélectionnez développement de bureau.NET et vérifiez que ML.NET Model Builder est sélectionné dans le volet droit. Sélectionnez le bouton Modifier.
Mettre à niveau vers la dernière version de Model Builder
Une fois que vous avez activé ML.NET Model Builder dans Visual Studio, téléchargez et installez la dernière version.
Téléchargez la dernière version de Model Builder
Après le téléchargement, installez l'extension en double-cliquant sur le fichier .vsix.
Vérifier les mises à jour de Visual Studio
Ce didacticiel est optimisé pour la dernière version de Visual Studio. Si vous avez déjà Visual Studio 2022, vous pouvez rechercher les mises à jour :
- Sélectionnez la touche Windows, tapez Visual Studio Installer, puis appuyez sur Entrée.
- Si vous y êtes invité, autorisez le programme d’installation à se mettre à jour lui-même.
- Si une mise à jour est disponible, votre installation de Visual Studio 2022 aura un bouton Mettre à jour. Sélectionnez-le pour mettre à jour.
Installer le SDK .NET
Pour générer des applications .NET, vous devez télécharger et installer le Kit de développement logiciel (SDK) .NET 8.
Télécharger le Kit de développement logiciel (SDK) .NET 8 x64 (Intel)
Télécharger le Kit de développement logiciel (SDK) .NET 8 Arm64 (Apple Silicon)
Si vous utilisez un Mac équipé d'une puce Apple M1 ou M2, vous devez installer la version Arm64 du SDK.
Installer ML.NET CLI
L'interface de ligne de commande (CLI) ML.NET fournit des outils pour créer des modèles d'apprentissage automatique avec ML.NET.
Remarque : Actuellement, ML.NET CLI est en préversion et prend uniquement en charge la dernière version LTS du Kit de développement logiciel (SDK) .NET (.NET 8).
Pour les étapes d'installation, nous vous recommandons d'utiliser une console Bash. Étant donné que la valeur par défaut pour macOS est une console zsh, vous pouvez créer une instance unique en ouvrant un nouveau terminal et en exécutant la commande ci-dessous.
bash
POUR LES MACHINES x64 – Exécutez la commande suivante :
dotnet tool install -g mlnet-linux-x64
POUR LES ARCHITECTURES DE PUCES ARM64 – Exécutez plutôt la commande suivante :
dotnet tool install -g mlnet-linux-arm64
Si l’outil s’installe correctement, vous devriez voir le message de sortie suivant où [arch]
est l’architecture des puces :
You can invoke the tool using the following command: mlnet
Tool 'mlnet-linux-[arch]' (version 'X.X.X') was successfully installed.
dotnet tool install -g mlnet-osx-x64
POUR LES ARCHITECTURES DE PUCES ARM64 – Exécutez plutôt la commande suivante :
dotnet tool install -g mlnet-osx-arm64
Si l’outil s’installe correctement, vous devriez voir un message de sortie où [arch]
est l’architecture de puce similaire à ce qui suit :
You can invoke the tool using the following command: mlnet
Tool 'mlnet-osx-[arch]' (version 'X.X.X') was successfully installed.
Remarque : Si vous utilisez une console autre que Bash (par exemple, zsh, qui est la nouvelle valeur par défaut pour macOS), vous devrez alors donner à mlnet
l'exécutable autorisations et incluez mlnet
dans le chemin du système. Des instructions sur la façon de procéder devraient apparaître dans le terminal lorsque vous installez mlnet (ou tout autre outil global). En général, la commande suivante devrait fonctionner pour la plupart des systèmes : chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE]
Si vous voyez des instructions similaires à celle ci-dessous, exécutez-les dans votre terminal.
cat << \EOF >> ~/.zprofile
#Add .NET Core SDK tools
export PATH="$PATH:~/.dotnet/tools"
EOF
Vous pouvez également essayer d'utiliser la commande suivante pour exécuter l'outil mlnet :
~/.dotnet/tools/mlnet
Si la commande génère toujours une erreur, utilisez le bouton J’ai rencontré un problème ci-dessous pour signaler le problème et obtenir de l’aide pour résoudre le problème.
Créez votre application
Ouvrez Visual Studio et créez une nouvelle application de console .NET :
- Sélectionnez Créer un nouveau projet dans la fenêtre de démarrage Visual Studio 2022.
- Sélectionnez le modèle de projet Application de console C#.
- Remplacez le nom du projet par
myMLApp
. - Vérifiez que Installer la solution et le projet dans le même répertoire est désactivé.
- Sélectionnez le bouton Suivant.
- Sélectionnez .NET 8.0 (prise en charge de long terme) comme cadre.
- Sélectionnez le bouton Créer. Visual Studio crée votre projet et charge le fichier
Program.cs
.
Ajouter le Machine Learning
Faites un clic droit sur le projet
myMLApp
dans Solution Explorer et sélectionnez Ajouter > Modèle Machine Learning.- Dans la boîte de dialogue Ajouter un nouvel élément, assurez-vous que Modèle d'apprentissage automatique (ML.NET) est sélectionné.
Remplacez le champ Nom par
SentimentModel.mbconfig
et sélectionnez le bouton Ajouter.
Un nouveau fichier nommé SentimentModel.mbconfig
est ajouté à votre solution et l'interface utilisateur de Model Builder s'ouvre dans une nouvelle fenêtre d'outil ancrée dans Visual Studio. Le fichier mbconfig est simplement un fichier JSON qui assure le suivi de l'état de l'interface utilisateur.
Model Builder vous guidera tout au long du processus de création d'un modèle d'apprentissage automatique dans les étapes suivantes.
Dans votre terminal, exécutez les commandes suivantes :
mkdir myMLApp
cd myMLApp
La commande mkdir
crée un répertoire nommé myMLApp
et la commande cd myMLApp
vous place dans le répertoire d’applications nouvellement créé.
Votre code de formation de modèle sera généré dans les prochaines étapes.
Choisissez un scénario
Pour générer votre modèle, vous devez d'abord sélectionner votre scénario d'apprentissage automatique. Model Builder prend en charge plusieurs scénarios :
Remarque : Si les captures d’écran du didacticiel ne correspondent pas à ce que vous voyez, vous devrez peut-être mettre à jour votre version de Model Builder. Accédez à Extensions > Gérer les extensions pour vous assurer qu’aucune mise à jour n’est disponible pour Model Builder. La version utilisée dans ce tutoriel est 17.18.2.
Dans ce cas, vous allez prédire le sentiment en fonction du contenu (texte) des avis des clients.
-
Dans l’écran scénario Model Builder, sélectionnez le scénario classification des données, puisque vous prévoyez la catégorie à laquelle un commentaire appartient (positive ou négative).
-
Après avoir sélectionné le scénario classification des données, vous devez choisir votre environnement de formation. Bien que certains scénarios prennent en charge la formation dans Azure, Classification ne prend actuellement en charge que la formation locale. Par conséquent, maintenez l’environnement Local sélectionné et passez à l’étape Données.
Pour générer votre modèle, vous devez sélectionner votre scénario d'apprentissage automatique.
Plusieurs scénarios de ML sont pris en charge par l'interface de ligne de commande ML.NET :
- Classification : utilisez cette option pour prédire les données de catégorie qui appartiennent (par exemple, l’analyse du sentiment des avis clients comme positifs ou négatifs).
- Classification d'image : utilisez cette option lorsque vous souhaitez prédire à quelle catégorie appartient une image (par exemple, prédire si une image représente un chat ou un chien).
- Regression (par exemple, prédiction de valeur) : utilisez cette option lorsque vous souhaitez prédire une valeur numérique (par exemple, la prédiction du prix des maisons).
- Prévision - Utilisez cette option pour prévoir les valeurs futures d’une série chronologique (par exemple, prévoir les ventes mensuelles).
- Recommendation : utilisez cette option lorsque vous souhaitez recommander des éléments aux utilisateurs en fonction des évaluations historiques (par exemple, une recommandation de produit).
Dans ce cas, vous allez prédire le sentiment en fonction du contenu (texte) des avis clients. Vous allez donc utiliser classification.
Télécharger et ajouter des données
Téléchargez les ensembles de données Sentiment Labelled Sentences à partir du référentiel d'apprentissage automatique UCI. Décompressez sentiment labelled sentences.zip
et enregistrez le fichier yelp_labelled.txt
dans le répertoire myMLApp
.
Votre Explorateur de solutions devrait ressembler à ce qui suit :
Chaque ligne dans yelp_labelled.txt
représente un avis différent sur un restaurant laissé par un utilisateur sur Yelp. La première colonne représente le commentaire laissé par l'utilisateur et la deuxième colonne représente le sentiment du texte (0 est négatif, 1 est positif). Les colonnes sont séparées par des tabulations et le jeu de données n'a pas d'en-tête. Les données ressemblent à ce qui suit :
Wow... Loved this place. 1
Crust is not good. 0
Not tasty and the texture was just nasty. 0
Ajouter des données
Dans Model Builder, vous pouvez ajouter des données à partir d’un fichier local ou vous connecter à une base de données SQL Server. Dans ce cas, vous allez ajouter yelp_labelled.txt
à partir d’un fichier.
Sélectionnez Fichier comme type de source de données d'entrée.
Recherchez
yelp_labelled.txt
. Une fois que vous avez sélectionné votre ensemble de données, un aperçu de vos données apparaît dans la section Aperçu des données. Étant donné que votre ensemble de données n'a pas d'en-tête, les en-têtes sont générés automatiquement ("col0" et "col1").Sous Colonne pour prédire (Étiquette), select "col1". L’ Étiquette est ce que vous prévoyez, qui dans ce cas correspond au sentiment trouvé dans la deuxième colonne ("col1") du jeu de données.
Les colonnes utilisées pour prédire le libellé sont appelées Caractéristiques. Toutes les colonnes du jeu de données en plus de l'étiquette sont automatiquement sélectionnées en tant qu'entités. Dans ce cas, la colonne de commentaire de révision ("col0") est la colonne Fonctionnalité. Vous pouvez mettre à jour les colonnes de fonctionnalité et modifier d'autres options de chargement de données dans Options de données avancées, mais cela n'est pas nécessaire pour cet exemple.
Après avoir ajouté vos données, passez à l'étape Entraîner.
Entraîner votre modèle
Vous allez maintenant entraîner votre modèle avec l'ensemble de données yelp_labelled.txt
.
Model Builder évalue de nombreux modèles avec différents algorithmes et paramètres en fonction de la durée d’apprentissage donnée pour générer le modèle le plus performant.
Modifiez le Temps d'entraînement, qui correspond au temps pendant lequel vous souhaitez que Model Builder explore divers modèles, à 60 secondes (vous pouvez essayer d'augmenter ce nombre si aucun modèle se trouvent après la formation) . Notez que pour les ensembles de données plus volumineux, le temps de formation sera plus long. Model Builder ajuste automatiquement le temps de formation en fonction de la taille de l'ensemble de données.
Vous pouvez mettre à jour l’indicateur de performance d’optimisation et les algorithmes utilisés dans les Options de formation avancées, mais cela n’est pas nécessaire pour cet exemple.
Sélectionnez Démarrer la formation pour démarrer le processus de formation. Une fois la formation démarrée, vous pouvez voir le temps restant.
Résultats d'entraînement
Une fois l’apprentissage terminé, vous pouvez afficher un résumé des résultats de la formation.
- Meilleure précision macro : ceci vous montre la précision du meilleur modèle trouvé par Model Builder. Une précision plus élevée signifie que le modèle prédit plus correctement sur les données de test.
- Meilleur modèle – Cela vous montre quel algorithme a le mieux fonctionné lors de l'exploration de Model Builder.
- Temps d’entraînement : indique la durée totale consacrée à l’apprentissage/à l’exploration des modèles.
- Modèles explorés (total) : affiche le nombre total de modèles explorés par Model Builder dans le temps donné.
- Code-behind généré : ceci vous montre les noms des fichiers générés pour vous aider à utiliser le modèle ou à entraîner un nouveau modèle.
Si vous le souhaitez, vous pouvez afficher plus d’informations sur la session d’apprentissage dans la fenêtre sortie de Machine Learning.
Une fois l’entraînement du modèle terminé, accédez à l’étape Évaluation.
Dans votre terminal, exécutez la commande suivante (dans votre dossier myMLApp
) :
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --name SentimentModel --train-time 60
Que signifient ces commandes ?
La commande mlnet classification
s’exécute ML.NET avec AutoML pour explorer de nombreuses itérations de modèles de classification dans la durée d’apprentissage donnée avec différentes combinaisons de transformations de données, d’algorithmes et d’options d’algorithme, puis choisit le modèle le plus performant.
- --dataset: Vous avez choisi
yelp_labelled.txt
comme jeu de données (en interne, l’interface CLI fractionnera le jeu de données en jeux de données d’entraînement et de test). - --label-col: Vous devez spécifier la colonne cible que vous souhaitez prédire (ou l’étiquette). Dans ce cas, vous souhaitez prédire le sentiment dans la deuxième colonne (colonnes indexées zéro signifie qu’il s’agit de la colonne "1").
- --has-header: Utilisez cette option pour spécifier si le jeu de données a un en-tête. Dans ce cas, le jeu de données n’a pas d’en-tête, il est donc faux.
- --name: Utilisez cette option pour fournir un nom pour votre modèle Machine Learning et les ressources associées. Dans ce cas, toutes les ressources associées à ce modèle Machine Learning auront SentimentModel dans le nom.
- --train-time: Vous devez également spécifier la durée pendant laquelle vous souhaitez que l’interface CLI ML.NET explore différents modèles. Dans ce cas, 60 secondes (vous pouvez essayer d’augmenter ce nombre si aucun modèle n’est trouvé après l’entraînement). Notez que pour les jeux de données plus volumineux, vous devez définir une durée d’entraînement plus longue.
Progression
Pendant que la CLI ML.NET explore différents modèles, elle affiche les données suivantes :
- Commencez la formation : cette section présente chaque itération de modèle, y compris le formateur (algorithme) utilisé et les métriques d’évaluation pour cette itération.
- Temps restant – Ceci et la barre de progression indiqueront combien de temps il reste dans le processus de formation en secondes.
- Meilleur algorithme - indique l’algorithme qui a effectué les meilleures performances.
- Meilleur score : cela vous montre les performances du meilleur modèle jusqu’à présent. Une plus grande précision signifie que le modèle a prédit plus correctement sur les données de test.
Si vous le souhaitez, vous pouvez afficher plus d'informations sur la session de formation dans le fichier journal généré par la CLI.
Évaluez votre modèle
L’étape Évaluer vous montre l’algorithme le plus performant et la meilleure précision et vous permet d’essayer le modèle dans l’interface utilisateur.
Essayer votre modèle
Vous pouvez faire des prédictions sur des exemples d'entrée dans la section Essayez votre modèle. La zone de texte est préremplie avec la première ligne de données de votre ensemble de données, mais vous pouvez modifier l'entrée et sélectionner le bouton Prédire pour essayer différentes prédictions de sentiment.
Dans ce cas, 0 signifie sentiment négatif et 1 signifie sentiment positif.
Remarque : Si votre modèle ne fonctionne pas correctement (par exemple, si la précision est faible ou si le modèle ne prédit que les valeurs « 1 »), vous pouvez réessayer d’ajouter plus de temps et d’entraînement. Il s’agit d’un exemple utilisant un jeu de données très petit ; pour les modèles de niveau production, il vous faut ajouter beaucoup plus de données et de temps d’entraînement.
Après avoir évalué et essayé votre modèle, passez à l’étape Consommez.
Une fois que l’interface CLI ML.NET a sélectionné le meilleur modèle, elle affiche le résumé de la formation, qui vous indique un résumé du processus d’exploration, notamment le nombre de modèles explorés dans le délai d’apprentissage spécifié.
Principaux modèles
Alors que la CLI ML.NET génère du code pour le modèle le plus performant, elle affiche également les meilleurs modèles (jusqu'à 5) avec la plus grande précision trouvée dans le temps d'exploration donné. Il affiche plusieurs mesures d'évaluation pour ces meilleurs modèles, notamment l'AUC, l'AUPRC et le score F1. Pour plus d'informations, consultez les métriques ML.NET.
Générer le code
Une fois la formation terminée, quatre fichiers sont automatiquement ajoutés en tant que code-behind au SentimentModel.mbconfig
:
SentimentModel.consumption.cs
: ce fichier contient les classes d'entrée et de sortie du modèle et une méthodePredict
qui peut être utilisée pour la consommation du modèle.SentimentModel.evaluate.cs
: ce fichier contient unméthode deCalculatePFI
qui utilise la technique PFI (Permutation Feature Importance) pour évaluer les fonctionnalités qui contribuent le plus aux prédictions de modèle.SentimentModel.mlnet
: Ce fichier est le modèle ML.NET formé, qui est un fichier zip sérialisé.SentimentModel.training.cs
: Ce fichier contient le code permettant de comprendre l'importance des colonnes d'entrée sur les prédictions de votre modèle.
Dans l'étape Consommer dans Model Builder, un extrait de code est fourni qui crée un exemple d'entrée pour le modèle et utilise le modèle pour faire une prédiction sur cette entrée.
Model Builder propose également des modèles de projet que vous pouvez éventuellement ajouter à votre solution. Il existe deux modèles de projet (une application console et une API Web), qui utilisent tous deux le modèle formé.
L’interface CLI ML.NET ajoute à la fois le modèle Machine Learning et le code pour l’entraînement et la consommation du modèle, ce qui inclut les éléments suivants :
-
Un nouveau répertoire appelé SentimentModel est créé contenant une application de console .NET qui inclut les fichiers suivants :
Program.cs
: ce fichier contient le code permettant d’exécuter le modèle.SentimentModel.consumption.cs
: ce fichier contient les classes d'entrée et de sortie du modèle et une méthodePredict
qui peut être utilisée pour la consommation du modèle.SentimentModel.mbconfig
: ce fichier est un fichier JSON qui suit les configurations et les résultats de votre formation.SentimentModel.training.cs
: ce fichier contient le pipeline d'entraînement (transformations de données, algorithme et paramètres d'algorithme) utilisé pour entraîner le modèle final.SentimentModel.zip
: ce fichier est le modèle ML.NET formé, qui est un fichier zip sérialisé.
Pour essayer le modèle, vous pouvez exécuter l'application console pour prédire le sentiment d'une seule instruction avec le modèle.
Consommez votre modèle
La dernière étape consiste à consommer votre modèle formé dans l'application de l'utilisateur final.
-
Remplacez le code
Program.cs
dans votre projetmyMLApp
par le code suivant :Program.csusing MyMLApp; // Add input data var sampleData = new SentimentModel.ModelInput() { Col0 = "This restaurant was wonderful." }; // Load model and predict output of sample data var result = SentimentModel.Predict(sampleData); // If Prediction is 1, sentiment is "Positive"; otherwise, sentiment is "Negative" var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative"; Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");
-
Exécutez
myMLApp
(sélectionnez Ctrl+F5 ou Déboguer > Démarrage sans débogage). Vous devez voir la sortie suivante, qui prédit si l’instruction d’entrée est positive ou négative.
L’interface CLI ML.NET a généré le modèle et le code entraînés pour vous. Vous pouvez donc l’utiliser dans les applications .NET (par exemple, votre application SentimentModel
console) en suivant ces étapes :
- Dans la ligne de commande, accédez au répertoire
consumeModelApp
.Terminalcd SentimentModel
-
Ouvrez le code
Program.cs
dans n’importe quel éditeur de code et inspectez le code. Le code doit ressembler à ce qui suit :Program.csusing System; namespace SentimentModel.ConsoleApp { class Program { static void Main(string[] args) { // Add input data SentimentModel.ModelInput sampleData = new SentimentModel.ModelInput() { Col0 = @"Wow... Loved this place." }; // Make a single prediction on the sample data and print results var predictionResult = SentimentModel.Predict(sampleData); Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n"); Console.WriteLine($"Col0: @{"Wow... Loved this place."}"); Console.WriteLine($"Col1: {1F}"); Console.WriteLine($"\n\nPredicted Col1: {predictionResult.PredictedLabel}\n\n"); Console.WriteLine("=============== End of process, hit any key to finish ==============="); Console.ReadKey(); } } }
-
Exécutez votre
SentimentModel.ConsoleApp
. Pour ce faire, exécutez la commande suivante dans le terminal (vérifiez que vous êtes dans le répertoireSentimentModel
) :Terminaldotnet run
La sortie devrait ressembler à ceci :
TerminalUsing model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data... Col0: Wow... Loved this place. Col1: 1 Class Score ----- ----- 1 0.9651076 0 0.034892436 =============== End of process, hit any key to finish ===============
Étapes suivantes
Félicitations, vous avez créé votre premier modèle Machine Learning avec ML.NET Model Builder !
Maintenant que vous avez les bases, continuez avec ce module d’apprentissage auto-guidé sur Microsoft Learn, où vous utiliserez les données du capteur pour détecter si un appareil de fabrication est endommagé.
Microsoft Learn : entraîner un modèle de maintenance prédictif
ML.NET pour les débutants
Laissez Luis vous présenter les concepts de l'apprentissage automatique et de l'IA, vous expliquer ce que vous pouvez en faire et vous guider sur la façon de démarrer avec OpenAI, Azure AI Services et ML.NET :
Vous pourriez aussi être intéressé par...
Félicitations, vous avez créé votre premier modèle Machine Learning avec l’interface CLI ML.NET !
Maintenant que vous avez utilisé l'interface de ligne de commande ML.NET pour la classification (en particulier l'analyse des sentiments), vous pouvez essayer d'autres scénarios. Essayez un scénario de régression (en particulier la prévision des prix) à l'aide de l'ensemble de données Taxi Fare pour continuer à créer des modèles ML.NET avec l'interface de ligne de commande ML.NET.
Télécharger le jeu de données Taxi Fare
ML.NET pour les débutants
Laissez Luis vous présenter le concept de l'apprentissage automatique et de l'IA, vous expliquer ce que vous pouvez en faire et vous guider sur la façon de démarrer avec OpenAI, Azure AI Services et ML.NET :
Vous pourriez aussi être intéressé par...