AWS Batch
ユーザーガイド

GPU ワークロードの AMI の作成

AWS Batch のコンピューティングリソースで GPU ワークロードを実行するには、基本 AMI として Deep Learning AMI (Amazon Linux) から開始し、これで AWS Batch のジョブを実行できるように設定できます。

この深層学習 AMI は Amazon Linux に基づいているため、ユーザーは ecs-init パッケージをインストールし、これをコンピューティングリソースの AMI として互換させることができます。nvidia-docker2 RPM は、AWS Batch ジョブの Docker コンテナに必要なコンポーネントをインストールし、サポートされているインスタンスタイプの GPU にアクセスできるようにします。

AWS Batch の Deep Learning AMI を設定するには

  1. AWS Batch がサポートするリージョンで Deep Learning AMI (Amazon Linux) を使用して GPU インスタンスタイプ (P3 など) を起動します。

  2. SSH を使って インスタンスに接続します。詳細については、「SSH を使用した Linux インスタンスへの接続」 (Linux インスタンス用 Amazon EC2 ユーザーガイド) を参照してください。

  3. 任意のテキストエディタを使用して、configure-gpu.sh というファイルを以下の内容で作成します。

    #!/bin/bash # Install ecs-init, start docker, and install nvidia-docker 2 sudo yum install -y ecs-init sudo service docker start DOCKER_VERSION=$(docker -v | awk '{ print $3 }' | cut -f1 -d"-") DISTRIBUTION=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$DISTRIBUTION/nvidia-docker.repo | \ sudo tee /etc/yum.repos.d/nvidia-docker.repo PACKAGES=$(sudo yum search -y --showduplicates nvidia-docker2 nvidia-container-runtime | grep $DOCKER_VERSION | awk '{ print $1 }') sudo yum install -y $PACKAGES sudo pkill -SIGHUP dockerd # Run test container to verify installation sudo docker run --privileged --runtime=nvidia --rm nvidia/cuda nvidia-smi # Update Docker daemon.json to user nvidia-container-runtime by default sudo tee /etc/docker/daemon.json <<EOF { "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } }, "default-runtime": "nvidia" } EOF sudo service docker restart
  4. スクリプトを実行します。

    bash ./configure-gpu.sh
  5. 次のコマンドを使用し、Docker コンテナを実行してインストールされているドライバーにアクセスできることを確認します。

    sudo docker run nvidia/cuda:latest nvidia-smi

    次のような出力が表示されます。

    +-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.111 Driver Version: 384.111 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:1E.0 Off | 0 | | N/A 32C P0 20W / 300W | 0MiB / 16152MiB | 1% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
  6. インスタンスからすべての Docker コンテナとイメージを削除し、AMI のサイズを減らします。

    1. コンテナを削除します。

      sudo docker rm $(sudo docker ps -aq)
    2. イメージを削除します。

      sudo docker rmi $(sudo docker images -q)
  7. Amazon ECS コンテナエージェントをインスタンスで開始する場合は、AMI を作成する前にインスタンスを停止して永続的なデータチェックポイントを削除する必要があります。これを行わないと、インスタンスは AMI から起動するインスタンスを開始しません。

    1. Amazon ECS コンテナエージェントを停止します。

      sudo stop ecs
    2. 永続的なデータチェックポイントファイルを削除します。デフォルトでは、このファイルは /var/lib/ecs/data/ecs_agent_data.json にあります。ファイルを削除するには、次のコマンドを使用します。

      sudo rm -rf /var/lib/ecs/data/ecs_agent_data.json
  8. 実行中のインスタンスから新しい AMI を作成します。詳細については、「Amazon EBS-Backed Linux AMI の作成」 (Linux インスタンス用 Amazon EC2 ユーザーガイド) を参照してください。

AWS Batch で新しい AMI を使用するには

  1. AMI 作成プロセスが完了したら、新しい AMI でコンピューティング環境を作成します ([Enable user-specified AMI ID (ユーザー指定の AMI ID を有効にします)] を選択し、ステップ 7 でカスタム AMI ID を指定してください)。詳細については、「コンピューティング環境の作成」を参照してください。

  2. ジョブキューを作成し、新しいコンピューティング環境を関連付けます。詳細については、「ジョブキューの作成」を参照してください。

  3. (オプション) 新しいジョブキューにサンプルジョブを送信して、GPU の機能をテストします。詳細については、「GPU 機能のテスト」、「ジョブ定義の作成」、および「ジョブの送信」を参照してください。