Repositorys und trunkbasierte Entwicklung

Abgeschlossen

Viele Datenwissenschaftler bevorzugen die Arbeit mit Python oder R, um Workloads für maschinelles Lernen zu definieren. Sie können Jupyter-Notebooks oder Skripte verwenden, um Daten vorzubereiten oder ein Modell zu trainieren.

Die Arbeit an Coderessourcen wird einfacher, wenn Sie Quellcodeverwaltung verwenden. Quellcodeverwaltung ist die Praxis, Code zu verwalten und alle Änderungen nachzuverfolgen, die dein Team am Code vornimmt.

Wenn Sie mit DevOps-Tools wie Azure DevOps oder GitHub arbeiten, wird der Code in einem sogenannten Repository oder Repo gespeichert.

Repository

Beim Einrichten des MLOps-Frameworks erstellt wahrscheinlich ein Techniker für maschinelles Lernen das Repository. Unabhängig davon, ob Sie Azure-Repositorys in Azure DevOps oder GitHub-Repositorys verwenden möchten: Beide verwenden Git-Repositorys, um Ihren Code zu speichern.

Im Allgemeinen gibt es zwei Möglichkeiten zum Festlegen des Bereichs des Repositorys:

  • Monorepo: Behalten Sie alle Workloads für maschinelles Lernen innerhalb desselben Repositorys.
  • Mehrere Repositorys: Erstellen Sie ein separates Repository für jedes neue Projekt für maschinelles Lernen.

Welche Vorgehensweise Ihr Team bevorzugt, hängt davon ab, wer Zugriff auf welche Ressourcen erhalten soll. Wenn Sie den schnellen Zugriff auf alle Coderessourcen sicherstellen möchten, können Monorepos den Anforderungen Ihres Teams besser entsprechen. Wenn Sie nur Personen Zugriff auf ein Projekt gewähren möchten, die aktiv daran arbeiten, kann Ihr Team mit mehreren Repositorys arbeiten. Beachten Sie, dass das Verwalten der Zugriffssteuerung zu mehr Aufwand führen kann.

Strukturieren Ihres Repositorys

Unabhängig vom gewählten Ansatz sollten Sie sich über die Standardordnerstruktur auf oberster Ebene für Ihre Projekte verständigen. Beispielsweise können Sie die folgenden Ordner in allen Repositorys haben:

  • .cloud: Enthält cloudspezifischen Code wie Vorlagen zum Erstellen eines Azure Machine Learning-Arbeitsbereichs.
  • .ad/.github: Enthält Azure DevOps oder GitHub-Artefakte wie YAML-Pipelines, um Workflows zu automatisieren.
  • src: Enthält einen Code (Python- oder R-Skripte), der für Workloads für maschinelles Lernen wie die Vorverarbeitung von Daten oder Modellschulungen verwendet wird.
  • docs: Enthält alle Markdowndateien oder andere Dokumentationen, die zum Beschreiben des Projekts verwendet werden.
  • pipelines: Enthält Azure Machine Learning-Pipelinedefinitionen.
  • tests: Enthält Einheiten- und Integrationstests, die verwendet werden, um Fehler und Probleme in Ihrem Code zu erkennen.
  • notebooks: Enthält Jupyter-Notebooks, die hauptsächlich für Experimente verwendet werden.

Hinweis

Trainingsdaten sollten nicht in Ihr Repository einbezogen werden. Die Daten sollten in einer Datenbank oder einem Data Lake gespeichert werden. Azure Machine Learning kann direkten Zugriff auf eine Datenbank oder einen Data Lake haben, wenn die Verbindungsinformationen als Datenspeicher gespeichert werden.

Durch eine in jedem Projekt verwendete Standardstruktur finden Datenwissenschaftler und andere Mitarbeiter einfacher den Code, an dem sie arbeiten müssen.

Tipp

Hier finden Sie weitere bewährte Methoden für die Strukturierung von Data Science-Projekten.

Weitere Informationen darüber, wie Sie als Datenwissenschaftler mit Repositorys arbeiten, finden Sie unter Trunkbasierte Entwicklung.

Trunkbasierte Entwicklung

Die meisten Softwareentwicklungsprojekte verwenden Git als Quellcodeverwaltungssystem, das sowohl von Azure DevOps als auch GitHub verwendet wird.

Der Hauptvorteil der Verwendung von Git ist die einfache Zusammenarbeit im Code, während zudem sämtliche vorgenommenen Änderungen nachverfolgt werden. Darüber hinaus können Sie Genehmigungsgates hinzufügen, um sicherzustellen, dass nur Änderungen am Produktionscode vorgenommen werden, die überprüft und akzeptiert wurden.

Um den obigen Vorgang auszuführen, verwendet Git die trunkbasierte Entwicklung, mit der Sie Branches erstellen können.

Der Produktionscode wird im Mainbranch gehostet. Wenn jemand eine Änderung vornehmen möchte:

  1. Sie erstellen eine vollständige Kopie des Produktionscodes, indem Sie einen Branch erstellen.
  2. In dem von Ihnen erstellten Branch nehmen Sie alle Änderungen vor und testen sie.
  3. Sobald die Änderungen in Ihrem Branch bereit sind, können Sie jemanden bitten, die Änderungen zu überprüfen.
  4. Wenn die Änderungen genehmigt sind, führen Sie den von Ihnen erstellten Branch mit dem Hauptrepository zusammen, und der Produktionscode wird aktualisiert, damit er Ihre Änderungen anzeigt.

Diagram of trunk-based development workflow.