ML-Anwendungsprojektsetup

Nachdem Sie die Infrastruktur für die Beispiel-ML-Anwendung erstellt haben, können Sie das Beispiel-ML-Anwendungsprojekt als Vorlage verwenden, um mit dem Erstellen, Bereitstellen und Betreiben Ihrer eigenen ML-Anwendungen zu beginnen.

Dieses Projekt umfasst Best Practices für die Entwicklung und stellt die mlapp-CLI bereit, ein Tool zur Vereinfachung der ML-Anwendungsentwicklung. Um eine ML-Anwendung zu erstellen, müssen Sie die mlapp-CLI, Terraform, das OCI-SDK oder die OCI-CLI verwenden. Sie können keine ML-Anwendung in der Konsole erstellen. Dort können Sie jedoch ML-Anwendungen und deren Details anzeigen.

Wenn Sie Ihr Projekt mit dem Beispielprojekt "ML-Anwendung" beginnen, können Sie die ML-Anwendungsimplementierung in die Produktion überführen. Das Projekt basiert auf den Erfahrungen, die Unternehmen bei der erfolgreichen Bereitstellung ihrer Anwendungen in der Produktion gesammelt haben.

Das Beispielprojekt "ML-Anwendung" ist hier verfügbar: sample-project.

Klonen Sie dieses Projekt, um es als Grundlage für Ihre ML-Anwendungsimplementierung zu verwenden.

Das Projekt enthält eine Dokumentation in README.md-Dateien, in der Sie detaillierte Informationen über das Projekt und seine Komponenten finden.

Projektstruktur

Das Projekt besteht aus zwei Hauptteilen:

  • Der Infrastrukturordner automatisiert die Erstellung von Ressourcen, von denen die Beispiel-ML-Anwendung abhängt.
  • Der ML-Anwendungsordner enthält die Beispiel-ML-Anwendung, einschließlich Konfiguration, Implementierung und mlapp-CLI.

Vorausgesetzte Ressourcen konfigurieren

Bevor Sie mit dem Erstellen und Bereitstellen der ML-Anwendung beginnen, müssen Sie die erforderlichen Ressourcen erstellen, von denen die Beispiel-ML-Anwendung abhängt (z.B. Logs, Loggruppen, ein Data Science-Projekt und ein Subnetz). Dieser Prozess kann wie folgt automatisiert werden:

  1. Bereiten Sie den Umgebungsordner vor.
    Sie können den Standardumgebungsordner dev (environments/dev) verwenden oder ihn als Vorlage verwenden, um die benutzerdefinierte Umgebung zu erstellen. So erstellen Sie die benutzerdefinierte Umgebung:
    1. Erstellen Sie eine Kopie des Ordners für die Entwicklungsumgebung (environments/dev).
    2. Benennen Sie den kopierten Ordner so um, dass er dem Namen der Umgebung entspricht.
  2. Umgebung konfigurieren.
    1. Navigieren Sie zum Umgebungsordner (Beispiel: environments/dev).
    2. Bearbeiten Sie die Datei input_variables.tfvars, um die Umgebungseinstellungen zu konfigurieren.
  3. Führen Sie Terraform aus, um Ressourcen zu erstellen.
    1. Initialisieren Sie Terraform im Umgebungsordner:
      terraform init
    2. Wenden Sie die Konfiguration an, um die Ressourcen zu erstellen:
      terraform apply -var- file input_variables.tfvars
    3. Falls erforderlich, löschen Sie die erstellten Ressourcen:
      terraform destroy -var- file input_variables.tfvars
    Hinweis

    Verwenden Sie Ressourcen nicht in verschiedenen Umgebungen wieder, da dies die Isolation der Umgebung beeinträchtigen kann. Beispiel: Die gemeinsame Nutzung einer Ressource zwischen Entwicklungs- und QS-Umgebungen kann zu Entwicklungsproblemen führen, die dazu führen können, dass die QS-Umgebung unbrauchbar wird. Dadurch wird das Deployment in die Produktion verzögert.

ML-Anwendungsumgebung konfigurieren

  1. Bereiten Sie den Umgebungsordner vor.
    Sie können den Standardumgebungsordner dev (environments/dev) verwenden oder ihn als Vorlage verwenden, um die benutzerdefinierte Umgebung zu erstellen. So erstellen Sie die benutzerdefinierte Umgebung:
    1. Erstellen Sie eine Kopie des Ordners für die Entwicklungsumgebung (environments/dev).
    2. Benennen Sie den kopierten Ordner so um, dass er dem Namen der Umgebung entspricht.
  2. Umgebung konfigurieren.
    Im Ordner für die Umgebungskonfiguration:
    1. Bearbeiten Sie die Datei env-config.yaml.
    2. Bearbeiten Sie die Datei testdata-instance.json (der Object Storage-Namespace, nach dem At-Zeichen ('@') muss entsprechend dem Mandanten aktualisiert werden).
  3. Definieren Sie Ressourcenreferenzen.
    1. Bearbeiten Sie die Datei arguments.yaml im Umgebungskonfigurationsordner, um Referenzen auf die Ressourcen zu definieren, von denen die Anwendung abhängt.
    2. Führen Sie im Ordner infrastructure/environments/<your environment> den Befehl
      terraform output
    3. Kopieren Sie die Ausgabe (ohne die letzte Zeile), und fügen Sie sie in arguments.yaml ein, und ersetzen Sie = durch :.

Mlapp-CLI konfigurieren und initialisieren

  1. Konfigurieren Sie das ML-Anwendungsprojekt.
    1. Navigieren Sie zum Anwendungsordner.
    2. Bearbeiten Sie die Datei application-def.yaml, um den Namen und die Beschreibung der ML-Anwendung und ihrer Implementierung zu definieren.
    3. Erstellen Sie default_env, um die Umgebung als Standard festzulegen (dadurch muss sie bei Verwendung der CLI mlapp nicht mehr in der Befehlszeile angegeben werden). Sie können ml-application/default_env.example in ml-application/default_env kopieren und den Umgebungsnamen dort speichern.
  2. Initialisieren Sie die Umgebung.
    Führen Sie im Ordner "ml-application" Folgendes aus:
    source ./mlapp init

    Mit diesem Befehl wird das Skript mlapp zur PATH-Variablen hinzugefügt, sodass Sie die CLI mit mlapp anstelle von ./mlapp ausführen können.

Anwendung erstellen und bereitstellen

Wenn alles konfiguriert ist, können Sie jetzt mit dem Erstellen und Bereitstellen der Anwendung beginnen.

Hinweis

Erfahren Sie mehr über mlapp-CLI-Befehle, indem Sie Folgendes ausführen:
mlapp -h
  1. Erstellen Sie die Anwendung.
    mlapp build
  2. Die Anwendung bereitstellen.
    mlapp deploy
  3. Instanziieren Sie die Anwendung.
    mlapp instantiate
  4. eine Ausführung der Trainingspipeline auslösen
    mlapp trigger
  5. Testen Sie den Predictive Service.
    mlapp predict
Nachdem Sie einen CLI-Befehl mlapp ausgeführt haben, prüfen Sie die Ergebnisse, indem Sie unter "OCI-Konsole / Analysen & KI / Maschinelles Lernen" zu ML-Anwendungen navigieren.

Definierte Tags und Freiformtags verwenden

Die Beispielanwendung zeigt, wie Sie definierte Tags und Freiformtags verwenden, um die Mandantenisolation sicherzustellen und die Verfolgung von Laufzeitressourcen, insbesondere Modellen, zu ermöglichen.

Definierte Tags werden verwendet, um mandantenspezifische IDs mit Ressourcen wie Modell-Deployments, Speicher-Buckets und Modellen zu verknüpfen.
Ein definiertes Tag zu einem Bucket hinzufügen
resource "oci_objectstorage_bucket" "data_storage_bucket" {
  compartment_id = var.app_impl.compartment_id
  namespace      = data.oci_objectstorage_namespace.this.namespace
  name           = "ml-app-fetal-risk-bucket-${var.app_instance.id}"
  access_type    = "NoPublicAccess"
 
  # To allow Instance (tenant) isolation
  defined_tags   = {"MlApplications.MlApplicationInstanceId" = var.app_instance.id}
}
Fügen Sie für Laufzeitressourcen, die dynamisch aus Code (wie Modellen) erstellt werden, sowohl ein definiertes Tag als auch ein Freiformtag hinzu. Das Freiformtag verknüpft die Ressource mit der Instanz und ermöglicht das automatische Löschen, wenn die Instanz entfernt wird.
Definierte und Freiformtags zu einem Modell hinzufügen
model_id = xgb_model.save(display_name='fetal_health_model',
                          # needed for tenant isolation
                          defined_tags={"MlApplications": {"MlApplicationInstanceId": instance_id}},
                          # needed for ML App to be able to track created model
                          freeform_tags={"MlApplicationInstance": instance_id})