このドキュメントでは、ジョブの作成時に Compute Engine VM インスタンス テンプレートを指定して、Batch ジョブの VM リソースを定義する方法について説明します。
ジョブを実行する VM リソースのタイプは、次のいずれかの方法で定義しない限り、Batch によって自動的に定義されます。
- instances[].policyフィールドを使用して、ジョブの VM リソースを直接定義する。この方法は、ほとんどの Batch ドキュメントで説明されています。
- instances[].instanceTemplateフィールドを使用して、テンプレートでジョブの VM リソースを定義する。これは、このドキュメントで説明するメソッドです。- Batch でジョブ フィールドが提供されていない VM オプションを指定するには、テンプレートを使用する必要があります。テンプレートの使用は、複数のジョブに同じ VM リソースを指定する場合にも便利です。 
始める前に
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
- インスタンス テンプレートを作成するか、既存のインスタンス テンプレートを特定する。
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。 - 
  
  
    
      プロジェクトに対する Batch ジョブ編集者 (roles/batch.jobsEditor)
- 
  
  
    
      ジョブのサービス アカウントのサービス アカウント ユーザー (roles/iam.serviceAccountUser)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
- 
            Compute Engine VM インスタンス テンプレートからジョブを作成する: VM インスタンス テンプレートに対する Compute 閲覧者 (roles/compute.viewer)
 ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。 
- 
  
  
    
      プロジェクトに対する Batch ジョブ編集者 (
Compute Engine VM インスタンス テンプレートを使用してジョブを作成する
このセクションでは、既存の VM インスタンス テンプレートから基本スクリプト ジョブを作成する方法の例を示します。ジョブは、gcloud CLI、Batch API、Go、Java、Node.js、Python、C++ を使用して、VM インスタンス テンプレートから作成できます。
gcloud
gcloud CLI を使用して VM インスタンス テンプレートからジョブを作成するには、gcloud batch jobs submit コマンドを使用して、ジョブの JSON 構成ファイルで VM インスタンス テンプレートを指定します。
たとえば、VM インスタンス テンプレートから基本スクリプト ジョブを作成するには、次のようにします。
- hello-world-instance-template.jsonという名前の現在のディレクトリに、次の内容の JSON ファイルを作成します。- { "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }- 以下を置き換えます。 - INSTALL_GPU_DRIVERS: 省略可。- trueに設定すると、Batch は Compute Engine VM インスタンス テンプレートで指定した GPU タイプに必要なドライバをフェッチし、Batch がユーザーに代わってインストールします。詳しくは、GPU を使用するジョブを作成するをご覧ください。
- INSTANCE_TEMPLATE_NAME: 既存の Compute Engine VM インスタンス テンプレートの名前。インスタンス テンプレートを作成して、一覧表示する方法を確認します。
 
- 次のコマンドを実行します。 - gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
Batch API を使用して基本ジョブを作成するには、jobs.create メソッドを使用して、allocationPolicy フィールドで VM インスタンス テンプレートを指定します。
たとえば、VM インスタンス テンプレートから基本スクリプト ジョブを作成するには、次のリクエストを使用します。
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
    "taskGroups": [
        {
            "taskSpec": {
                "runnables": [
                    {
                        "script": {
                            "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
                        }
                    }
                ],
                "computeResource": {
                    "cpuMilli": 2000,
                    "memoryMib": 16
                },
                "maxRetryCount": 2,
                "maxRunDuration": "3600s"
            },
            "taskCount": 4,
            "parallelism": 2
        }
    ],
    "allocationPolicy": {
        "instances": [
            {
                "installGpuDrivers": INSTALL_GPU_DRIVERS,
                "instanceTemplate": "INSTANCE_TEMPLATE_NAME"
            }
        ]
    },
    "labels": {
        "department": "finance",
        "env": "testing"
    },
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}
以下を置き換えます。
- PROJECT_ID: プロジェクトのプロジェクト ID
- INSTALL_GPU_DRIVERS: 省略可。- trueに設定すると、Batch は Compute Engine VM インスタンス テンプレートで指定した GPU タイプに必要なドライバをフェッチし、Batch がユーザーに代わってインストールします。詳しくは、GPU を使用するジョブを作成するをご覧ください。
- INSTANCE_TEMPLATE_NAME: 既存の Compute Engine VM インスタンス テンプレートの名前。インスタンス テンプレートを作成および一覧表示する方法を確認します。
Go
Go
詳細については、Batch Go API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Java
詳細については、Batch Java API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Node.js
詳細については、Batch Node.js API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Python
詳細については、Batch Python API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C++
C++
詳細については、Batch C++ API のリファレンス ドキュメントをご覧ください。
Batch への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
次のステップ
- ジョブの作成または実行で問題が発生した場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。