Collaborer sur vos projets DS avec Azure ML Workbench
Nous commençons cette nouvelle année 2018 avec ce billet qui s'inscrit dans la série de billets déjà publiés sur les nouveaux services d'Azure Machine Learning (Azure ML). Pour mémoire, cette série de billets vise à vous faire découvrir progressivement ce nouvel environnement Azure ML, à en partager avec vous les nouveautés et bénéfices, et de pouvoir aborder plus en profondeur certains aspects des fonctionnalités ainsi offertes.
Ce billet s'intéresse plus particulièrement comme son titre l'indique à la collaboration en équipe autour d'un projet de Data Science (DS).
L' « établi » dans Azure ML, à savoir Azure ML Workbench, vous permet, entre choses, de collaborer avec votre équipe au travers de l'intégration de Git en arrière-plan, et ainsi de partager vos avancées, l'historique de vos exécutions, etc. Dans la version courante, et à la date de publication de ce billet, Azure ML propose la prise en charge d'un dépôt Git sur Visual Studio Team Services (VSTS) est supporté. (Le support de forges externe comme GitHub est prévu dans les versions à venir pour venir étoffer le champ des possibles.)
Voyons ce qu'il en est et comment collaborer efficacement au travers des fonctionnalités présentes. Bien évidemment, pour cela, vous devez au préalable avoir créé un compte d'Expérimentation sur la plateforme Microsoft Azure comme décrit dans ce billet de la série.
J'en profite pour remercier Paul Jenny actuellement en stage de fin d'étude au sein de Microsoft France pour cette contribution.
Créer son projet d'équipe ou utiliser un existant
Pour créer votre projet d'équipe (Team Project), vous devez d'abord vous rendre sur le portail Azure puis Créer une ressource et enfin recherchez Team Project et puis cliquez sur le bouton Créer :
Si vous n'avez pas de compte de service d'équipe (Team Services), vous devez en créer un à ce stade via la fenêtre dédiée comme illustré ci-après :
Choisissez bien GIT en contrôle de version pour votre projet d'équipe ainsi que la localisation appropriée.
Par ailleurs, vérifiez bien de cibler votre projet d'équipe dans le même abonnement Azure que vous allez utiliser pour Azure Machine Learning sinon vous ne pourrez pas accéder à vos projets !
Une fois tout ceci fait, vous pouvez cliquer sur Créer.
Vous pouvez accéder à tout moment aux projets que vous avez créés dans votre compte « Team Services » en accédant à votre espace de la forme :
https://<nom_de_votre_team_services>.visualstudio.com
Par exemple, ici, avec un compte « Team Services » créé sous le nom « myteamazure », nous y accédons par le lien : https://myteamazure.visualstudio.com
Créer un projet Azure ML Workbench lié à Git
Lorsque vous souhaitez créer votre projet Azure ML Workbench ou bien utiliser un projet existant, vous pouvez spécifier l'URL vers le dépôt Git qui sera utilisé pour héberger le projet. Généralement, il est sous la forme suivante :
https://<nom_de_votre_team_services>.visualstudio.com/_git/<nom_du_projet >
Par exemple, ici, le dépôt de notre Git serait :
https://myteamazure.visualstudio.com/_git/myTeamProject
Créer un nouveau projet
Lors de la création d'un nouveau projet dans Azure ML Workbench, il vous est possible de spécifier le l'URL de ce dépôt Git dans Visualstudio.com GIT Repository URL (optional) comme suit vis-à-vis de notre illustration :
Une fois créé, vous pourrez utiliser le projet comme s'il avait été initialisé sans dépôt Git. Néanmoins, si par exemple vous souhaitez utiliser/êtes amené(e) un autre poste de travail, vous pourrez retrouver votre projet Azur eML avec les mêmes fichiers et le même historique d'exécution en téléchargeant celui-ci en utilisant le bouton suivant dans Azure ML Workbench :
Remarque : actuellement lorsque vous téléchargez votre projet sur un second poste de travail, il est téléchargé dans le répertoire suivant :
- Sur Windows, C:\Users\<nom_utilisateur>\Documents\AzureML
- Sur MacOS, /home/<nom_utilisateur>/Documents/AzureML
Nous souhaitons souligner ici qu'il est également possible de créer le projet en ligne de commandes si vous disposer déjà d'Azure CLI ML avec la commande ci-après :
az ml project create -a <nom_du_compte_experimentation> -n <nom_du_projet> -g <nom_du_groupe_ressources> -w <nom_de_l_espace_de_travail> -r <URL_du_depot_GIT> --vststoken <cle_personnelle_vsts>
Remarque : Vous devez être en possession d'une clé personnelle VSTS pour utiliser cette commande. Vous pouvez lire la documentation officielle à ce sujet ici.
Remarque : Pour installer Azure CLI ML sur Windows, vous devez :
Installer Python depuis https://www.python.org/. Assurez-vous de bien sélectionner l'installation de pip.
Ouvrir une invite de commandes avec des privilèges d'administration à l'aide de Run As Administrator et exécuter les commandes suivantes :
pip install azure-cli
pip install azure-cli-ml
Remarque : Pour installer Azure CLI ML sur MacOS, vous devez ouvrir une invite de commandes et exécuter les commandes suivantes :
sudo -i
pip install azure-cli
pip install azure-cli-ml
Lier un projet existant à un dépôt GIT
Si vous avez créé un projet Azure ML sans dépôt Git, vous pouvez ultérieurement mettre à jour le projet pour ajouter le lien vers le dépôt Git avec la commande ci-dessous :
az ml project update –repo https://myteamazure.visualstudio.com/_git/myTeamProject
Remarque importante : Une fois qu'un projet est lié à Git, ce lien NE peut être supprimé !
Un projet Azure ML et GIT
Une fois que votre projet Azure ML est lié à un dépôt Git, une nouvelle branche est automatiquement sur votre dépôt distant appelé : AzureMLHistory/<Identifiant_du_projet>. Vous pouvez visualiser cette nouvelle branche sur « Team Services » :
A chaque fois que vous lancez une exécution de votre projet, toute modification est automatiquement sauvegardée et poussée dans cette branche :
Si vous souhaitez sauvegarder par vous-même vos modifications, vous pouvez faire un commit dans la branche master ou toute autre branche que vous avez créé. Cela vous permet, par exemple, de revenir dans un état antérieur tout en sauvegardant l'état dans lequel vous êtes actuellement.
Néanmoins, si vous téléchargez ce projet sur un autre poste de travail, la version sera celle du dernier commit de la branche AzureMLHistory/<identifiant_du_projet>.
Collaborer sur un projet Azure ML
Pour pouvoir collaborer sur un même projet Azure ML, les autres personnes doivent disposer des autorisations dans VSTS mais aussi au niveau du compte d'expérimentation de l'espace de travail concerné.
Vous pouvez ajouter des membres sur VSTS directement depuis l'interface web de VSTS (Cf. documentation officielle (en anglais) à ce sujet).
Pour ajouter un utilisateur sur un espace de travail ou un compte d'expérimentation, vous pouvez utiliser le portail Azure ou une invite de commandes.
Ajouter un utilisateur via le portail Azure
Naviguez vers le portail Azure. Une fois sur celui-ci, recherchez votre compte d'expérimentation sur lequel vous voulez donnez accès puis allez dans Contrôle d'accès (IAM) :
Sélectionnez Ajouter des autorisations, précisez le compte utilisateur ou un groupe d'utilisateurs déclaré dans le répertoire Azure AD auquel est associé l'abonnement Azure utilisé.
Sélectionner le rôle adéquate. Les rôles principalement utilisés sont Propriétaire (lecture, écriture et gestion des droits), Contributeur (lecteur et écriture) et Lecteur (lecture seule).
Ajouter un utilisateur via Azure ML CLI
Comme souligné précédemment, vous pouvez aussi passer par Azure ML CLI pour ajouter les droits à un utilisateur sur votre compte d'expérimentation ou votre espace de travail.
Pour utiliser Azure ML CLI depuis Azure ML Workbench, vous devez utiliser le menu File puis Open Command Prompt afin d'ouvrir une invite de commandes.
La première étape est de récupérer l'identifiant de la ressource concernée sur laquelle vous souhaitez que l'utilisateur aie accès :
Pour un compte d'expérimentation, la commande est la suivante :
az ml account experimentation show --query "id"
Pour un espace de travail, la commande est comme suit :
az ml workspace show --query "id"
Une fois l'identifiant récupérée, vous pouvez assigner le rôle de l'utilisateur avec la commande ci-dessous :
az role assignment create --assignee <identifiant_azure> --role [Contributor|Owner] --scope <identifiant_de_la_ressource>
Une fois la personne ajoutée aux deux ressources, cette dernière dispose d'un accès au projet et peut télécharger celui-ci sur son poste de travail.
Remarque : Il se peut que la personne avec qui vous collaborez doive redémarrer Azure ML Workbench pour prendre en compte les modifications d'accès.
Travailler en équipe sur un projet Azure ML
L'ensemble des personnes déclarées partagent la même branche master et le même historique d'exécutions. Ainsi, si l'une de ces personnes exécute le projet, les autres peuvent aussi accéder à l'état du projet à cet instant.
Il est donc parfois préférable de créer une autre branche pour ne pas avoir de souci de synchronisation entre les différentes versions d'un même projet puis d'effectuer des fusions de branche ultérieurement. Nous rentrons dans le classique de la vie d'un projet et de ses versions.
Ceci conclut ce billet sur la configuration d'un projet d'équipe et ainsi la capacité de collaborer à plusieurs sur un même objectif : nous sommes toujours plus intelligents à plusieurs que tout seul ;-)