

# 启动适用于 Amazon ECS 的 GPU 容器实例
<a name="gpu-launch"></a>

要在 Amazon EC2 上的 Amazon ECS 上使用 GPU 实例，您需要创建启动模板、用户数据文件，然后启动实例。

然后，您可以运行使用为 GPU 配置的任务定义的任务。

## 使用启动模板
<a name="gpu-launch-template"></a>

您可以创建启动模板。
+ 创建将经 Amazon ECS 优化的 GPU AMI ID 用于 AMI 的启动模板。有关如何创建启动模板的信息，请参阅《Amazon EC2 用户指南》中的[使用您定义的参数创建新启动模板](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#create-launch-template-define-parameters)**。

  将上一步中的 AMI ID 用于**亚马逊机器映像**。有关如何使用 Systems Manager 参数指定 AMI ID 的信息，请参阅《Amazon EC2 用户指南》中的[在启动模板中指定 Systems Manager 参数](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。您将在以下步骤中使用此 ID。

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

1. 运行以下命令来启动 GPU 实例。请记得替换以下参数：
   + 用您的实例将在其中启动的私有或公有子网的 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}}
   ```