Einrichten von Umgebungen für Entwicklung und Produktion
Bei DevOps bezieht sich eine Umgebung auf eine Sammlung von Ressourcen. Diese Ressourcen werden zur Bereitstellung einer Anwendung oder bei Machine Learning-Projekten zur Bereitstellung eines Modells verwendet.
Verwenden von Umgebungen für Continuous Delivery
Mit wie vielen Umgebungen Sie arbeiten, hängt von Ihrer Organisation ab. In der Regel gibt es mindestens zwei Umgebungen: Entwicklungsumgebung oder Dev und Produktionsumgebung oder Prod. Außerdem können Sie dazwischen Umgebungen wie Staging oder Vorproduktion (Pre-Prod) einrichten.
Ein typischer Ansatz für Continuous Delivery umfasst Folgendes:
- Experimentieren Sie mit dem Trainieren von Modellen in der Entwicklungsumgebung.
- Verschieben Sie das beste Modell in die Umgebung Staging oder Vorproduktion, um das Modell bereitzustellen und zu testen.
- Schließlich geben Sie das Modell für die Produktionsumgebungfrei, um es bereitzustellen, sodass die Endbenutzer es verwenden können.
Hinweis
In diesem Modul beziehen wir uns auf die DevOps-Interpretation von Umgebungen. Beachten Sie, dass Azure Machine Learning auch den Begriff „Umgebungen“ verwendet, um eine Sammlung von Python-Paketen zu beschreiben, die zum Ausführen eines Skripts benötigt werden. Diese beiden Konzepte von Umgebungen sind unabhängig voneinander. Erfahren Sie mehr über Azure Machine Learning-Umgebungen.
Organisieren von Azure Machine Learning-Umgebungen
Wenn Sie MLOps implementieren und im großen Stil mit Machine Learning-Modellen arbeiten, ist es eine bewährte Methode, mit getrennten Umgebungen für verschiedene Stages zu arbeiten.
Stellen Sie sich vor, Ihr Team verwendet eine Entwicklungs-, Vorproduktions- und Produktionsumgebung. Nicht jeder in Ihrem Team sollte Zugriff auf alle Umgebungen haben. Wissenschaftliche Fachkräfte für Daten dürfen nur in der Entwicklungsumgebung mit Nicht-Produktionsdaten arbeiten, während Techniker für maschinelles Lernen an der Bereitstellung des Modells in der Vorproduktions- und Produktionsumgebung mit Produktionsdaten arbeiten.
Durch getrennte Umgebungen lässt sich der Zugriff auf Ressourcen leichter kontrollieren. Jede Umgebung kann dann einem separaten Azure Machine Learning-Arbeitsbereich zugeordnet werden.
Innerhalb von Azure verwenden Sie die rollenbasierte Zugriffssteuerung (RBAC), um Ihren Kollegen den richtigen Zugriff auf die Teilmenge der Ressourcen zu gewähren, mit denen sie arbeiten müssen.
Alternativ können Sie auch nur einen einzelnen Azure Machine Learning-Arbeitsbereich verwenden. Wenn Sie einen Arbeitsbereich für Entwicklung und Produktion verwenden, haben Sie einen geringeren Azure-Speicherbedarf und weniger Verwaltungsaufwand. RBAC gilt jedoch sowohl für die Entwicklungs- als auch für die Produktionsumgebung, was bedeuten kann, dass Sie den Betroffenen zu wenig oder zu viel Zugriff auf Ressourcen gewähren.
Tipp
Erfahren Sie mehr über bewährte Methoden zur Organisation von Azure Machine Learning-Ressourcen.
Für die Arbeit mit Umgebungen für verschiedene Stages der Modellentwicklung können Sie eine Umgebung anvisieren, wenn Sie eine Azure-Pipeline oder einen Workflow mit GitHub Actions ausführen.
Azure DevOps-Umgebungen
Für die Arbeit mit Umgebungen in Azure DevOps müssen Sie zunächst Umgebungen erstellen. Dann können Sie angeben, für welche Umgebung Sie innerhalb einer Azure-Pipeline bereitstellen möchten.
- Erweitern Sie in Azure DevOps das Menü Pipelines.
- Wählen Sie Umgebungen aus.
- Erstellen Sie eine neue Umgebung.
- Geben Sie Ihrer Umgebung einen Namen.
- Wählen Sie Keine für Ressourcen aus. Sie zielen auf einen bestimmten Azure Machine Learning-Arbeitsbereich in der Pipeline selbst ab.
- Klicken Sie auf Erstellen.
Nachdem Sie die Umgebungen in Azure DevOps erstellt und verschiedene Azure Machine Learning-Arbeitsbereiche den einzelnen Umgebungen zugeordnet haben, können Sie in der YAML-Datei von Azure Pipelines angeben, in welcher Umgebung Sie die Bereitstellung vornehmen möchten:
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'
Der Wert für environment
in der YAML-Datei lautet dev
, was bedeutet, dass das Modell in der Entwicklungsumgebung trainiert wurde. Über die Dienstverbindung geben Sie an, welchen Azure Machine Learning-Arbeitsbereich Sie für das Modelltraining verwenden möchten.
Tipp
Erfahren Sie mehr über das Erstellen und Anvisieren einer Umgebung mit Azure DevOps.
GitHub-Umgebungen
Damit Sie Umgebungen mit GitHub Actions verwenden können, müssen Sie zunächst eine Umgebung erstellen. Anschließend können Sie eine Umgebung in Ihrem Workflow verwenden.
So erstellen Sie eine Umgebung in Ihrem GitHub-Repository (Repo):
- Wechseln Sie in Ihrem Repository zur Registerkarte Einstellungen.
- Wählen Sie Umgebungen aus.
- Erstellen Sie eine neue Umgebung.
- Geben Sie einen Namen ein.
- Wählen Sie Configure environment (Umgebung konfigurieren) aus.
Um eine Umgebung einem bestimmten Azure Machine Learning-Arbeitsbereich zu zuzuordnen, können Sie ein Umgebungsgeheimnis erstellen, um nur dieser Umgebung Zugriff auf einen Azure Machine Learning-Arbeitsbereich zu erteilen.
Zur Verwendung einer Umgebung in einem Workflow können Sie die Umgebung, in der Sie die Bereitstellung vornehmen möchten, in die YAML-Datei einbeziehen:
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
In dem Beispiel enthält das AZURE_CREDENTIALS
-Geheimnis die Verbindungsinformationen zum Azure Machine Learning-Arbeitsbereich, der für diese Umgebung verwendet wird.
Tipp
Erfahren Sie mehr über das Erstellen und Verwenden einer Umgebung mit GitHub Actions.