Comment surmonter la peur et commencer à utiliser Azure Machine Learning

Je connais de nombreux Data Scientists - et j'en fais probablement partie moi-même - qui travaillent sur des machines GPU, locales ou virtuelles, situées dans le cloud, soit via un Jupyter Notebook, soit via une sorte d'environnement de développement Python. Travaillant pendant 2 ans en tant que développeur expert AI/ML, j'ai fait exactement cela, tout en préparant des données sur un serveur ou un poste de travail régulier et en exécutant une formation sur une machine virtuelle avec un GPU dans Azure.

Bien sûr, nous avons tous entendu parler Apprentissage automatique Azure — une plate-forme cloud spéciale pour l'apprentissage automatique. Cependant, après un premier coup d'œil sur articles d'introduction, il semble qu'Azure ML vous crée plus de problèmes qu'il n'en résout. Par exemple, dans le tutoriel mentionné ci-dessus, la formation sur Azure ML est lancée à partir d'un Jupyter Notebook, tandis que le script de formation lui-même est proposé pour être créé et modifié sous forme de fichier texte dans l'une des cellules - tout en n'utilisant pas l'auto-complétion, la syntaxe mise en évidence, et d'autres avantages d'un environnement de développement normal. Pour cette raison, nous n'avons pas utilisé sérieusement Azure ML dans notre travail depuis longtemps.

Cependant, j'ai récemment découvert un moyen de commencer à utiliser efficacement Azure ML dans mon travail ! Intéressé par les détails ?

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

Le principal secret est Extension Visual Studio Code pour Azure ML. Il vous permet de développer des scripts de formation directement dans VS Code, en tirant pleinement parti de l'environnement - et vous pouvez même exécuter le script localement, puis simplement l'envoyer à la formation dans un cluster Azure ML en quelques clics. Pratique, n'est-ce pas ?

Ce faisant, vous bénéficiez des avantages suivants en utilisant Azure ML :

  • Vous pouvez travailler la plupart du temps localement sur votre machine dans un IDE pratique, et utiliser le GPU uniquement pour la formation du modèle. Dans le même temps, le pool de ressources de formation peut s'adapter automatiquement à la charge requise, et en définissant le nombre minimum de nœuds sur 0, vous pouvez démarrer automatiquement la machine virtuelle "à la demande" en présence de tâches de formation.
  • vous pouvez stocker tous les résultats d'apprentissage en un seul endroit, y compris les métriques obtenues et les modèles résultants - il n'est pas nécessaire de proposer une sorte de système ou d'ordonner de stocker tous les résultats.
  • Dans ce cas, Plusieurs personnes peuvent travailler sur le même projet - ils peuvent utiliser le même cluster informatique, toutes les expériences seront mises en file d'attente et ils peuvent également voir les résultats des expériences des autres. Un tel scénario est utiliser Azure ML pour enseigner le Deep Learninglorsqu'au lieu de donner à chaque étudiant une machine virtuelle avec un GPU, vous pouvez créer un cluster qui sera utilisé par tous de manière centralisée. De plus, un tableau général des résultats avec la précision du modèle peut constituer un bon élément concurrentiel.
  • Avec Azure ML, vous pouvez facilement mener une série d'expériences, par exemple, pour optimisation des hyperparamètres - cela peut être fait avec quelques lignes de code, il n'est pas nécessaire de mener une série d'expériences manuellement.

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

Espace de travail Azure ML et portail Azure ML

Azure ML est organisé autour du concept espace de travail — espace de travail. Les données peuvent être stockées dans l'espace de travail, les expériences y sont envoyées pour la formation, les résultats de la formation y sont également stockés - les métriques et les modèles résultants. Vous pouvez voir ce qui se trouve à l'intérieur de l'espace de travail à travers Portail Azure ML - et à partir de là, vous pouvez effectuer de nombreuses opérations, allant du chargement de données à la surveillance d'expériences et au déploiement de modèles.

Vous pouvez créer un espace de travail via l'interface Web Portail Azure (Voir. instructions étape par étape), ou à l'aide de la ligne de commande Azure CLI (instructions):

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

Également associés à l'espace de travail sont certains ressources informatiques (calcul). Une fois que vous avez créé un script pour former le modèle, vous pouvez envoyer l'expérience pour exécution à l'espace de travail et spécifiez cible de calcul - dans ce cas, le script sera empaqueté, exécuté dans l'environnement informatique souhaité, puis tous les résultats de l'expérience seront enregistrés dans l'espace de travail pour une analyse et une utilisation ultérieures.

Script d'apprentissage pour MNIST

Considérons le problème classique reconnaissance des chiffres manuscrits en utilisant le jeu de données MNIST. De même, à l'avenir, vous pourrez exécuter n'importe lequel de vos scripts de formation.

Il y a un script dans notre dépôt train_local.py, dont nous formons le modèle de régression linéaire le plus simple à l'aide de 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 comme exemple, comme le plus simple.

Le script télécharge d'abord les données MNIST à partir d'OpenML, puis utilise la classe LogisticRegression pour entraîner le modèle, puis imprimez la précision résultante :

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

shuffle_index = np.random.permutation(len(mist['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('Overall accuracy:', acc)

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

Exécuter le script dans Azure ML

Si nous exécutons le script de formation via Azure ML, nous aurons deux avantages principaux :

  • Exécution de la formation sur une ressource informatique arbitraire, qui, en règle générale, est plus productive que l'ordinateur local. Dans le même temps, Azure ML se chargera lui-même d'emballer notre script avec tous les fichiers du répertoire actuel dans un conteneur Docker, d'installer les dépendances requises et de l'envoyer pour exécution.
  • Écrivez les résultats dans un registre unique dans un espace de travail Azure ML. Pour tirer parti 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 (c'est un peu plus rusé qu'il n'est écrit plus haut, mais pas beaucoup). Ce script peut être exécuté à la fois localement et sur une ressource informatique distante.

Pour l'exécuter dans Azure ML à partir de VS Code, vous devez 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 de gauche. Si vous n'êtes pas connecté, une notification apparaîtra dans le coin inférieur droit (c'est ça), en cliquant sur lequel vous pouvez entrer via le navigateur. Vous pouvez également cliquer Ctrl-Maj-P pour appeler la ligne de commande VS Code, et tapez Connexion Azure.

  2. Après cela, dans la section Azure (icône à gauche), recherchez la section Apprentissage de la machine:

Comment surmonter la peur et commencer à utiliser Azure Machine Learning
Ici, vous devriez voir différents groupes d'objets à l'intérieur de l'espace de travail : ressources informatiques, 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 en tant qu'expérience dans Azure.

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  1. Cela sera suivi d'une série de boîtes de dialogue dans la zone de ligne de commande de VS Code : confirmez l'abonnement et l'espace de travail Azure ML que vous utilisez, puis sélectionnez 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. Choisir de créer une nouvelle ressource de calcul Créer un nouveau calcul:

    • calcul détermine la ressource informatique sur laquelle se déroulera la formation. Vous pouvez choisir un ordinateur local ou un cluster cloud AmlCompute. Je recommande de créer un cluster évolutif de machines STANDARD_DS3_v2, avec un nombre minimum de machines de 0 (et un maximum de 1 ou plus, selon vos appétits). Cela peut être fait via l'interface VS Code, ou auparavant via Portail ML.

    Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  2. Ensuite, vous devez sélectionner une configuration Configuration de calcul, qui définit les paramètres du conteneur créé pour la formation, en particulier toutes les bibliothèques nécessaires. Dans notre cas, puisque nous utilisons Scikit Learn, nous sélectionnons SkApprendre, puis confirmez simplement la liste de bibliothèques proposée en appuyant sur Entrée. Si vous utilisez des bibliothèques supplémentaires, elles doivent être spécifiées ici.

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

  3. Cela ouvrira une fenêtre avec un fichier JSON décrivant l'expérience. Dans celui-ci, vous pouvez corriger certains paramètres - par exemple, le nom de l'expérience. Après cela cliquez sur le lien Soumettre l'expérience directement dans ce fichier :

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  1. Après avoir soumis avec succès une expérience via VS Code, sur le côté droit de la zone de notification, vous verrez un lien vers Portail Azure ML, où vous pouvez 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 retrouver dans la rubrique Expériences Portail Azure ML, ou dans la rubrique Apprentissage automatique Azure dans la liste des expériences :

Comment surmonter la peur et commencer à utiliser Azure Machine Learning

  1. Si après cela, vous avez apporté des corrections au code ou modifié les paramètres, le redémarrage de l'expérience sera beaucoup plus rapide et plus facile. En cliquant avec le bouton droit sur un fichier, vous verrez un nouvel élément de menu Répéter la dernière course - sélectionnez-le simplement et l'expérience commencera immédiatement :

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

Vous savez maintenant que l'exécution d'expériences avec Azure ML est simple et indolore, et vous bénéficiez ainsi d'un certain nombre d'avantages intéressants.

Mais vous pouvez aussi voir les inconvénients. Par exemple, l'exécution du script prenait beaucoup plus de temps. Bien sûr, empaqueter le script dans un conteneur et le déployer sur le serveur prend du temps. Si en même temps le cluster a été coupé à une taille de 0 nœuds, il faudra encore plus de temps pour démarrer la machine virtuelle, et tout cela est très perceptible lorsqu'on expérimente sur des tâches simples comme MNIST, qui sont résolues en quelques secondes . Or, dans la vraie vie, lorsque la formation dure plusieurs heures, voire des jours ou des semaines, ce temps supplémentaire devient insignifiant, surtout au regard des performances bien supérieures que peut apporter une grappe de calcul.

Quelle est la prochaine?

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

À l'intérieur de l'espace de travail, vous pouvez stocker des données, créant ainsi un référentiel centralisé pour toutes vos tâches, facile d'accès. De plus, vous pouvez exécuter des expériences non pas à partir de Visual Studio Code, mais à l'aide de l'API - cela peut être particulièrement utile si vous devez effectuer une optimisation d'hyperparamètres et devez exécuter le script plusieurs fois avec des paramètres différents. De plus, une technologie spéciale est intégrée à Azure ML Hyperdrive, ce qui vous permet d'effectuer une recherche et une optimisation plus délicates des hyperparamètres. Je parlerai de ces possibilités dans mon prochain article.

Ressources utiles

Pour en savoir plus sur Azure ML, les cours Microsoft Learn suivants peuvent vous être utiles :

Source: habr.com

Ajouter un commentaire