Comment surmonter la peur et commencer à utiliser Azure Machine Learning

Je connais de nombreux Data Scientists — et je pense que je fais moi-même partie de ce groupe — qui travaillent sur des machines avec GPU, qu'elles soient locales ou virtuelles, situées dans le cloud, que ce soit via Jupyter Notebook ou à travers un environnement de développement Python. En tant qu'expert-développeur en IA/ML depuis 2 ans, j'ai travaillé de cette manière, préparant les données sur un serveur ou une station de travail classique, tout en exécutant l'entraînement sur une machine virtuelle avec GPU dans Azure.

Bien sûr, nous avons tous entendu parler de Azure Machine Learning — une plateforme cloud spécialisée pour l'apprentissage automatique. Cependant, après un premier regard sur les articles introductifs, il semble qu'Azure ML vous créera plus de problèmes qu'il n'en résoudra. Par exemple, dans l'exemple d'entraînement mentionné ci-dessus, l'entraînement sur Azure ML démarre depuis Jupyter Notebook, mais le script d'entraînement lui-même est proposé à créer et à éditer comme un fichier texte dans l'une des cellules — sans utiliser l'auto-complétion, la coloration syntaxique et d'autres avantages d'un environnement de développement normal. Pour cette raison, nous n'avons pas utilisé Azure ML de manière sérieuse pendant longtemps.

Mais récemment, j'ai découvert comment commencer à utiliser efficacement Azure ML dans mon travail ! Ça vous intéresse d'en savoir plus ?

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

Le secret principal réside dans l' extension Visual Studio Code pour Azure ML. Elle vous permet de développer des scripts d'entraînement directement dans VS Code, en tirant parti de tous les avantages de l'environnement — et vous pouvez même exécuter le script localement, puis simplement l'envoyer à l'entraînement sur le cluster Azure ML en quelques clics. Pratique, n'est-ce pas ?

Voici les avantages que vous obtenez en utilisant Azure ML :

  • Vous pouvez travailler pendant la majeure partie du temps localement sur votre machine dans un IDE confortable, et utiliser le GPU uniquement pour l'entraînement du modèle. Les ressources d'entraînement peuvent s'ajuster automatiquement en fonction de la charge requise, et en fixant le nombre minimum de nœuds à 0, vous pourrez automatiquement lancer une machine virtuelle "à la demande" dès qu'il y a des tâches d'apprentissage.
  • Vous pouvez conserver tous les résultats d'entraînement au même endroit, y compris les métriques atteintes et les modèles obtenus — il n'est pas nécessaire d'inventer un système ou un ordre pour stocker tous les résultats.
  • En même temps, plusieurs personnes peuvent travailler sur un même projet — ils peuvent utiliser un même cluster de calcul, tous les expériences seront mises en attente, et ils peuvent également voir les résultats des expériences des autres. Un de ces scénarios est l'utilisation d'Azure ML pour l'enseignement du Deep Learning, où au lieu de donner à chaque étudiant une machine virtuelle avec GPU, vous pouvez créer un seul cluster qui sera utilisé de manière centralisée par tous. De plus, un tableau de résultats commun avec la précision du modèle peut servir d'élément compétitif appréciable.
  • Avec Azure ML, il est facile de mener des séries d'expériences, par exemple pour l'optimisation des hyperparamètres — cela peut se faire avec quelques lignes de code, sans avoir à effectuer manuellement des séries d'expériences.

J'espère vous avoir convaincu d'essayer Azure ML ! Voici comment commencer :

Azure ML Workspace et Azure ML Portal

Azure ML est organisé autour du concept de workspace — un espace de travail. Dans l'espace de travail, des données peuvent être stockées, des expériences y sont envoyées pour l'entraînement, et les résultats de l'entraînement — métriques obtenues et modèles — y sont conservés. Vous pouvez voir ce qu'il y a dans l'espace de travail via le portail Azure ML — et à partir de celui-ci, vous pouvez effectuer de nombreuses opérations, allant du téléchargement de données à la surveillance des expériences et au déploiement de modèles.

Créer un espace de travail peut se faire via l'interface web Azure Portal (voir instructions étape par étape), ou en utilisant la ligne de commande Azure CLI (des instructions):

az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml

Certains ressources de calcul (Calcul). En créant un script pour entraîner un modèle, vous pouvez envoyer l'expérience à exécuter dans l'espace de travail, et spécifier le cible de calcul — dans ce cas, le script sera empaqueté, lancé dans l'environnement de calcul approprié, et ensuite tous les résultats de l'expérience seront sauvegardés dans l'espace de travail pour une analyse et une utilisation ultérieures.

Script d'entraînement pour MNIST

Considérons la tâche classique de reconnaissance des chiffres manuscrits en utilisant le jeu de données MNIST. De la même manière, à l'avenir, vous pourrez exécuter tous vos scripts d'entraînement.

Nous avons dans notre dépôt un script train_local.py, qui entraîne un modèle de régression linéaire de base en utilisant la bibliothèque Sklearn. Bien sûr, je comprends que ce n'est pas la meilleure façon de résoudre le problème - nous l'utilisons à titre d'exemple, comme la solution la plus simple.

Le script commence par télécharger les données MNIST desde OpenML, puis utilise la classe LogisticRegression pour entraîner le modèle, et imprimer ensuite la précision obtenue :

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mnist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]

X_train, X_test, y_train, y_test = 
  train_test_split(X, y, test_size = 0.3, random_state = 42)

lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))

print('Précision globale :', acc)

Vous pouvez exécuter le script sur votre ordinateur et obtenir le résultat en quelques secondes.

Exécution du script dans Azure ML

Si nous exécutons le script d'entraînement via Azure ML, nous aurons deux avantages principaux :

  • Exécuter l'entraînement sur une ressource de calcul arbitraire, qui est généralement plus performante que l'ordinateur local. Azure ML s'occupera de tout, y compris de regrouper notre script avec tous les fichiers du répertoire actuel dans un conteneur Docker, d'installer les dépendances nécessaires et de l'exécuter.
  • Enregistrer les résultats dans un registre unique au sein de l'espace de travail Azure ML. Pour profiter de cette fonctionnalité, nous devons ajouter quelques lignes de code à notre script pour enregistrer la précision résultante :

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('accuracy', acc)
except:
    pass

La version correspondante du script s'appelle train_universal.py (il est un peu plus sophistiqué que ce qui est écrit ci-dessus, mais pas beaucoup). Ce script peut être exécuté à la fois localement et sur une ressource de calcul distante.

Pour l'exécuter dans Azure ML depuis VS Code, il faut procéder comme suit :

  1. Assurez-vous que l'extension Azure est connectée à votre abonnement. Sélectionnez l'icône Azure dans le menu à gauche. Si vous n'êtes pas connecté, une notification apparaîtra en bas à droite (comme celle-ci), sur laquelle vous pouvez cliquer pour vous connecter via votre navigateur. Vous pouvez également appuyer sur Ctrl-Shift-P pour ouvrir la ligne de commande VS Code, et taper Azure Sign In.

  2. Ensuite, dans la section Azure (icône à gauche), recherchez la section MACHINE LEARNING:

Comment surmonter la peur et commencer à utiliser Azure Machine Learning
Ici, vous devez voir différents groupes d'objets dans la zone de travail : ressources de calcul, expériences, etc.

  1. Allez dans la liste des fichiers, faites un clic droit sur le script train_universal.py et sélectionnez Azure ML : Exécuter comme expérience dans Azure.

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  1. Après cela, vous aurez une série de dialogues dans la ligne de commande de VS Code : confirmez l'abonnement et la zone de travail Azure ML utilisés, puis choisissez Créer une nouvelle expérience:

Comment surmonter la peur et commencer à utiliser Azure Machine Learning
Comment surmonter la peur et commencer à utiliser Azure Machine Learning
Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  1. Sélectionnez la création d'une nouvelle ressource de calcul Créer un nouveau calcul:

    • Calcul détermine la ressource de calcul sur laquelle l'apprentissage aura lieu. Vous pouvez choisir votre ordinateur local ou un cluster cloud AmlCompute. Je recommande de créer un cluster de machines évolutif STANDARD_DS3_v2, avec un nombre minimum de machines de 0 (et un maximum pouvant être de 1 ou plus, selon vos besoins). Cela peut être fait via l'interface de VS Code, ou à l'avance via ML Portal.

    Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  2. Il est ensuite nécessaire de sélectionner la configuration Configuration de calcul, qui définit les paramètres du conteneur créé pour l'apprentissage, notamment toutes les bibliothèques nécessaires. Dans notre cas, puisque nous utilisons Scikit Learn, sélectionnez SkLearn, puis confirmez simplement la liste des bibliothèques proposées en appuyant sur Entrée. Si vous utilisez des bibliothèques supplémentaires, elles doivent être indiquées ici.

    Comment surmonter la peur et commencer à utiliser Azure Machine Learning
    Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  3. Après cela, une fenêtre s'ouvrira avec un fichier JSON décrivant l'expérience. Vous pouvez modifier certains paramètres, par exemple, le nom de l'expérience. Ensuite, cliquez sur le lien Soumettre l'expérience directement à l'intérieur de ce fichier :

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  1. Après la soumission réussie de l'expérience via VS Code, à droite dans la zone de notifications, vous verrez un lien vers Azure ML Portal, où vous pourrez suivre l'état et les résultats de l'expérience.

Comment surmonter la peur et commencer à utiliser Azure Machine Learning
Par la suite, vous pourrez toujours le trouver dans la section Expériences Azure ML Portal, ou dans la section Azure Machine Learning dans la liste des expériences :

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  1. Si vous avez ensuite apporté des corrections au code ou modifié des paramètres, redémarrer l'expérience sera beaucoup plus rapide et plus facile. En faisant un clic droit sur le fichier, vous verrez un nouvel élément de menu Répéter la dernière exécution — il suffit de le choisir, et l'expérience sera immédiatement lancée :

Comment surmonter la peur et commencer à utiliser Azure Machine Learning
Vous pouvez toujours trouver les résultats des métriques de toutes les exécutions sur Azure ML Portal, il n'est pas nécessaire de les noter.

Vous savez maintenant que lancer des expériences avec Azure ML est simple et indolore, et vous en tirez un certain nombre d'avantages agréables.

Cependant, vous avez peut-être remarqué des inconvénients. Par exemple, le script a nécessité beaucoup plus de temps pour être exécuté. Bien sûr, il faut du temps pour emballer le script dans un conteneur et le déployer sur le serveur. Si le cluster a été réduit à 0 nœud, il faut encore plus de temps pour démarrer la machine virtuelle, et cela devient très apparent lorsque nous expérimentons avec des tâches simples comme MNIST, qui se résolvent en quelques secondes. Cependant, dans la vie réelle, lorsque l'entraînement dure plusieurs heures, voire des jours ou des semaines, ce temps additionnel devient insignifiant, surtout face à la performance considérablement plus élevée qu'un cluster de calcul peut offrir.

Et après ?

J'espère qu'après avoir lu cet article, vous serez en mesure d'utiliser Azure ML dans votre travail pour exécuter des scripts, gérer des ressources de calcul et stocker des résultats de manière centralisée. Cependant, Azure ML peut vous offrir encore plus d'avantages !

Dans l'espace de travail, vous pouvez stocker des données, ce qui crée un dépôt centralisé pour toutes vos tâches, facilement accessible. De plus, vous pouvez exécuter des expériences non pas depuis Visual Studio Code, mais en utilisant l'API — cela peut être particulièrement utile si vous devez optimiser des hyperparamètres et exécuter le script plusieurs fois avec des paramètres différents. En outre, Azure ML intègre une technologie spéciale Hyperdrive, qui permet une recherche et une optimisation des hyperparamètres plus sophistiquées. Je parlerai de ces possibilités dans ma prochaine note.

Ressources utiles

Pour approfondir vos connaissances sur Azure ML, les cours Microsoft Learn suivants peuvent vous être utiles :

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster