Jobs

Data Science-Jobs ermöglichen benutzerdefinierte Aufgaben, die Sie jeden beliebigen Anwendungsfall anwenden können, wie Datenvorbereitung, Modelltraining, Hyperparameteroptimierung, Batchinferenz usw.

Mit Jobs können Sie folgende Aufgaben ausführen:

  • ML- oder Data Science-Aufgaben außerhalb von Notizbuchsessions in JupyterLab ausführen

  • Diskrete Data-Science- und ML-Aufgaben als wiederverwendbare, ausführbare Vorgänge operationalisieren

  • Typische MLOps- oder CI/CD-Pipelines automatisieren

  • Batches oder Workloads ausführen, die von Ereignissen oder Aktionen ausgelöst werden.

  • Inferenz für Batches, Minibatches oder verteilte Batchjobs ausführen

  • Batch-Workloads verarbeiten

  • Eigene Container verwenden

In der Regel besteht ein ML- und Data-Science-Projekt aus einer Reihe von Schritten, darunter:

  1. Zugreifen

  2. Explorieren

  3. Vorbereiten

  4. Modellieren

  5. Trainieren

  6. Validieren

  7. Bereitstellen

  8. Testen

Nach Abschluss der Schritte können Sie den Prozess für Datenexploration, Modelltraining, Deployment und Tests mit Jobs automatisieren. Bei einer einzelnen Änderung der Datenvorbereitung oder des Modelltrainings könnten Experimente mit Hyperparameter-Optimierungen als Job ausgeführt und unabhängig getestet werden.

Jobs bestehen aus zwei Teilen: einem Job und einem Joblauf:

Job

Ein Job ist eine Vorlage, die die Aufgabe beschreibt. Er enthält Elemente wie das Jobartefakt, das unveränderlich ist und nach dem Upload in einen Job nicht mehr geändert werden kann. Außerdem enthält der Job Informationen zu den Compute-Ausprägungen, auf denen der Job ausgeführt wird, zu Loggingoptionen, Blockspeicher und anderen Optionen. Sie können Jobs Umgebungsvariablen oder CLI- Argumente hinzufügen, die für alle zukünftigen Jobläufe eindeutig oder ähnlich sind. Sie können diese Variablen und Argumente in Jobläufen außer Kraft setzen.

Sie können die Compute-Ausprägung im Job und zwischen Jobläufen bearbeiten. Beispiel: Wenn Sie einen Joblauf mit einer stärkeren Ausprägung ausführen möchten, können Sie die Compute-Ausprägung des Jobs bearbeiten und dann einen neuen Joblauf starten.

Tipp

Sie müssen nicht warten, bis der Joblauf abgeschlossen ist, um die Ausprägung zu bearbeiten.

Joblauf

Ein Joblauf ist der eigentliche Jobprozessor. Bei jedem Joblauf können Sie einige Jobkonfigurationsoptionen und vor allem die Umgebungsvariablen und CLI-argumente überschreiben. Sie können denselben Job mit mehreren aufeinander folgenden oder gleichzeitig gestarteten Jobläufen mit unterschiedlichen Parametern einrichten. Beispiel: Sie können ausprobieren, wie derselbe Modelltrainingsprozess mit unterschiedlichen Hyperparametern ausgeführt wird.

Zeigt die Beziehung zwischen Jobs und Jobläufen mit den Optionen an, die festgelegt werden können.

Joblebenszyklus

Jede Phase des Joblebenszyklus löst Ereignisse aus, mit denen Sie Benachrichtigungen senden, Drittanbieterfunktionen auslösen oder sogar andere Jobläufe starten können.

Jobs erstellen

Bei der Joberstellung können Sie eine Jobkonfiguration erstellen und eine Jobartefakt-Datei angeben. Das Jobartefakt enthält den ausführbaren Code für den Job. Dieses Artefakt kann eine Python-, Bash/Shell- oder eine ZIP- oder komprimierte TAR-Datei sein, die ein gesamtes Projekt enthält, das in Python oder Java geschrieben wurde.

Außerdem geben Sie die Compute-Ausprägung zur Ausführung des Jobartefakts sowie den Blockspeicher und das Networking an. Sie können flexibel verschiedene CPU- und GPU-Ausprägungen sowie einen Blockspeicher von bis zu 1 TB auswählen. Mit der Loggingoption können Sie die automatische Loggingerstellung für jeden Joblauf festlegen.

Speichermounts können wie folgt verwendet werden:

  • Speichern Sie Protokolle während des Modelltrainings, auf die von einem anderen Ort aus zugegriffen werden kann.
  • Speichern Sie Checkpoints während des Modelltrainings, damit Sie ein Modell vom letzten Checkpoint weiter trainieren und das Training von Anfang an vermeiden können.
  • Speichern und Lesen von Daten aus dem allgemeinen Dateisystem-Mount, damit Sie die Daten nicht auf den Rechner kopieren müssen, auf dem der Job ausgeführt wird.
Jobläufe starten

Das ist der Jobprozessor. Beim Starten eines Joblaufs können Sie einige konfigurierte Parameter ändern, um den Anwendungsfall zu ändern.

Der Joblauf verwendet verschiedene Lebenszyklusvorgänge. Bei einem Joblauf verarbeitet der Data Science-Service das Provisioning der Infrastruktur, die Ausführung des Jobartefakts und das Provisioning der Infrastruktur, wenn die Jobartefaktausführung abgeschlossen ist.

Ein Job kann viele Jobläufe aufweisen, die nacheinander oder gleichzeitig ausgeführt werden können. Sie können eine maximale Laufzeit für den Joblauf konfigurieren. Wenn ein Joblauf über die konfigurierte maximale Laufzeit hinaus ausgeführt wird, storniert der Data Science-Service den Joblauf automatisch. Es wird empfohlen, eine maximale Laufzeit für alle Jobläufe zu konfigurieren, um langfristige Arbeitsspeicherbelegung durch Jobläufe zu verhindern.

Hinweis

Der obere Grenzwert für die maximale Laufzeit eines Joblaufs beträgt 30 Tage. Wenn dieser Wert nicht konfiguriert ist, wird der Grenzwert von 30 Tagen dennoch durchgesetzt.

Monitoring

Während des Joblaufs können Sie den Prozess überwachen, indem Sie Logging mit dem Logging-Service Logging aktivieren. Die Meldungen werden für den Joblauf und die Jobartefaktdatei protokolliert.

Beim Monitoring können Sie Debugging für potenzielle Fehler ausführen und die verwendeten Ressourcen überwachen.

Beendigung

Ein Joblauf endet mit Beendigung des Codeprozesses. Damit wird der letzte Lebenszyklus des Joblaufs ausgelöst, d.h. das De Provisioning der Infrastruktur. Die Infrastruktur wird auch beim Abbrechen eines Joblaufs zerstört.

Jobzugriff auf Cloud-Ressourcen

Jobs können auf alle OCI-Ressourcen in einem Mandanten zugreifen, solange eine Policy das zulässt. Sie können Jobs für Daten in ADW oder Object Storage ausführen. Darüber hinaus können Sie Vaults zur sicheren Authentifizierung bei Drittanbieterressourcen verwenden. Jobs können auf externe Quellen zugreifen, wenn Sie das entsprechende VCN konfiguriert haben.

Joblaufzugriff

Jobläufe unterstützen das OCI-SDK und die API. Sie können Jobs aus allen möglichen Drittanbieterservices ausführen, z.B.:

  • Clientrechner, MLOps- oder CI/CD-Pipeline
  • GitHub- oder Bitbucket-CI/CD-Pipelines
  • Oracle AI-Services oder Drittanbieter.
  • Events-Service

Sie können die OCI-Konsole verwenden, um Jobs zu erstellen und Jobläufe zu starten. Außerdem können Sie Jobs mit den folgenden Optionen erstellen und ausführen:

  • Python

  • Java

  • JavaScript

  • TypeScript

  • Go

  • Ruby

  • OCI-CLI

  • Terraform