Usar uma AMI de workload de GPU - AWS Batch

Usar uma AMI de workload de GPU

Para executar cargas de trabalho de GPU em seus recursos de computação do AWS Batch, você deve usar uma AMI com suporte para GPU. Para obter mais informações, consulte Como trabalhar com GPUs no Amazon ECS e AMIs otimizadas para Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service.

Em ambientes de computação gerenciados, se o ambiente de computação epecificar qualquer família de instância ou tipo de instância p2, p3, p4, p5, g3, g3s, g4 ou g5, o AWS Batch o usa uma AMI otimizada para GPU do Amazon ECS.

Em ambientes de computação não gerenciados, é recomendada uma AMI otimizada para GPU do Amazon ECS. Você pode usar as operações AWS Command Line Interface ou AWS Systems Manager Parameter Store GetParameter, GetParameters, e GetParametersByPath para recuperar os metadados para as AMIs otimizadas para GPU do Amazon ECS recomendadas.

nota

A família de p5 instância só é compatível com versões iguais ou posteriores à AMI otimizada para GPU 20230912 do Amazon ECS, e elas são incompatíveis com os tipos de instância p2 e g2. Se você precisar usar instâncias p5, certifique-se de que seu ambiente de computação não contenha instâncias p2 ou g2 e use o Batch AMI padrão mais recente. A criação de um novo ambiente de computação usará a AMI mais recente, mas se você estiver atualizando seu ambiente de computação para incluir p5, você pode garantir que está usando a AMI mais recente configurando o updateToLatestImageVersion como true nas propriedades ComputeResource. Para obter mais informações sobre a compatibilidade do AMI com instâncias de GPU, consulte Como trabalhar com GPUs no Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service.

Os exemplos a seguir mostram como usar o comando GetParameter.

AWS CLI
$ aws ssm get-parameter --name /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended \ --region us-east-2 --output json

A saída inclui as informações de AMI no parâmetro Value.

{
    "Parameter": {
        "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended",
        "LastModifiedDate": 1555434128.664,
        "Value": "{\"schema_version\":1,\"image_name\":\"amzn2-ami-ecs-gpu-hvm-2.0.20190402-x86_64-ebs\",\"image_id\":\"ami-083c800fe4211192f\",\"os\":\"Amazon Linux 2\",\"ecs_runtime_version\":\"Docker version 18.06.1-ce\",\"ecs_agent_version\":\"1.27.0\"}",
        "Version": 9,
        "Type": "String",
        "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended"
    }
}
Python
from __future__ import print_function import json import boto3 ssm = boto3.client('ssm', 'us-east-2') response = ssm.get_parameter(Name='/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended') jsonVal = json.loads(response['Parameter']['Value']) print("image_id = " + jsonVal['image_id']) print("image_name = " + jsonVal['image_name'])

A saída inclui apenas o ID da AMI e nome da AMI:

image_id   = ami-083c800fe4211192f
image_name = amzn2-ami-ecs-gpu-hvm-2.0.20190402-x86_64-ebs

Os exemplos a seguir demonstram o uso de GetParameters.

AWS CLI
$ aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name \ /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id \ --region us-east-2 --output json

A saída inclui os metadados completos para cada um dos parâmetros:

{
    "InvalidParameters": [],
    "Parameters": [
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id",
            "LastModifiedDate": 1555434128.749,
            "Value": "ami-083c800fe4211192f",
            "Version": 9,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id"
        },
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name",
            "LastModifiedDate": 1555434128.712,
            "Value": "amzn2-ami-ecs-gpu-hvm-2.0.20190402-x86_64-ebs",
            "Version": 9,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name"
        }
    ]
}
Python
from __future__ import print_function import boto3 ssm = boto3.client('ssm', 'us-east-2') response = ssm.get_parameters( Names=['/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name', '/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id']) for parameter in response['Parameters']: print(parameter['Name'] + " = " + parameter['Value'])

A saída inclui o ID da AMI e nome da AMI, usando o caminho completo para os nomes.

/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id = ami-083c800fe4211192f
/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name = amzn2-ami-ecs-gpu-hvm-2.0.20190402-x86_64-ebs

Os exemplos a seguir mostram como usar o comando GetParametersByPath.

AWS CLI
$ aws ssm get-parameters-by-path --path /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended \ --region us-east-2 --output json

A saída inclui todos os metadados completos para todos os parâmetros no caminho especificado.

{
    "Parameters": [
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/ecs_agent_version",
            "LastModifiedDate": 1555434128.801,
            "Value": "1.27.0",
            "Version": 8,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/ecs_agent_version"
        },
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/ecs_runtime_version",
            "LastModifiedDate": 1548368308.213,
            "Value": "Docker version 18.06.1-ce",
            "Version": 1,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/ecs_runtime_version"
        },
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id",
            "LastModifiedDate": 1555434128.749,
            "Value": "ami-083c800fe4211192f",
            "Version": 9,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id"
        },
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name",
            "LastModifiedDate": 1555434128.712,
            "Value": "amzn2-ami-ecs-gpu-hvm-2.0.20190402-x86_64-ebs",
            "Version": 9,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name"
        },
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/os",
            "LastModifiedDate": 1548368308.143,
            "Value": "Amazon Linux 2",
            "Version": 1,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/os"
        },
        {
            "Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/schema_version",
            "LastModifiedDate": 1548368307.914,
            "Value": "1",
            "Version": 1,
            "Type": "String",
            "ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/schema_version"
        }
    ]
}
Python
from __future__ import print_function import boto3 ssm = boto3.client('ssm', 'us-east-2') response = ssm.get_parameters_by_path(Path='/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended') for parameter in response['Parameters']: print(parameter['Name'] + " = " + parameter['Value'])

A saída inclui os valores de todos os nomes de parâmetro no caminho especificado, usando o caminho completo para os nomes.

/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/ecs_agent_version = 1.27.0
/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/ecs_runtime_version = Docker version 18.06.1-ce
/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_id = ami-083c800fe4211192f
/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/image_name = amzn2-ami-ecs-gpu-hvm-2.0.20190402-x86_64-ebs
/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/os = Amazon Linux 2
/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended/schema_version = 1

Para obter mais informações, consulte Recuperar os metadados da AMI otimizada para Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service.