Configurer des environnements pour le développement et la production
Dans DevOps, un environnement fait référence à une collection de ressources. Ces ressources sont utilisées pour déployer une application ou avec des projets de Machine Learning pour déployer un modèle.
Utiliser des environnements pour la livraison continue
Le nombre d’environnements que vous utilisez dépend de votre organisation. En règle générale, il existe au moins deux environnements : développement ou dev et production ou prod. De plus, vous pouvez ajouter des environnements entre eux comme un environnement de intermédiaire ou de pré-production (pré-prod).
Avec la livraison continue, une approche classique consiste à :
- Expérimenter avec un modèle de formation dans l’environnement de développement.
- Déplacer le meilleur modèle vers l’environnement intermédiaire ou pré-prod pour déployer et tester le modèle.
- Enfin, libérer le modèle dans l’environnement de production pour déployer le modèle afin que les utilisateurs finaux puissent le consommer.
Notes
Dans ce module, nous faisons référence à l’interprétation DevOps des environnements. Notez qu’Azure Machine Learning utilise également le terme « environnements » pour décrire une collection de packages Python nécessaires à l’exécution d’un script. Ces deux concepts d’environnements sont indépendants l’un de l’autre. En savoir plus sur les environnements Azure Machine Learning.
Organiser des environnements Azure Machine Learning
Lorsque vous implémentez MLOps et que vous utilisez des modèles Machine Learning à grande échelle, il est recommandé d’utiliser des environnements séparés pour différentes phases.
Imaginez que votre équipe utilise un environnement de développement, de pré-production et de production. Tous les membres de votre équipe ne doivent pas avoir accès à tous les environnements. Les scientifiques des données peuvent uniquement travailler dans l’environnement de développement avec des données hors production, tandis que les ingénieurs Machine Learning travaillent sur le déploiement du modèle dans les environnements de pré-production et de production avec des données de production.
La présence d’environnements séparés facilite le contrôle de l’accès aux ressources. Chaque environnement peut ensuite être associé à un espace de travail Azure Machine Learning distinct.
Dans Azure, vous allez utiliser le contrôle d’accès en fonction du rôle (RBAC) pour accorder aux collègues le niveau d’accès approprié au sous-ensemble des ressources dont ils ont besoin pour travailler.
Vous pouvez également utiliser un seul espace de travail Azure Machine Learning. Lorsque vous utilisez un espace de travail pour le développement et la production, vous disposez d’une plus petite empreinte Azure et d’une surcharge de gestion moindre. Toutefois, RBAC s’applique à la fois au développement et à la production, ce qui peut signifier que vous accordez aux personnes trop peu ou trop d’accès aux ressources.
Conseil
En savoir plus sur les meilleures pratiques d’organisation des ressources Azure Machine Learning.
Pour utiliser des environnements pour différentes phases du développement d’un modèle, vous pouvez cibler un environnement lors de l’exécution d’un pipeline Azure ou d’un workflow avec GitHub Actions.
Environnements Azure DevOps
Pour utiliser des environnements dans Azure DevOps, vous devez d’abord créer des environnements. Vous pouvez ensuite spécifier l’environnement à déployer dans un pipeline Azure.
- Dans Azure DevOps, développez le menu Pipelines.
- Sélectionnez Environnements.
- Créez un nouvel environnement.
- Donnez un nom à votre environnement.
- Choisissez Aucun pour les ressources. Vous ciblez un espace de travail Azure Machine Learning spécifique dans le pipeline lui-même.
- Sélectionnez Create (Créer).
Après avoir créé les environnements dans Azure DevOps et disposer d’espaces de travail Azure Machine Learning différents associés à chaque environnement, vous pouvez spécifier l’environnement à déployer dans le fichier YAML Azure Pipelines :
trigger:
- main
stages:
- stage: deployDev
displayName: 'Deploy to development environment'
jobs:
- deployment: publishPipeline
displayName: 'Model Training'
pool:
vmImage: 'Ubuntu-18.04'
environment: dev
strategy:
runOnce:
deploy:
steps:
- template: aml-steps.yml
parameters:
serviceconnectionname: 'spn-aml-workspace-dev'
La valeur de environment
dans le fichier YAML est dev
, indiquant que le modèle est entraîné dans l’environnement de développement. Par le biais de la connexion de service, vous spécifiez l’espace de travail Azure Machine Learning que vous souhaitez utiliser pour l’entraînement du modèle.
Conseil
En savoir plus sur comment créer et cibler un environnement avec Azure DevOps.
Environnements GitHub
Pour utiliser des environnements avec GitHub Actions, vous devez d’abord créer un environnement. Ensuite, vous pouvez utiliser un environnement dans votre workflow.
Pour créer un environnement au sein de votre dépôt GitHub :
- Accédez à l’onglet Paramètres dans votre dépôt.
- Sélectionnez Environnements.
- Créez un nouvel environnement.
- Entrez un nom.
- Sélectionnez Configurer l’environnement.
Pour associer un environnement à un espace de travail Azure Machine Learning spécifique, vous pouvez créer un secret d’environnement pour accorder à cet environnement l’accès à un espace de travail Azure Machine Learning uniquement.
Pour utiliser un environnement dans un workflow, vous pouvez ajouter l’environnement sur lequel vous souhaitez déployer en l’incluant dans le fichier YAML :
name: Train model
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
environment:
name: dev
steps:
- name: check out repo
uses: actions/checkout@v2
- name: install az ml extension
run: az extension add -n ml -y
- name: azure login
uses: azure/login@v1
with:
creds: ${{secrets.AZURE_CREDENTIALS}}
- name: set current directory
run: cd src
- name: run pipeline
run: az ml job create --file src/aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
Dans l’exemple, le secret AZURE_CREDENTIALS
contient les informations de connexion à l’espace de travail Azure Machine Learning utilisé pour cet environnement.
Conseil
En savoir plus sur comment créer et utiliser un environnement avec GitHub Actions.