MLOps en Microsoft Azure | Opérations de ML sur Microsoft Azure

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données

Workflows d'apprentissage. L'apprentissage automatique est un grand mot à la mode de nos jours. Tout le monde semble vouloir se lancer dans le ML ces jours-ci. De nombreuses startups et startups mettent en œuvre des projets d'apprentissage automatique de plusieurs manières. Mais seule une partie de ces produits peut fonctionner et être maintenue sur le long terme.

Qu'est-ce que DevOps?

Le logiciel doit être construit et exécuté correctement. Ensuite, Comment se déroule le cycle de vie complet d'un produit logiciel?

Bon, DevOps rend l'ensemble du processus d'exploitation du logiciel transparent. Il se compose d'un ensemble de pratiques et de processus qui fonctionnent ensemble pour automatiser et intégrer l'ensemble du processus de développement logiciel.

43170devops-3746085

Source de l'image

DevOps unifie le processus de développement logiciel (Dév) et exploitation du logiciel (Opérations). DevOps facilite l'automatisation, le suivi et le bon déroulement de la création, le développement, l'intégration, les preuves, la mise en oeuvre, le lancement, maintenance, mise à l'échelle, la maintenance et la gestion de l'infrastructure logicielle.

Certains objectifs clés de DevOps sont des cycles de développement courts, fluide et rapide, mise en oeuvre rapide, versions stables et suivre correctement les objectifs commerciaux. Les défenseurs du DevOps et les professionnels utilisent l'art de la boucle infinie (en haut) pour représenter le cycle DevOps et montrer comment chaque processus est lié à l'autre. Cela montre également à quel point le développement et les opérations de logiciels sont un rôle permanent.. Vous avez besoin d'une collaboration et d'une amélioration constantes tout au long du cycle.

Une mise en œuvre appropriée de DevOps permet aux organisations d'en faire plus. Intégration continue (LÀ) et livraison continue (CD) aider les organisations à voir un développement plus efficace et une fréquence de déploiement plus élevée. Les temps de réparation sont réduits, les failles de cybersécurité peuvent être facilement détectées et facilitent l'expérimentation et les tests.

Donc, on peut dire que DevOps facilite la mise en œuvre et la maintenance du processus global d'ingénierie logicielle.

MLOps: DevOps pour l'apprentissage automatique

MLOps emprunte de nombreux principes de DevOps dans le but de rendre l'ensemble du cycle de ML plus efficace et plus facile à utiliser.. L'objectif principal de MLOps est de créer des pipelines de ML automatisés et de suivre les temps et autres métriques. Les pipelines seront utilisés pour plusieurs itérations tout au long du cycle de vie du projet AA.

35182mlops-1563661

Source de l'image

MLOps se compose de:

  1. Concevoir
  2. Modèle de développement
  3. Opérations

La phase de conception consiste en l'ingénierie des exigences, Priorisation des cas d'utilisation du ML, vérification de la disponibilité des données et autres étapes.

Le développement de modèles comprend l'ingénierie d'apprentissage automatique, la modélisation, ingénierie des données et test et validation de modèles.

Les opérations traitent de la mise en œuvre des modèles, Pipelines CI / Suivi et maintenance des CD et modèles.

Voyons maintenant à quoi ressemble le scénario général de MLOps pour Azure MLOps.

MLOps de Microsoft Azure

Azure MLOps suit les objectifs de:

  • Développement et expérimentation plus rapides du modèle
  • Déploiement plus rapide des modèles en production
  • Contrôle qualité et suivi de la lignée du début à la fin

Les outils MLOps aident à suivre les modifications apportées à la source de données ou aux pipelines de données, le code, Modèles de SDK, etc. Le cycle de vie est facilité et plus efficace grâce à l'automatisation, des flux de travail et des actifs reproductibles pouvant être réutilisés encore et encore.

Les services Azure Machine Learning nous permettent de créer des pipelines de Machine Learning reproductibles. Les environnements logiciels pour la formation et le déploiement des modèles sont également réutilisables. Ces pipelines nous permettent de mettre à jour les modèles, tester de nouveaux modèles et mettre en œuvre en continu de nouveaux modèles AA.

Le processus typique des AA

Le processus typique de Machine Learning consiste à:

1. Collecte de données

2. Modèle de formation

3. Emballez le modèle

4. Valider le modèle

5. Déployer le modèle

6. Modèle de moniteur

7. Recycler le modèle

Mais dans de nombreux cas, le processus a besoin de plus de raffinement. De nouvelles données sont disponibles et le code est modifié. Plusieurs processus sont en cours d'exécution, dont chacun implique une grande quantité de données.

Comme d'habitude, une grande partie des données est désorganisée. Les données brutes doivent également être conditionnées.

Comment les MLOps peuvent-ils aider?

MLOps se compose de plusieurs éléments. Certains éléments notables sont l'automatisation du déploiement, surveillance, test de trame, contrôle de version des données, etc. MLOps essaie de prendre les concepts de DevOps et d'améliorer l'ensemble du processus d'apprentissage automatique.

Toute l'architecture Azure Machine Learning ressemble à ceci:

74542mlops-integrated-pattern-1309921

Source de l'image

MLOps est censé effectuer un processus coordonné qui peut faciliter le flux de l'ensemble du processus et également prendre en charge les environnements CI / CD à grande échelle.

MLOps peut aider à l'automatisation, faciliter les implémentations de code. La validation est également facilitée par les meilleures pratiques de contrôle qualité de SWE. Dans le cas de la formation de modèle, si nous pensons que notre modèle a besoin d'être recyclé, on peut toujours revenir en arrière et faire une reconversion du modèle.

Azure Machine Learning possède de nombreux modèles pré-entraînés spécifiques au domaine, comment:

Vue, parle, Langue, Recherche, etc.

Si on parle de, qu'est-ce que c'est exactement Azure ML Services, est une suite d'Azure Cloud Services avec un kit de développement logiciel Python / R, qui nous permet de préparer des données, construire des modèles, gérer les modèles, modèles de train, suivre les expériences et mettre en œuvre des modèles.

Il y a beaucoup d'éléments impliqués, voyons certains d'entre eux.

Ensembles de données: enregistrer les données

Expériences: Courses d'entraînement

Tuyaux: Workflow de formation

Des modèles: Modèles enregistrés

Points d'arrivée: modèles déployés et points de terminaison de workflow de formation

Calculer: Informatique gérée

Environnements: Environnements définis de formation et d'inférence.

Les services Azure sont conçus de manière à être conformes à DevOps et à tout faire fonctionner correctement.

Gérer le cycle de vie de l'apprentissage automatique avec MLOps est un jeu d'enfant. Les modèles doivent être surveillés et recyclés. Les processus MLOps facilitent les résultats commerciaux réels et, donc, permettre une mise sur le marché et une mise en œuvre plus rapides pour les solutions basées sur le ML. Ils augmentent également la collaboration et l'alignement entre les équipes.

MLOps Azure

Azure Machine Learning possède les fonctionnalités MLOps suivantes.

Créer des pipelines de ML jouables

Nous pouvons définir des tuyaux réutilisables et reproductibles. Toutes les étapes qui comprennent la collecte de données et l'évaluation du modèle peuvent être réutilisées.

Environnements logiciels réutilisables

Les dépendances logicielles de nos projets peuvent être suivies et reproduites au besoin.

S'inscrire, emballer et déployer des modèles de n'importe où

L'enregistrement du modèle rend les étapes ci-dessus très faciles à mettre en œuvre. Les modèles ont un nom et une version.

Capturez les données de gouvernance pour un cycle de vie de machine learning de bout en bout

Azure ML peut s'intégrer à Git pour suivre notre code. Nous pouvons vérifier à partir de quelle branche / le référentiel vient de notre code. Nous pouvons également suivre, profiler et versionner nos données.

Alertes et notifications pour les événements du cycle de vie de l'AA

Azure ML répertorie les jalons dans Azure EventGrid, qui peut être utilisé à diverses fins.

Surveiller les problèmes opérationnels

Nous pouvons comprendre les données qui sont envoyées à notre modèle et les prédictions qui sont renvoyées. Afin que nous puissions comprendre comment le modèle fonctionne.

Automatisez le cycle de vie des AA

Azure Pipelines et Github peuvent être utilisés pour créer une intégration continue et autonome qui forme un modèle. La plupart des étapes du cycle de vie des AA peuvent être automatisées.

Ensuite, comme pensée générale, nous pouvons comprendre que MLOps est un concept où nous utilisons diverses ressources pour rendre l'ensemble du parcours ML fluide et efficace.

Ensuite, penser à un flux de travail MLOps hypothétique, premier, l'équipe de science des données et l'équipe de développement d'applications collaboreraient pour créer l'application et également former le modèle. Alors, l'application sera testée. parallèle, le modèle sera validé. Alors, le modèle sera implémenté et l'application sera lancée.

L'application et le modèle seront surveillés. Du processus général de gestion des modèles et des applications, nous pouvons effectuer une analyse des performances. Selon les besoins, on peut aussi recycler le modèle.

Examinons un exemple de projet ML dans Azure DevOps.

53703échantillon1-1910462

Les différents éléments dont nous avions discuté sont visibles ici.

16891échantillon2-9055568

Lors de la saisie de Repos, nous pouvons vérifier le code et d'autres fichiers.

Concernant les tuyaux, voyons un pipeline exécuté avec succès.

37058échantillon3-6569374

Nous pouvons voir que tous les travaux ont été exécutés correctement.

Pour le projet AA d'un échantillon particulier, nous pouvons voir les exigences.

76125échantillon4-3444962

Nous pouvons mettre en œuvre les exigences.

pip install azure-cli==2.0.69
pip install --upgrade azureml-sdk[cli]
pip install -r requirements.txt

Code pour entraîner le modèle:

Commencez par importer les choses nécessaires.

importer des cornichons
depuis azureml.core import Espace de travail
depuis azureml.core.run import Exécuter
importer le système d'exploitation
à partir de sklearn.datasets importer load_diabetes
à partir de sklearn.linear_model importer Ridge
à partir de sklearn.metrics importer Mean_squared_error
de sklearn.model_selection importer train_test_split
à partir de sklearn.externals importer joblib
importer numpy en tant que np
importer json
sous-processus d'importation
en tapant import Tuple, Lister
# run_history_name="devops-ai"
# les.makedirs('./les sorties', exist_ok=Vrai)
# #ws.get_details()
# Commencez à enregistrer les résultats dans AML
# run = Run.start_logging(espace de travail = ws, history_name = run_history_name)
run = Run.get_submitted_run()

Obtention des données.

X, y = load_diabetes(return_X_y=Vrai)
colonnes = ["âge", "genre", "imc", "pb", "s1", "s2", "s3", "s4", "s5", "s6"]
X_train, X_test, y_train, y_test = train_test_split(X, Oui, taille_test=0.2, état_aléatoire=0)
données = {"former": {"X": X_train, "Oui": y_train}, "test": {"X": X_test, "Oui": y_test}}

Ensuite, entraînement.

# Aléatoire pic alpha
alphas = np.arange(0.0, 1.0, 0.05)
alpha = alpha[np.choix.aléatoire(alphas.forme[0], 1, remplacer=Faux)][0]
imprimer(alpha)
run.log("alpha", alpha)
reg = crête(alpha=alpha)
reg.fit(Les données["former"]["X"], Les données["former"]["Oui"])
preds = reg.predict(Les données["test"]["X"])
run.log("mse", Mean_squared_error(preds, Les données["test"]["Oui"]))
# Enregistrer le modèle dans l'historique d'exécution
nom_modèle = "sklearn_regression_model.pkl"
# nom_modèle = "."
avec ouvert(nom du modèle, "wb") comme fichier:
    joblib.dump(valeur=reg, nom_fichier=nom_modèle)
# télécharger le fichier de modèle explicitement dans les artefacts
run.upload_file(nom="./les sorties/" + nom du modèle, path_or_stream=nom_modèle)
imprimer("Téléchargé le modèle {} expérimenter {}".format(nom du modèle, run.experiment.name))
chemin dir = os.getcwd()
imprimer(chemin de fuite)
# enregistrer le modèle
# run.log_model(nom_fichier = nom_modèle)
# imprimer('Enregistré le modèle {} exécuter l'histoire {}'.format(nom du modèle, run.history.name))
imprimer("Les fichiers suivants sont téléchargés ")
imprimer(run.get_file_names())
exécuter.terminé()

Il existe de nombreuses différences significatives dans la façon dont nous opérons ici.

Je, étant un étudiant, Je n'avais pas exactement d'analyse de rentabilisation ou les ressources financières pour travailler sur un projet de ML complet dans Azure DevOps. Le travail ci-dessus est fait en prenant comme référence.

Visitez ce dépôt pour référence: DevOpsForAI

conclusion

Les MLOps peuvent résoudre de nombreux problèmes liés au cycle de vie de l'apprentissage automatique. Donc, de nombreux défis généraux sont également résolus.

MLOps est une proposition très convaincante pour les entreprises pour exécuter leurs modèles de ML. MLOps rend le travail entre les équipes super facile et simple.

Ce sont quelques-unes des références que j'ai utilisées pour recueillir des connaissances pour cet article. Avoir une lecture.

Les références:

1.https://docs.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment#create-reproducible-ml-pipelines

2. https://docs.microsoft.com/en-us/learn/modules/start-ml-lifecycle-mlops/1-introduction

3. https://docs.microsoft.com/en-us/azure/architecture/example-scenario/mlops/mlops-technical-paper

4. https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/ai/mlops-python

Sur moi:

Prateek Majumder

Science des données et analyse | Spécialiste du marketing numérique | Référencement | Création de contenu

Connectez-vous avec moi sur Linkedin.

Mes autres articles sur DataPeaker: Relier.

Merci.

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.