ジョブを実行するその他の方法

conda環境やzipファイルの使用など、多数の様々な方法でジョブを使用できます。

zipまたは圧縮tarファイルの使用

ジョブを使用して、単一のファイルにアーカイブしたPythonプロジェクト全体を実行できます。

ジョブとして実行されるzipまたは圧縮されたtarファイルは、データ・サイエンス・サービスconda環境およびカスタムconda環境を利用できます。

ジョブ実行には、JOB_RUN_ENTRYPOINT環境変数を使用してメイン・エントリ・ファイルを指します。この変数は、zipまたは圧縮tarジョブ・アーティファクトを使用するジョブでのみ使用されます。

データ・サイエンスConda環境の使用

サービスに含まれているデータ・サイエンスconda環境の1つを使用できます。

conda環境は、ジョブ実行に必要なすべてのサードパーティのPython依存関係(Numpy、Dask、XGBoostなど)をカプセル化します。データ・サイエンスconda環境は、サービスに含まれ、メンテナンスされます。ジョブおよびジョブ実行構成の一部としてconda環境を指定しない場合、デフォルトがないため、conda環境は使用されません。

ジョブ・コードは、データ・サイエンスconda環境に埋め込まれます:

ジョブ・コードがデータ・サイエンスのconda、シェイプ、ジョブ実行に埋め込まれている方法を示しています。condaカードのcondaスラグ。

  1. 使用するデータ・サイエンスcondaを検索し、次から選択します:
  2. ジョブを作成し、次のカスタム環境変数を追加して、データ・サイエンスcondaを指定します:
    CONDA_ENV_TYPE => "service"
    CONDA_ENV_SLUG = <service_conda_environment_slug>
  3. ジョブ実行を開始します。ジョブ実行に別のconda環境を使用するには、カスタム環境変数を使用してジョブ構成をオーバーライドします。

カスタムConda環境の使用

zipおよび圧縮されたtarファイルのジョブは、カスタムconda環境またはデータ・サイエンスconda環境で使用できます。

conda環境は、ジョブ実行に必要なすべてのサードパーティのPython依存関係(Numpy、Dask、XGBoostなど)をカプセル化します。カスタムconda環境を作成、公開およびメンテナンスします。ジョブおよびジョブ実行構成の一部としてconda環境を指定しない場合、デフォルトがないため、conda環境は使用されません

ジョブ・コードは、次のようにカスタムconda環境に埋め込まれます:

ジョブ・コードがカスタムconda、シェイプおよびジョブ実行にどのように埋め込まれているかを示しています。condaカードのcondaスラグ。

  1. カスタムconda環境を作成します
  2. オブジェクト・ストレージに公開します
  3. ジョブ実行リソースがテナンシのオブジェクト・ストレージ・バケットに格納されている公開されているconda環境にアクセスできるようにするポリシーを設定します
  4. ジョブを作成し、次の環境変数を設定します(ジョブ実行と同じリージョンにある場合、リージョンはオプションです):
    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>
    重要

    ジョブおよびジョブ実行は、テナンシのオブジェクト・ストレージ・バケット内の公開済conda環境にアクセスするためのサービス・ゲートウェイを持つサブネットで構成する必要があります。

  5. ジョブ実行を開始します

    (オプション)個々のジョブ実行に異なるconda環境を使用するには、カスタム環境変数を設定してジョブ構成をオーバーライドします。

  6. (オプション)ロギングを使用した場合は、ジョブ実行値を確認するためにそれらを確認できます。

ランタイムYAMLファイルの使用

コンソールまたはSDKを使用するかわりに、ランタイムYAMLファイルを使用してジョブ環境変数を構成できます。

開始する前に:

jobruntime.yamlおよびconda_pack_test.pyサンプル・ファイルをダウンロードして解凍および確認し、ジョブ・プロジェクトを作成してテストします。

jobruntime.yamlファイルを使用すると、プロジェクトでカスタム環境変数を簡単に設定できます。

  1. jobruntime.yamlサンプル・ファイルを変更して、値を指定します。

    ジョブ実行時に使用する変数を追加します。ジョブ実行の特定の環境変数(CONDA_ENV_TYPECONDA_ENV_SLUGなど)およびカスタム・キー・ペアを追加できます。

    例:

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

    ネストした変数はサポートされません。

    プロジェクトのJOB_RUN_ENTRYPOINTがランタイムYAMLに含まれていることに注意してください。ジョブの実行時に手動で行う必要はありません。

  2. プロジェクト・ルート・ディレクトリに、単一のpythonファイルおよびjobruntime.yamlファイルを含む単純なプロジェクトを作成します。
  3. pythonファイルで、環境変数を読み取ってそれらを出力し、アクセス可能であることをテストします。

    例:

    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. プロジェクトのルート・ディレクトリをzipまたは圧縮されたtarファイルにアーカイブします。

    たとえば、Macでファイルをzipするには、次の方法を使用します:

    zip -r zip-runtime-yaml-artifact.zip zip-runtime-yaml-artifact/ -x ".*" -x "__MACOSX"
  5. コンソールから、新しいジョブを作成し、ジョブ・アーカイブ・ファイルをアップロードします。
  6. ジョブを実行して、その動作をテストします。

    .yamlファイルで環境変数が設定されているため、ジョブ実行に環境変数を指定する必要はありません。

  7. ジョブ実行をモニターし、正常終了を確認します。
  8. (オプション)ロギングを使用した場合は、ジョブ実行値を確認するためにそれらを確認できます。

Vaultの使用

リソース・プリンシパルを使用して、OCI Vaultサービスをデータ・サイエンス・ジョブに統合できます。

開始する前に:

  • ジョブのリソース・プリンシパルがボールトにアクセスできるようにするには、インスタンスまたはリソース・プリンシパルを指定する動的グループがコンパートメントにあることを確認してください。たとえば、次のルールでリソース・プリンシパルと動的グループを使用できます:

    all {resource.type='datasciencejobrun',resource.compartment.id='<compartment_ocid>'}
  • ジョブを実行するには、少なくとも動的グループでシークレット・ファミリを管理できる必要があります。例:

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

    PythonでのOCI Instance PrincipalsおよびVaultを使用したシークレットの取得のブログ投稿に、有用な詳細情報が記載されています。

  • 次を示すzipped_python_job.zipサンプル・ファイルをダウンロード、解凍およびレビューします:

    • Python SDKを使用したジョブでのボールト・クライアントの初期化
    • シークレットOCIDを使用してシークレットを読み取ります。
    • シークレット・バンドルをデコードし、実際のシークレット・コンテンツを表示します。

    ジョブはリソース・プリンシパルにアクセスするため、Python SDKで使用可能なすべてのVaultクライアントを初期化できます。

  • マスター・キーシークレットを持つボールトを作成し、すべてのジョブ・リソース・プリンシパルにmanage secret-familyポリシー・ステートメントを追加します。

  1. コンソールから、新しいジョブを作成します
  2. ジョブを実行して、その動作をテストします。
  3. ジョブ実行をモニターし、正常終了を確認します。
  4. (オプション)ロギングを使用した場合は、ジョブ実行値を確認するためにそれらを確認できます。