

# Amazon ECS 向け GPU コンテナインスタンスの起動
<a name="gpu-launch"></a>

Amazon EC2 上で Amazon ECS の GPU インスタンスを使用するには、起動テンプレートとユーザーデータファイルを作成し、インスタンスを起動する必要があります。

これにより、GPU 用に設定されたタスク定義を使用するタスクを実行できます。

## 起動テンプレートを使用する
<a name="gpu-launch-template"></a>

起動テンプレートを作成します。
+ Amazon ECS に最適化された AMI 用の GPU AMI ID を使用する起動テンプレートを作成してください。起動テンプレートの作成方法について、詳しくは「*Amazon EC2 ユーザーガイド*」の「[Create a new launch template using parameters you define](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#create-launch-template-define-parameters)」を参照してください。

  **[Amazon マシンイメージ]** には、前のステップの AMI ID を使用します。Systems Manager パラメータで AMI ID を指定する方法については、「*Amazon EC2 ユーザーガイド*」の「[Specify a Systems Manager parameter in a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id)」を参照してください。

  起動テンプレートの **[ユーザーデータ]** に以下を追加します。{{cluster-name}} をクラスターの名前に置き換えます。

  ```
  #!/bin/bash
  echo ECS_CLUSTER={{cluster-name}} >> /etc/ecs/ecs.config;
  echo ECS_ENABLE_GPU_SUPPORT=true >> /etc/ecs/ecs.config
  ```

## AWS CLI の使用
<a name="gpu-launch-cli"></a>

AWS CLI を使用して、コンテナインスタンスを起動できます。

1. `userdata.toml` というファイルを作成します。このファイルは、インスタンスのユーザーデータに使用されます。{{cluster-name}} をクラスターの名前に置き換えます。

   ```
   #!/bin/bash
   echo ECS_CLUSTER={{cluster-name}} >> /etc/ecs/ecs.config;
   echo ECS_ENABLE_GPU_SUPPORT=true >> /etc/ecs/ecs.config
   ```

1. 次のコマンドを実行して、GPU AMI ID を取得します。これは次のステップで使用します。

   ```
   aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region {{us-east-1}}
   ```

1. 次のコマンドを実行して、GPU インスタンスを起動します。次のパラメータを必ず置き換えてください。
   + {{subnet}} を、インスタンスを起動するプライベートまたはパブリックサブネットの ID に置き換えます。
   + {{gpu\_ami}} を、前のステップの AMI ID に置き換えます。
   + {{t3.large}} を、使用するインスタンスタイプに置き換えます。
   + {{region}} を、リージョンコードに置き換えます。

   ```
   aws ec2 run-instances --key-name ecs-gpu-example \
      --subnet-id {{subnet}} \
      --image-id {{gpu_ami}} \
      --instance-type {{t3.large}} \
      --region {{region}} \
      --tag-specifications 'ResourceType=instance,Tags=[{Key=GPU,Value=example}]' \
      --user-data file://userdata.toml \
      --iam-instance-profile Name=ecsInstanceRole
   ```

1. 次のコマンドを実行して、コンテナインスタンスがクラスターに登録されていることを検証します。このコマンドを実行するときは、次のパラメータを必ず置き換えてください。
   + {{cluster}} を、自分のクラスター名に置き換えます。
   + {{region}} を、リージョンコードに置き換えます。

   ```
   aws ecs list-container-instances --cluster {{cluster-name}} --region {{region}}
   ```