Andere Möglichkeiten zum Ausführen von Jobs

Sie können Jobs auf vielfältige Weise verwenden, wie z.B. mit Conda-Umgebungen und ZIP-Dateien.

ZIP- oder komprimierte TAR-Dateien verwenden

Sie können über Jobs ein ganzes Python-Projekt ausführen, das Sie in einer einzelnen Datei archivieren.

ZIP- oder komprimierte TAR-Dateien, die als Job ausgeführt werden, können die Data Science-Service-Conda-Umgebungen und die benutzerdefinierten Conda-Umgebungen nutzen.

Beim Joblauf verweisen Sie mit der Umgebungsvariable JOB_RUN_ENTRYPOINT auf die Haupteintragsdatei. Diese Variable wird nur mit Jobs verwendet, die ZIP- oder komprimierte TAR-Jobartefakte verwenden.

Data Science-Conda-Umgebungen verwenden

Sie können eine der Conda-Umgebungen von Data Science verwenden, die im Service enthalten sind.

Eine Conda-Umgebung kapselt alle Drittanbieter-Python-Abhängigkeiten (wie Numpy, Dask oder XGBoost), die für den Joblauf erforderlich sind. Data Science-Conda-Umgebungen sind im Service enthalten und werden dort verwaltet. Wenn Sie im Rahmen von Job- und Joblaufkonfigurationen keine Conda-Umgebung angeben, wird keine Conda-Umgebung verwendet, weil kein Standardwert vorhanden ist.

Der Jobcode ist in eine Data Science-Conda-Umgebung integriert:

Zeigt, wie Jobcode in Data-Science-Codas, -Ausprägungen und -Jobläufe eingebettet ist. Zeigt außerdem den Conda-Slug in der Conda-Karte.

  1. Suchen Sie die zu verwendende Data Science-Conda-Umgebung, und wählen Sie eine der folgenden Optionen aus:
    • Über die Konsole:

      1. Erstellen Sie in einem Projekt eine Notizbuchsession.

      2. Öffnen Sie die Notizbuchsession.

      3. Sie können die Conda-Umgebungen anzeigen, und wählen Sie die Data Science-Conda-Umgebung aus, die Sie verwenden möchten.

      4. Kopieren Sie den Slug der Conda-Umgebung aus der ausgewählten Karte.

        Bei der Ausführung eines Jobs mit einer Data Science-Conda-Umgebung müssen Sie ihn nicht in Object Storage veröffentlichen. Sie benötigen nur den Conda-Slug-Wert.

        Tipp

        Sie können den Code in einem Notizbuch testen, bevor Sie ihn als Job ausführen.

    • Führen Sie in der Liste der Data-Science-Conda-Umgebungen folgende Aktionen aus:

      1. Suchen Sie die gewünschte Conda-Umgebung.

      2. Kopieren Sie den Slug in der Tabelle.

  2. Erstellen Sie einen Job, und fügen Sie diese benutzerdefinierte Umgebungsvariable hinzu, um die Data Science-Conda-Umgebung anzugeben:
    CONDA_ENV_TYPE => "service"
    CONDA_ENV_SLUG = <service_conda_environment_slug>
  3. Starten Sie einen Joblauf. Verwenden Sie zum Überschreiben der Jobkonfiguration die benutzerdefinierten Umgebungsvariablen, um eine andere Conda-Umgebung für den Joblauf zu verwenden.

Benutzerdefinierte Conda-Umgebungen verwenden

Sie können Jobs mit ZIP- und komprimierten Tar-Dateien mit benutzerdefinierten Conda-Umgebungen oder Data Science-Conda-Umgebungen verwenden.

Eine Conda-Umgebung kapselt alle für Ihren Joblauf erforderlichen Drittanbieter-Python-Abhängigkeiten (wie Numpy, Dask oder XGBoost). Sie erstellen, veröffentlichen und verwalten benutzerdefinierte Conda-Umgebungen. Wenn Sie im Rahmen von Job- und Joblaufkonfigurationen keine Conda-Umgebung angeben, wird keine Conda-Umgebung verwendet, weil kein Standardwert vorhanden ist.

Der Jobcode ist wie folgt in eine benutzerdefinierte Conda-Umgebung eingebettet:

Zeigt, wie Ihr Jobcode in benutzerdefinierte Conda-Umgebungen, -Ausprägungen und -Jobläufe eingebettet ist. Zeigt außerdem den Conda-Slug in der Conda-Karte.

  1. Erstellen Sie eine benutzerdefinierte Conda-Umgebung.
  2. Veröffentlichen Sie sie in Object Storage.
  3. Richten Sie Policys ein, mit denen die Joblaufressource auf die veröffentlichten Conda-Umgebungen zugreifen kann, die im Objektspeicher-Bucket Ihres Mandanten gespeichert sind.
  4. Erstellen Sie einen Job, und legen Sie die folgenden Umgebungsvariablen fest (die Region ist optional, wenn sie mit der Region des Joblaufs identisch ist):
    CONDA_ENV_TYPE => "published"
    CONDA_ENV_OBJECT_NAME => <full_path_object_storage_name>
    CONDA_ENV_REGION => <object_storage_region>
    CONDA_ENV_NAMESPACE => <object_storage_namespace>
    CONDA_ENV_BUCKET => <object_storage_bucket_name>
    Wichtig

    Der Job und Joblauf müssen mit einem Subnetz konfiguriert werden, das über ein Servicegateway auf die veröffentlichte Conda-Umgebung im Objektspeicher-Bucket Ihres Mandanten zugreifen kann.

  5. Starten Sie einen Joblauf.

    (Optional) Um für einzelne Jobläufe eine andere Conda-Umgebung zu verwenden, legen Sie benutzerdefinierte Umgebungsvariablen fest, um die Jobkonfiguration außer Kraft zu lassen.

  6. (Optional) Wenn Sie Logging verwendet haben, können Sie die Werte des Joblaufs in den Logs prüfen.

YAML-Laufzeitdatei verwenden

Sie können eine YAML-Laufzeitdatei anstelle der Konsole oder des SDK verwenden, um Jobumgebungsvariablen zu konfigurieren.

Bevor Sie beginnen:

Laden Sie die Beispieldateien jobruntime.yaml und conda_pack_test.py herunter, dekomprimieren Sie sie, und prüfen Sie sie, um Ihr Jobprojekt zu erstellen und zu testen.

Die Verwendung einer jobruntime.yaml-Datei erleichtert das Festlegen benutzerdefinierter Umgebungsvariablen in Ihrem Projekt.

  1. Ändern Sie die Beispieldatei jobruntime.yaml, um Ihre Werte anzugeben.

    Fügen Sie Variablen hinzu, die beim Joblauf verwendet werden sollen. Sie können spezifische Umgebungsvariablen wie CONDA_ENV_TYPE oder CONDA_ENV_SLUG und benutzerdefinierte Schlüsselpaare zum Joblauf hinzufügen.

    Beispiel:

    CONDA_ENV_TYPE: service
    CONDA_ENV_SLUG: dataexpl_p37_cpu_v2
    JOB_RUN_ENTRYPOINT: conda_pack_test.py
    KEY1: value1
    KEY2: 123123
    Wichtig

    Verschachtelte Variablen werden nicht unterstützt.

    Beachten Sie, dass JOB_RUN_ENTRYPOINT für das Projekt in der Laufzeit-YAML enthalten ist, sodass Sie diese Einstellung bei Ausführung des Jobs nicht manuell vornehmen müssen.

  2. Erstellen Sie ein einfaches Projekt mit einer einzelnen Python-Datei und Ihrer jobruntime.yaml-Datei in einem Projekt-Root-Verzeichnis.
  3. Lesen Sie in der Python-Datei die Umgebungsvariablen, und geben Sie sie aus, um zu testen, ob sie zugänglich sind.

    Beispiel:

    print("Executing job artifact")
    print(os.getenv("CONDA_PREFIX"))
    print(os.getenv("CONDA_ENV_SLUG"))
    print(os.getenv("JOB_RUN_ENTRYPOINT"))
    print(os.getenv("KEY1"))
    print(os.getenv("KEY2"))
    print(os.getenv("spec"))
  4. Archivieren Sie das Root-Verzeichnis des Projekts in einer ZIP- oder komprimierten TAR-Datei.

    Beispiel: Sie können eine Datei wie folgt auf einem Mac komprimieren:

    zip -r zip-runtime-yaml-artifact.zip zip-runtime-yaml-artifact/ -x ".*" -x "__MACOSX"
  5. Erstellen Sie in der Konsole einen neuen Job, und laden Sie die Jobarchivdatei hoch.
  6. Führen Sie den Job aus, um zu testen, ob er funktioniert.

    Beachten Sie, dass Sie keine Umgebungsvariablen im Joblauf angeben müssen, da diese in der .yaml-Datei festgelegt sind.

  7. Überwachen Sie den Joblauf, um zu prüfen, ob er erfolgreich abgeschlossen wird.
  8. (Optional) Wenn Sie Logging verwendet haben, können Sie die Werte des Joblaufs in den Logs prüfen.

Vault verwenden

Sie können den OCI-Vault-Service mit Resource Principals in Data Science-Jobs integrieren.

Bevor Sie beginnen:

  • Damit der Resource Principal im Job auf einen Vault zugreifen kann, richten Sie eine dynamische Gruppe in Ihrem Compartment ein, die entweder die Instanz oder den Resource Principal angibt. Beispiel: Sie können den Resource Principal und eine dynamische Gruppe mit dieser Regel verwenden:

    all {resource.type='datasciencejobrun',resource.compartment.id='<compartment_ocid>'}
  • Damit der Job ausgeführt werden kann, müssen Sie sicherstellen, dass Sie die Secret-Familie mindestens für die dynamische Gruppe verwalten können. Beispiel:

    Allow dynamic-group <dynamic_group_name> to manage secret-family in compartment <compartment_name>

    Der Blogpost OCI-Instanz-Principals und Vault mit Python zum Abrufen eines Secrets verwenden enthält nützliche Details.

  • Laden Sie die Beispieldatei zipped_python_job.zip herunter, dekomprimieren Sie sie, und prüfen Sie sie:

    • Sie initialisiert einen Vault-Client im Job mit dem Python-SDK.
    • Sie liest ein Secret mit der Secret-OCID.
    • Sie decodiert das Secret Bundle und zeigt den tatsächlichen Secret-Inhalt an.

    Da Jobs Zugriff auf den Resource Principal haben, können Sie alle Vault-Clients initialisieren, die im Python-SDK verfügbar sind.

  • Erstellen Sie einen Vault mit einem Masterschlüssel, erstellen Sie ein Secret, und fügen Sie eine Policy-Anweisung mit manage secret-family zu allen Job-Resource-Principals hinzu.

  1. Erstellen Sie in der Konsole einen neuen Job.
  2. Führen Sie den Job aus, um zu testen, ob er funktioniert.
  3. Überwachen Sie den Joblauf, um zu prüfen, ob er erfolgreich abgeschlossen wird.
  4. (Optional) Wenn Sie Logging verwendet haben, können Sie die Werte des Joblaufs in den Logs prüfen.