カスタム トレーニング用の NFS 共有をマウントする

コードが実行されるコンテナにネットワーク ファイル システム(NFS)共有をマウントするように、カスタム トレーニング ジョブを構成できます。これにより、ジョブがローカルに存在するかのようにリモート ファイルにアクセスできるようになり、高スループットと低レイテンシが実現します。

このガイドでは、カスタム トレーニング ジョブの実行時に NFS 共有をマウントする方法について説明します。

始める前に

  1. Virtual Private Cloud(VPC)で NFS 共有を作成します。認証なしで共有できるようにする必要があります。

    NFS 共有として Filestore インスタンスを使用できます。Filestore を使用しており、次のステップで Vertex AI に VPC ピアリングを使用する場合は、インスタンスの作成時に接続モードとして [プライベート サービス アクセス] を選択します。例については、Filestore ドキュメントのインスタンスの作成をご覧ください。

  2. Vertex AI を NFS 共有をホストする VPC に接続するには、Vertex AI で Private Service Connect インターフェースを使用する(推奨)またはVPC ネットワーク ピアリングの設定の手順に沿って操作します。

カスタム トレーニングの NFS 情報

NFS 共有をマウントするカスタム トレーニング ジョブを作成する場合は、次のものを指定する必要があります。

  • Vertex AI がアクセスするネットワークの名前。ネットワーク名を指定する方法は、カスタム トレーニング ジョブの種類によって異なります。詳細については、カスタム トレーニングを行うをご覧ください。

  • WorkerPoolSpec フィールドの NFS 構成。次のフィールドを含めます。

    フィールド 説明
    nfsMounts.server NFS サーバーの IP アドレス。これは VPC 内のプライベート アドレスである必要があります。
    nfsMounts.path NFS 共有パス。/ で始まる絶対パスを指定する必要があります。
    nfsMounts.mountPoint ローカル マウント ポイント。有効な UNIX ディレクトリ名を指定してください。たとえば、ローカル マウント ポイントが sourceData の場合、トレーニング VM インスタンスからのパス /mnt/nfs/sourceData を指定します。

    詳細については、コンピューティング リソースを指定する場所をご覧ください。

例: gcloud CLI を使用してカスタムジョブを作成する

  1. ビルド済みコンテナ用の Python トレーニング アプリケーションを作成するの手順に沿って、Vertex AI で実行するトレーニング アプリケーションを構築します。

  2. トレーニング ジョブの PSA または Private Service Connect インターフェース構成マウント設定を記述する config.yaml という名前のファイルを作成します。次のいずれかの形式で指定してください。

Private Service Connect インターフェース

  1. Private Service Connect インターフェースを使用するには:

    pscInterfaceConfig:
         network_attachment: NETWORK_ATTACHMENT_NAME
    workerPoolSpecs:
        - machineSpec:
            machineType: MACHINE_TYPE
        replicaCount: 1
        pythonPackageSpec:
           executorImageUri: PYTHON_PACKAGE_EXECUTOR_IMAGE_URI or PRE_BUILT_CONTAINER_IMAGE_URI
           packageUris:
           -  PYTHON_PACKAGE_URIS
           pythonModule: PYTHON_MODULE
        nfsMounts:
          - server: NFS_SERVER_IP
          path: NFS_SHARE_NAME
          mountPoint: LOCAL_FOLDER
    

    次のように置き換えます。

    • NETWORK_ATTACHMENT_NAME: ネットワーク アタッチメントの名前。

    • MACHINE_TYPE: 仮想マシンタイプの ID。

    • PYTHON_PACKAGE_EXECUTOR_IMAGE_URI または PRE_BUILT_CONTAINER_IMAGE_URI: 提供された Python パッケージを実行する Artifact Registry のコンテナ イメージの URI。Vertex AI では、さまざまなユースケースに対応するため、プリインストールされたパッケージを含むさまざまなエグゼキュータ イメージが用意されています。

    • PYTHON_PACKAGE_URIS: トレーニング プログラムとその依存パッケージを構成する Python パッケージ ファイルを指定する Cloud Storage URI のカンマ区切りのリスト。パッケージの URI は最大 100 個。

    • PYTHON_MODULE: パッケージのインストール後に実行される Python モジュール名。

    • NFS_SERVER_IP: NFS サーバーの IP アドレス。

    • NFS_SHARE_NAME: NFS 共有パス。/ で始まる絶対パスです。

    • LOCAL_FOLDER: ローカル マウント ポイント(UNIX ディレクトリ名)。

    ネットワーク名が正しくフォーマットされ、指定したネットワークに NFS 共有が存在することを確認します。

  2. カスタムジョブを作成し、config.yaml ファイルを --config パラメータに渡します。

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --config=config.yaml
    

    次のように置き換えます。

    • LOCATION: ジョブを作成するリージョンを指定します。

    • JOB_NAME: カスタムジョブの名前。

VPC ピアリング

  1. VPC ピアリングを使用するかどうか。ジョブで VPC ピアリング/PSA を使用するかどうか。

    network: projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
    workerPoolSpecs:
        - machineSpec:
            machineType: MACHINE_TYPE
          replicaCount: 1
          pythonPackageSpec:
            executorImageUri: PYTHON_PACKAGE_EXECUTOR_IMAGE_URI or 
                  PRE_BUILT_CONTAINER_IMAGE_URI
            packageUris:
              -  PYTHON_PACKAGE_URIS
            pythonModule: PYTHON_MODULE
          nfsMounts:
            - server: NFS_SERVER_IP
              path: NFS_SHARE_NAME
              mountPoint: LOCAL_FOLDER
    

    次のように置き換えます。

    • PROJECT_NUMBER: Google Cloud プロジェクトのプロジェクト ID。

    • NETWORK_NAME: プライベート VPC または共有 VPC の名前。

    • MACHINE_TYPE: 仮想マシンタイプの ID。

    • PYTHON_PACKAGE_EXECUTOR_IMAGE_URI or PRE_BUILT_CONTAINER_IMAGE_URI: 提供された Python パッケージを実行する Artifact Registry のコンテナ イメージの URI。Vertex AI では、さまざまなユースケースに対応するため、プリインストールされたパッケージを含むさまざまなエグゼキュータ イメージが用意されています。

    • PYTHON_PACKAGE_URIS: トレーニング プログラムとその依存パッケージを構成する Python パッケージ ファイルを指定する Cloud Storage URI のカンマ区切りのリスト。パッケージの URI は最大 100 個。

    • PYTHON_MODULE: パッケージのインストール後に実行される Python モジュール名。

    • NFS_SERVER_IP: NFS サーバーの IP アドレス。

    • NFS_SHARE_NAME: NFS 共有パス。/ で始まる絶対パスです。

    • LOCAL_FOLDER: ローカル マウント ポイント(UNIX ディレクトリ名)。

    ネットワーク名が正しくフォーマットされ、指定したネットワークに NFS 共有が存在することを確認します。

  2. カスタムジョブを作成し、config.yaml ファイルを --config パラメータに渡します。

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --config=config.yaml
    

次のように置き換えます。

  • LOCATION: ジョブを作成するリージョンを指定します。

  • JOB_NAME: カスタムジョブの名前。

制限事項

  • VPC 内部の IP アドレスを使用して NFS 共有をマウントする必要があります。公開 URL の使用は許可されていません。

  • トレーニング ジョブは、認証なしで NFS 共有をマウントします。ユーザー名とパスワードが必要な場合、NFS 共有は失敗します。

    データを保護するには、NFS 共有の権限を設定します。Filestore を使用している場合は、Filestore ドキュメントのアクセス制御をご覧ください。

  • 異なる VPC ネットワークから NFS 共有を同時にマウントする 2 つのトレーニング ジョブを実行することはできません。これは、ネットワーク ピアリングに関する制限によるものです。