

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Práticas recomendadas
<a name="best-practices"></a>

Os tópicos a seguir fornecem orientação sobre as melhores práticas para a implantação de modelos de aprendizado de máquina na Amazon SageMaker AI.

**Topics**
+ [Melhores práticas para implantar modelos em serviços de hospedagem de SageMaker IA](deployment-best-practices.md)
+ [Práticas recomendadas de segurança do monitor](monitor-sec-best-practices.md)
+ [Inferência em tempo real de baixa latência com AWS PrivateLink](realtime-endpoints-privatelink.md)
+ [Migre a carga de trabalho de inferência do x86 para o Graviton AWS](realtime-endpoints-graviton.md)
+ [Solucione problemas de implantações do modelo Amazon SageMaker AI](deploy-model-troubleshoot.md)
+ [Práticas recomendadas de otimização de custos de inferência](inference-cost-optimization.md)
+ [Práticas recomendadas para minimizar as interrupções durante as atualizações do driver da GPU](inference-gpu-drivers.md)
+ [Melhores práticas para segurança e saúde de terminais com a Amazon AI SageMaker](best-practice-endpoint-security.md)
+ [Atualizar de contêineres de inferência para conformidade com o NVIDIA Container Toolkit](container-nvidia-compliance.md)

# Melhores práticas para implantar modelos em serviços de hospedagem de SageMaker IA
<a name="deployment-best-practices"></a>

Ao hospedar modelos usando serviços de hospedagem de SageMaker IA, considere o seguinte:
+ Normalmente, um aplicativo cliente envia solicitações ao endpoint HTTPS da SageMaker AI para obter inferências de um modelo implantado. Você também pode enviar solicitações para esse endpoint pelo caderno Jupyter durante o teste.
+ Você pode implantar um modelo treinado com SageMaker IA em seu próprio destino de implantação. Para fazer isso, você precisa saber o formato específico de algoritmo dos artefatos de modelo gerados pelo treinamento de modelo. Para obter mais informações sobre formatos de saída, consulte a seção correspondente ao algoritmo usado em [Formatos de dados comuns para treinamento](cdf-training.md). 
+ Você pode implantar várias variantes de um modelo no mesmo endpoint HTTPS de SageMaker IA. Isso é útil para testar variações de um modelo em produção. Por exemplo, imagine que você colocou um modelo em produção. Você deseja testar uma variação do modelo direcionando uma pequena quantidade de tráfego, digamos 5%, para o novo modelo. Para fazer isso, crie uma configuração de endpoint que descreva as duas variantes do modelo. Especifique a `ProductionVariant` da solicitação na API `CreateEndPointConfig`. Para obter mais informações, consulte [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). 
+ Você pode configurar um `ProductionVariant` para usar a aplicação Auto Scaling. Para obter mais informações sobre a configuração do ajuste de escala automático, consulte [Escalabilidade automática dos modelos de SageMaker IA da Amazon](endpoint-auto-scaling.md).
+ É possível modificar um endpoint sem parar os modelos que já foram colocados em produção. Por exemplo, é possível adicionar novas variantes de modelo, atualizar as configurações de instância de cálculo de ML das variantes existentes ou alterar a distribuição de tráfego entre as variantes. Para modificar um endpoint, você fornece uma nova configuração de endpoint. SageMaker A IA implementa as mudanças sem nenhum tempo de inatividade. Para ter mais informações, consulte [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) e [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html). 
+ Alterar ou excluir artefatos de modelo ou alterar o código de inferência após a implantação de um modelo produz resultados imprevisíveis. Se você precisar alterar ou excluir os artefatos de modelo ou alterar o código de inferência, modifique o endpoint fornecendo uma nova configuração de endpoint. Assim que você fornecer a nova configuração de endpoint, poderá alterar ou excluir os artefatos de modelo correspondentes à configuração de endpoint antiga.
+ Se você quiser obter inferências em conjuntos de dados inteiros, considere usar a conversão em lote como alternativa aos serviços de hospedagem. Para saber mais, consulte [Transformação em lote para inferência com a Amazon AI SageMaker](batch-transform.md) 

## Implantar várias instâncias em zonas de disponibilidade
<a name="deployment-best-practices-availability-zones"></a>

**Crie endpoints robustos ao hospedar seu modelo.** SageMaker Os endpoints de IA podem ajudar a proteger seu aplicativo contra interrupções [na zona de disponibilidade](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) e falhas de instância. Se ocorrer uma interrupção ou uma instância falhar, a SageMaker IA tentará distribuir automaticamente suas instâncias entre as zonas de disponibilidade. Por esse motivo, recomendamos que você implante várias instâncias para cada endpoint de produção. 

Se você estiver usando uma [nuvem privada virtual (VPC) da Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html), configure a VPC com pelo menos duas [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html#SageMaker-Type-VpcConfig-Subnets                     .html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html#SageMaker-Type-VpcConfig-Subnets                     .html), cada uma em uma zona de disponibilidade diferente. Se ocorrer uma interrupção ou uma instância falhar, a Amazon SageMaker AI tentará distribuir automaticamente suas instâncias entre as zonas de disponibilidade. 

Em geral, para obter um desempenho mais confiável, use [Tipos de instâncias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) menores em diferentes Zonas de disponibilidade para hospedar seus endpoints.

**Implante componentes de inferência para alta disponibilidade.** Além da recomendação acima para números de instância, para obter 99,95% de disponibilidade, certifique-se de que os componentes de inferência estejam configurados para ter mais de duas cópias. Além disso, na política gerenciada de ajuste de escala automático, defina também o número mínimo de instâncias como duas.

# Práticas recomendadas de segurança do monitor
<a name="monitor-sec-best-practices"></a>

Monitore seu uso da SageMaker IA no que se refere às melhores práticas de segurança usando o [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html). O CSPM do Security Hub usa controles de segurança para avaliar configurações de recursos e padrões de segurança que ajudam você a atender a vários frameworks de conformidade. Para obter mais informações sobre o uso do CSPM do Security Hub para avaliar os recursos de SageMaker IA, consulte os [controles de SageMaker IA da Amazon](https://docs.aws.amazon.com/securityhub/latest/userguide/sagemaker-controls.html) no Guia do usuário do *CSPM do AWS Security Hub*.

# Inferência em tempo real de baixa latência com AWS PrivateLink
<a name="realtime-endpoints-privatelink"></a>

 A Amazon SageMaker AI fornece baixa latência para inferências em tempo real, mantendo alta disponibilidade e resiliência usando a implantação Multi-AZ. A latência da aplicação é composta por dois componentes primários: latência de infraestrutura ou sobrecarga e latência de inferência do modelo. A redução da latência de sobrecarga abre novas possibilidades, como a implantação de modelos mais complexos, profundos e precisos ou a divisão de aplicações monolíticos em módulos de microsserviços escaláveis e de fácil manutenção. Você pode reduzir a latência para inferências em tempo real com SageMaker IA usando uma AWS PrivateLink implantação. Com AWS PrivateLink, você pode acessar de forma privada todas as operações de SageMaker API da sua Virtual Private Cloud (VPC) de forma escalável usando endpoints de VPC de interface. Uma interface VPC endpoint é uma interface de rede elástica em sua sub-rede com endereços IP privados que serve como ponto de entrada para todas as chamadas de API. SageMaker 

Por padrão, um endpoint de SageMaker IA com 2 ou mais instâncias é implantado em pelo menos 2 zonas de AWS disponibilidade (AZs) e instâncias em qualquer AZ podem processar invocações. Isso resulta em um ou mais “saltos” de AZ que contribuem para a latência de sobrecarga. Uma implantação AWS PrivateLink com a opção `privateDNSEnabled` definida como `true` alivia isso ao atingir dois objetivos:
+ Ele mantém todo o tráfego de inferência em sua VPC.
+ Ele mantém o tráfego de invocação na mesma AZ do cliente que o originou ao usar o Runtime. SageMaker Isso evita os “saltos” entre a AZs redução da latência de sobrecarga.

As seções a seguir deste guia demonstram como você pode reduzir a latência para inferências em tempo real com AWS PrivateLink a implantação.

**Topics**
+ [Implantar AWS PrivateLink](#deploy-privatelink)
+ [Implemente um endpoint de SageMaker IA em uma VPC](#deploy-sagemaker-inference-endpoint)
+ [Invoque o endpoint de SageMaker IA](#invoke-sagemaker-inference-endpoint)

## Implantar AWS PrivateLink
<a name="deploy-privatelink"></a>

Para implantar AWS PrivateLink, primeiro crie um endpoint de interface para a VPC a partir do qual você se conecta aos SageMaker endpoints de IA. Siga as etapas em [Acessar um AWS serviço usando um endpoint VPC de interface para criar o endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) de interface. Ao criar o endpoint, selecione as seguintes configurações na interface do console:
+ Marque a caixa de seleção **Ativar nome DNS** em **Configurações adicionais**
+ Selecione os grupos de segurança apropriados e as sub-redes a serem usadas com os endpoints de SageMaker IA.

Certifique-se também de que a VPC tenha os nomes de host DNS ativados. Para obter mais informações sobre como alterar atributos DNS para sua VPC, consulte [Exibir e atualizar atributos DNS para sua VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating).

## Implemente um endpoint de SageMaker IA em uma VPC
<a name="deploy-sagemaker-inference-endpoint"></a>

Para obter baixa latência de sobrecarga, crie um endpoint de SageMaker IA usando as mesmas sub-redes que você especificou durante a implantação. AWS PrivateLink Essas sub-redes devem corresponder às AZs do seu aplicativo cliente, conforme mostrado no trecho de código a seguir.

```
model_name = '<the-name-of-your-model>'

vpc = 'vpc-0123456789abcdef0'
subnet_a = 'subnet-0123456789abcdef0'
subnet_b = 'subnet-0123456789abcdef1'
security_group = 'sg-0123456789abcdef0'

create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url
    },
    VpcConfig = {
        'SecurityGroupIds': [security_group],
        'Subnets': [subnet_a, subnet_b],
    },
)
```

O trecho de código mencionado acima pressupõe que você tenha seguido as etapas em [Antes de começar](realtime-endpoints-deploy-models.md#deploy-prereqs).

## Invoque o endpoint de SageMaker IA
<a name="invoke-sagemaker-inference-endpoint"></a>

Por fim, especifique o cliente SageMaker Runtime e invoque o endpoint de SageMaker IA conforme mostrado no trecho de código a seguir.

```
endpoint_name = '<endpoint-name>'
  
runtime_client = boto3.client('sagemaker-runtime')
response = runtime_client.invoke_endpoint(EndpointName=endpoint_name, 
                                          ContentType='text/csv', 
                                          Body=payload)
```

Para obter mais informações sobre a configuração de endpoint, consulte [Implantar modelos para inferência em tempo real](realtime-endpoints-deploy-models.md).

# Migre a carga de trabalho de inferência do x86 para o Graviton AWS
<a name="realtime-endpoints-graviton"></a>

 [AWS Graviton](https://aws.amazon.com/ec2/graviton/) é uma série de processadores baseados em ARM projetados por. AWS Eles são mais eficientes em termos de energia do que os processadores baseados em x86 e oferecem uma relação custo-desempenho atrativa. A Amazon SageMaker AI oferece instâncias baseadas em Graviton para que você possa aproveitar esses processadores avançados para atender às suas necessidades de inferência. 

 Você pode migrar suas workloads de inferência existentes de instâncias baseadas em x86 para instâncias baseadas em Graviton, usando imagens de contêiner compatíveis com ARM ou imagens de contêiner multiarquitetura. Este guia pressupõe que você esteja usando imagens de [contêiner do AWS aprendizado profundo ou suas próprias imagens](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) de contêiner compatíveis com ARM. Para obter mais informações sobre como criar suas próprias imagens, consulte [Como criar sua imagem](https://github.com/aws/deep-learning-containers#building-your-image). 

 Em um alto nível, migrar a workload de inferência de instâncias baseadas em x86 para instâncias baseadas em Graviton é um processo de quatro etapas: 

1. Envie imagens de contêineres para o Amazon Elastic Container Registry (Amazon ECR), AWS um registro gerenciado de contêineres.

1. Crie um modelo de SageMaker IA.

1. Crie uma configuração de endpoint.

1. Crie um endpoint do .

 As seções a seguir deste guia fornecem mais detalhes sobre as etapas acima. *user placeholder text*Substitua os exemplos de código pelos seus próprios dados. 

**Topics**
+ [Envie imagens de contêiner no Amazon ECR](#realtime-endpoints-graviton-ecr)
+ [Crie um modelo de SageMaker IA](#realtime-endpoints-graviton-model)
+ [Criar uma configuração de endpoint](#realtime-endpoints-graviton-epc)
+ [Crie um endpoint do](#realtime-endpoints-graviton-ep)

## Envie imagens de contêiner no Amazon ECR
<a name="realtime-endpoints-graviton-ecr"></a>

 Você pode enviar suas imagens de contêiner para o Amazon ECR com o. AWS CLI Ao usar uma imagem compatível com ARM, verifique se ela é compatível com a arquitetura ARM: 

```
docker inspect deep-learning-container-uri
```

 A resposta `"Architecture": "arm64"` indica que a imagem é compatível com a arquitetura ARM. Você pode enviá-lo para o Amazon ECR com o comando `docker push`. Para obter mais informações, consulte [Enviando uma imagem do Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html). 

 As imagens de contêiner de várias arquiteturas são basicamente um conjunto de imagens de contêiner que oferecem apoio a diferentes arquiteturas ou sistemas operacionais, aos quais você pode se referir por um nome de manifesto comum. Se você estiver usando imagens de contêiner multiarquitetura, além de enviar as imagens para o Amazon ECR, você também terá que enviar uma lista de manifesto para o Amazon ECR. Uma lista de manifestos permite a inclusão aninhada de outros manifestos de imagem, em que cada imagem incluída é especificada por arquitetura, sistema operacional e outros atributos da plataforma. O exemplo a seguir cria uma lista de manifestos e a envia para o Amazon ECR. 

1. Crie uma lista de manifesto.

   ```
   docker manifest create aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \
     aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:amd64 \
   	aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:arm64 \
   ```

1.  Anote a lista de manifesto para que ela identifique corretamente qual imagem é para qual arquitetura. 

   ```
   docker manifest annotate --arch arm64 aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \
     aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository:arm64
   ```

1. Envie o manifesto.

   ```
   docker manifest push aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository
   ```

 Para obter mais informações sobre a criação e o envio de listas de manifesto para o Amazon ECR, consulte [Introdução a imagens de contêiner multiarquitetura para o Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/) e [Enviando uma imagem multiarquitetura](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html). 

## Crie um modelo de SageMaker IA
<a name="realtime-endpoints-graviton-model"></a>

 Crie um modelo de SageMaker IA chamando a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API. 

```
import boto3
from sagemaker import get_execution_role


aws_region = "aws-region"
sagemaker_client = boto3.client("sagemaker", region_name=aws_region)

role = get_execution_role()

sagemaker_client.create_model(
    ModelName = "model-name",
    PrimaryContainer = {
        "Image": "deep-learning-container-uri",
        "ModelDataUrl": "model-s3-location",
        "Environment": {
            "SAGEMAKER_PROGRAM": "inference.py",
            "SAGEMAKER_SUBMIT_DIRECTORY": "inference-script-s3-location",
            "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
            "SAGEMAKER_REGION": aws_region,
        }
    },
    ExecutionRoleArn = role
)
```

## Criar uma configuração de endpoint
<a name="realtime-endpoints-graviton-epc"></a>

 Crie uma configuração de endpoint chamando a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html). Para ver uma lista de instâncias baseadas em Graviton, consulte [Instâncias otimizadas para computação](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/compute-optimized-instances.html). 

```
sagemaker_client.create_endpoint_config(
    EndpointConfigName = "endpoint-config-name",
    ProductionVariants = [
        {
            "VariantName": "variant-name",
            "ModelName": "model-name",
            "InitialInstanceCount": 1,
            "InstanceType": "ml.c7g.xlarge", # Graviton-based instance
       }
    ]
)
```

## Crie um endpoint do
<a name="realtime-endpoints-graviton-ep"></a>

 Crie uma configuração de endpoint chamando a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html). 

```
sagemaker_client.create_endpoint(
    EndpointName = "endpoint-name",
    EndpointConfigName = "endpoint-config-name"
)
```

# Solucione problemas de implantações do modelo Amazon SageMaker AI
<a name="deploy-model-troubleshoot"></a>

Se você encontrar algum problema ao implantar modelos de aprendizado de máquina na Amazon SageMaker AI, consulte as orientações a seguir.

**Topics**
+ [Erros de detecção na contagem de CPUs ativas](#deploy-model-troubleshoot-jvms)
+ [Problemas com a implantação de um arquivo model.tar.gz](#deploy-model-troubleshoot-tarballs)
+ [O contêiner primário não passou nas verificações de integridade do ping](#deploy-model-troubleshoot-ping)

## Erros de detecção na contagem de CPUs ativas
<a name="deploy-model-troubleshoot-jvms"></a>

Se você implantar um modelo de SageMaker IA com uma máquina virtual Linux Java (JVM), poderá encontrar erros de detecção que impedem o uso dos recursos de CPU disponíveis. Esse problema afeta alguns JVMs que suportam Java 8 e Java 9, e a maioria que suporta Java 10 e Java 11. Eles JVMs implementam um mecanismo que detecta e manipula a contagem de CPU e a memória máxima disponível ao executar um modelo em um contêiner Docker e, de forma mais geral, nos `taskset` comandos ou grupos de controle do Linux (cgroups). SageMaker As implantações de IA aproveitam algumas das configurações que a JVM usa para gerenciar esses recursos. Atualmente, isso faz com que o contêiner detecte incorretamente o número de disponíveis CPUs. 

SageMaker A IA não limita o acesso CPUs a uma instância. No entanto, a JVM pode detectar a contagem de CPU `1` quando CPUs houver mais disponíveis para o contêiner. Como resultado, a JVM ajusta todas as suas configurações internas para executar como se apenas `1` núcleo de CPU estivesse disponível. Essas configurações afetam a coleta de resíduos, os bloqueios, os threads do compilador e outros recursos internos da JVM que afetam negativamente a simultaneidade, a throughput e a latência do contêiner.

Para ver um exemplo de detecção incorreta, em um contêiner configurado para SageMaker IA que é implantado com uma JVM baseada em Java8\$1191 e que tem quatro disponíveis CPUs na instância, execute o seguinte comando para iniciar sua JVM:

```
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
```

Isso gera a saída a seguir:

```
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
```

Muitos dos JVMs afetados por esse problema têm a opção de desativar esse comportamento e restabelecer o acesso total a todos os CPUs da instância. Desative o comportamento indesejado e estabeleça acesso total a todas as instâncias CPUs incluindo o `-XX:-UseContainerSupport` parâmetro ao iniciar aplicativos Java. Por exemplo, execute o comando `java` para iniciar a JVM da seguinte forma:

```
java -XX:-UseContainerSupport -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
```

Isso gera a saída a seguir:

```
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
```

Verifique se a JVM usada em seu contêiner é compatível com o parâmetro `-XX:-UseContainerSupport`. Se for compatível, sempre passe o parâmetro ao iniciar a JVM. Isso fornece acesso a todos os CPUs em suas instâncias. 

Você também pode encontrar esse problema ao usar indiretamente uma JVM em SageMaker contêineres de IA. Por exemplo, ao usar uma JVM para oferecer compatibilidade com o SparkML Scala. O parâmetro `-XX:-UseContainerSupport` também afeta a saída retornada pela API `Runtime.getRuntime().availableProcessors()` do Java``. 

## Problemas com a implantação de um arquivo model.tar.gz
<a name="deploy-model-troubleshoot-tarballs"></a>

Quando você implanta um modelo usando um arquivo `model.tar.gz`, o tarball do modelo não deve incluir nenhum link simbólico. Os links simbólicos fazem com que a criação do modelo falhe. Além disso, recomendamos que você não inclua arquivos desnecessários no pacote.

## O contêiner primário não passou nas verificações de integridade do ping
<a name="deploy-model-troubleshoot-ping"></a>

 Se seu contêiner primário falhar nas verificações de integridade do ping com a seguinte mensagem de erro, isso indica que há um problema com seu contêiner ou script: 

```
The primary container for production variant beta did not pass the ping health check. Please check CloudWatch Logs logs for this endpoint.
```

 Para solucionar esse problema, você deve verificar os CloudWatch registros de registros do endpoint em questão para ver se há algum erro ou problema que esteja impedindo o contêiner de responder a ou. `/ping` `/invocations` Os logs podem fornecer uma mensagem de erro que pode apontar para o problema. Depois de identificar o erro e o motivo da falha, você deve resolvê-lo. 

 Também é uma boa prática testar a implantação do modelo localmente antes de criar um endpoint. 
+  Use o modo local no SageMaker SDK para imitar o ambiente hospedado implantando o modelo em um endpoint local. Para obter mais informações, consulte [Modo local](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode). 
+  Use os comandos vanilla docker para testar se o contêiner responde a /ping e /invocations. Para obter mais informações, consulte [local\$1test](https://github.com/aws/amazon-sagemaker-examples/tree/main/advanced_functionality/scikit_bring_your_own/container/local_test). 

# Práticas recomendadas de otimização de custos de inferência
<a name="inference-cost-optimization"></a>

O conteúdo a seguir fornece técnicas e considerações para otimizar o custo dos endpoints. Você pode usar essas recomendações para otimizar o custo de endpoints novos e existentes.

## Práticas recomendadas
<a name="inference-cost-optimization-list"></a>

Para otimizar seus custos de inferência de SageMaker IA, siga essas melhores práticas.

### Escolha a melhor opção de inferência para o trabalho.
<a name="collapsible-1"></a>

SageMaker A IA oferece 4 opções de inferência diferentes para fornecer a melhor opção de inferência para o trabalho. Você pode economizar em custos escolhendo a opção de inferência que melhor se adequa à sua workload.
+ Use [inferência em tempo real](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) para workloads de baixa latência com padrões de tráfego previsíveis que precisam ter características de latência consistentes e estar sempre disponíveis. Você paga pelo uso da instância.
+ Use [Inferência Sem Servidor](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html) para workloads síncronas que têm um padrão de tráfego intenso e podem aceitar variações na latência p99. A Inferência Sem Servidor é escalada automaticamente para atender ao seu tráfego de workload, para que você não pague por nenhum recurso ocioso. Você paga apenas pela duração da solicitação de inferência. O mesmo modelo e contêineres podem ser usados com inferência em tempo real e sem servidor, para que você possa alternar entre esses dois modos se suas necessidades mudarem.
+ Use [inferência assíncrona](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference.html) para workloads assíncronas que processam até 1 GB de dados (como corpus de texto, imagem, vídeo e áudio) que são insensíveis à latência e aos custos. Com a inferência assíncrona, você pode controlar os custos especificando um número fixo de instâncias para a taxa de processamento ideal, em vez de provisionar para o pico. Você também pode reduzir para zero para economizar custos adicionais.
+ Use a [inferência em lote](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html) para workloads para as quais você precisa de inferência para um grande conjunto de dados para processos que acontecem offline (ou seja, você não precisa de um endpoint persistente). Você paga pela instância pela duração do trabalho de inferência em lote.

### Opte por um SageMaker AI Savings Plan.
<a name="collapsible-2"></a>
+ Se você tiver um nível de uso consistente em todos os serviços de SageMaker IA, poderá optar por um SageMaker AI Savings Plan para ajudar a reduzir seus custos em até 64%.
+ Os [Amazon SageMaker AI Savings Plans](https://aws.amazon.com/savingsplans/ml-pricing/) fornecem um modelo de preços flexível para o Amazon SageMaker AI, em troca do compromisso com uma quantidade consistente de uso (medida em \$1/hora) por um período de um ou três anos. Esses planos se aplicam automaticamente aos usos de instâncias de SageMaker AI ML elegíveis, incluindo SageMaker Studio Classic Notebook, SageMaker On-Demand Notebook, SageMaker Processing, SageMaker Data Wrangler, SageMaker Training, SageMaker Real-Time Inference e SageMaker Batch Transform, independentemente da família, tamanho ou região da instância. Por exemplo, você pode alterar o uso de uma instância de CPU ml.c5.xlarge em execução no Leste dos EUA (Ohio) para uma instância ML.inf1 no Oeste dos EUA (Oregon) para workloads de inferência a qualquer momento e continuar pagando automaticamente o preço do Savings Plans.

### Otimize seu modelo para executar melhor.
<a name="collapsible-3"></a>
+ Modelos não otimizados podem levar a tempos de execução mais longos e usar mais recursos. Você pode optar por usar mais ou maiores instâncias para melhorar o desempenho; no entanto, isso leva a custos mais altos.
+ Ao otimizar seus modelos para melhorar o desempenho, você poderá reduzir os custos usando instâncias menores ou menores, mantendo as mesmas ou melhores características de desempenho. Você pode usar [SageMaker o Neo](https://aws.amazon.com/sagemaker/neo/) com SageMaker AI Inference para otimizar modelos automaticamente. Para obter mais detalhes e exemplos, consulte [Otimização do desempenho do modelo com o SageMaker Neo](neo.md).

### Use o tipo e o tamanho de instância mais adequados para inferência em tempo real.
<a name="collapsible-4"></a>
+ SageMaker A inferência tem mais de 70 tipos e tamanhos de instância que podem ser usados para implantar modelos de ML, incluindo chipsets AWS Inferentia e Graviton, otimizados para ML. Escolher a instância certa para seu modelo ajuda a garantir que você tenha a instância de melhor desempenho com o menor custo para seus modelos.
+ Ao usar o [Recomendador de inferência](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender.html), você pode comparar rapidamente diferentes instâncias para entender o desempenho do modelo e os custos. Com esses resultados, você pode escolher a instância a ser implantada com o melhor retorno sobre o investimento.

### Melhore a eficiência e os custos combinando vários endpoints em um único endpoint para inferência em tempo real.
<a name="collapsible-5"></a>
+ Os custos podem aumentar rapidamente quando você implanta vários endpoints, especialmente se os endpoints não utilizarem totalmente as instâncias subjacentes. Para entender se a instância está subutilizada, verifique as métricas de utilização (CPU, GPU etc.) na Amazon para suas instâncias. CloudWatch Se você tiver mais de um desses endpoints, poderá combinar os modelos ou contêineres nesses vários endpoints em um único endpoint.
+ Usando [endpoints multimodelo](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) (MME) ou terminais de [vários contêineres](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-container-endpoints.html) (MCE), você pode implantar vários modelos ou contêineres de ML em um único endpoint para compartilhar a instância em vários modelos ou contêineres e melhorar seu retorno sobre o investimento. Para saber mais, consulte [Economize nos custos de inferência usando endpoints multimodelo de SageMaker IA da Amazon ou implante vários contêineres de serviço em uma única instância usando endpoints](https://aws.amazon.com/blogs/machine-learning/save-on-inference-costs-by-using-amazon-sagemaker-multi-model-endpoints/) [de vários contêineres da Amazon SageMaker AI no blog do](https://aws.amazon.com/blogs/machine-learning/deploy-multiple-serving-containers-on-a-single-instance-using-amazon-sagemaker-multi-container-endpoints/) Machine Learning. AWS 

### Configure o ajuste de escala automático para atender aos requisitos de workload para inferência assíncrona e em tempo real.
<a name="collapsible-6"></a>
+ Sem o ajuste de escala automático, você precisa provisionar para picos de tráfego ou para a indisponibilidade do modelo de risco. A menos que o tráfego para seu modelo seja estável ao longo do dia, haverá excesso de capacidade não utilizada. Isso leva à baixa utilização e ao desperdício de recursos.
+ O [escalonamento automático](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html) é um out-of-the-box recurso que monitora suas cargas de trabalho e ajusta dinamicamente a capacidade de manter um desempenho estável e previsível com o menor custo possível. Quando a workload aumenta, o ajuste de escala automático disponibiliza mais instâncias online. Quando a workload diminui, o ajuste de escala automático remove instâncias desnecessárias, ajudando você a reduzir seu custo de computação. Para saber mais, consulte [Configuração de endpoints de inferência de escalonamento automático no Amazon AI no blog SageMaker do](https://aws.amazon.com/blogs/machine-learning/configuring-autoscaling-inference-endpoints-in-amazon-sagemaker/) Machine Learning. AWS 

# Práticas recomendadas para minimizar as interrupções durante as atualizações do driver da GPU
<a name="inference-gpu-drivers"></a>

SageMaker O AI Model Deployment atualiza os drivers de GPU nas instâncias de ML para opções de inferência em tempo real, em lote e assíncrona ao longo do tempo para fornecer aos clientes acesso às melhorias dos fornecedores de drivers. Abaixo, você pode ver a versão da GPU compatível com cada opção de inferência. Diferentes versões de driver podem alterar a forma como seu modelo interage com o. GPUs Abaixo estão algumas estratégias para ajudar você a entender como sua aplicação funciona com diferentes versões de drivers. 

## Versões atuais e famílias de instâncias compatíveis
<a name="inference-gpu-drivers-versions"></a>

O Amazon SageMaker AI Inference é compatível com os seguintes drivers e famílias de instâncias:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/inference-gpu-drivers.html)

## Solucione problemas em seu contêiner de modelo com recursos de GPU
<a name="inference-gpu-drivers-troubleshoot"></a>

Se você encontrar algum problema ao executar sua workload da GPU, consulte as orientações a seguir:

### Falha na detecção da placa GPU ou erro de inicialização da NVIDIA
<a name="collapsible-section-0"></a>

Execute o comando `nvidia-smi` (NVIDIA System Management Interface) de dentro do contêiner do Docker. Se a interface de gerenciamento do sistema NVIDIA detectar um erro de detecção de GPU ou erro de inicialização da NVIDIA, ela retornará a seguinte mensagem de erro:

```
Failed to initialize NVML: Driver/library version mismatch
```

Com base no seu caso de uso, siga estas práticas recomendadas para resolver a falha ou o erro:
+ Siga a recomendação de práticas recomendadas descrita no [Se você trouxer seus próprios contêineres modelo (BYO)](#collapsible-byoc) menu suspenso.
+ Siga a recomendação de práticas recomendadas descrita no [Se você usar uma camada de compatibilidade CUDA](#collapsible-cuda-compat) menu suspenso.

Consulte a [página da interface de gerenciamento do sistema NVIDIA](https://developer.nvidia.com/nvidia-system-management-interface) no site da NVIDIA para obter mais informações.

### `CannotStartContainerError`
<a name="collapsible-section-cannot-start-container"></a>

 Se sua instância de GPU usa versões do driver NVIDIA que não são compatíveis com a versão CUDA no contêiner do Docker, a implantação de um endpoint falhará com a seguinte mensagem de erro: 

```
 Failure reason CannotStartContainerError. Please ensure the model container for variant <variant_name> starts correctly when invoked with 'docker run <image> serve'
```

Com base no seu caso de uso, siga estas práticas recomendadas para resolver a falha ou o erro:
+ Siga a recomendação de práticas recomendadas descrita no [O driver do qual meu contêiner depende é maior que a versão nas instâncias de GPU de ML](#collapsible-driver-dependency-higher) menu suspenso.
+ Siga a recomendação de práticas recomendadas descrita no [Se você usar uma camada de compatibilidade CUDA](#collapsible-cuda-compat) menu suspenso.

## Práticas recomendadas para trabalhar com versões de driver incompatíveis
<a name="inference-gpu-drivers-cuda-toolkit-updates"></a>

Veja a seguir informações sobre como atualizar o driver da GPU:

### O driver do qual meu contêiner depende é inferior à versão na instância da GPU ML
<a name="collapsible-driver-dependency-lower"></a>

Nenhuma ação é necessária. A NVIDIA oferece compatibilidade com versões anteriores.

### O driver do qual meu contêiner depende é maior que a versão nas instâncias de GPU de ML
<a name="collapsible-driver-dependency-higher"></a>

Se for uma pequena diferença de versão, nenhuma ação será necessária. A NVIDIA oferece compatibilidade futura de versões secundárias.

Se houver uma grande diferença de versão, o pacote de compatibilidade CUDA precisará ser instalado. Consulte o [Pacote de compatibilidade CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/index.html) na documentação da NVIDIA.

**Importante**  
O Pacote de compatibilidade CUDA não é compatível com versões anteriores, por isso precisa ser desabilitado se a versão do driver na instância for superior à versão do pacote de compatibilidade CUDA.

### Se você trouxer seus próprios contêineres modelo (BYO)
<a name="collapsible-byoc"></a>

Certifique-se de que nenhum pacote de driver NVIDIA esteja incluído na imagem, o que pode causar conflito com a versão do driver NVIDIA no host.

### Se você usar uma camada de compatibilidade CUDA
<a name="collapsible-cuda-compat"></a>

Para verificar se a versão do driver Nvidia da plataforma é compatível com a versão do Pacote de compatibilidade CUDA instalada no contêiner do modelo, consulte a documentação do [CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/index.html#use-the-right-compat-package). Se a versão do driver Nvidia da plataforma não é compatível comr a versão do Pacote de compatibilidade CUDA, você poderá desativar ou remover esse pacote da imagem do contêiner do modelo. Se a versão das bibliotecas de compatibilidade CUDA for compatível com a versão mais recente do driver da Nvidia, sugerimos que você ative o Pacote de compatibilidade CUDA com base na versão detectada do driver Nvidia para compatibilidade futura adicionando o trecho de código abaixo ao script shell de inicialização do contêiner (no script). `ENTRYPOINT`

O script demonstra como alternar dinamicamente o uso do Pacote de compatibilidade CUDA com base na versão detectada do driver Nvidia no host implantado para o contêiner do seu modelo. Ao SageMaker lançar uma versão mais recente do driver Nvidia, o CUDA Compatibility Package instalado pode ser desligado automaticamente se o aplicativo CUDA for suportado nativamente no novo driver.

```
#!/bin/bash

verlt() {
    [ "$1" = "$2" ] && return 1 || [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
}

if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then
    CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 | cut -d'.' -f 3-)
    echo "CUDA compat package should be installed for NVIDIA driver smaller than ${CUDA_COMPAT_MAX_DRIVER_VERSION}"
    NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true)
    echo "Current installed NVIDIA driver version is ${NVIDIA_DRIVER_VERSION}"
    if verlt $NVIDIA_DRIVER_VERSION $CUDA_COMPAT_MAX_DRIVER_VERSION; then
        echo "Adding CUDA compat to LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
        echo $LD_LIBRARY_PATH
    else
        echo "Skipping CUDA compat setup as newer NVIDIA driver is installed"
    fi
else
    echo "Skipping CUDA compat setup as package not found"
fi
```

# Melhores práticas para segurança e saúde de terminais com a Amazon AI SageMaker
<a name="best-practice-endpoint-security"></a>

Para resolver os problemas de segurança mais recentes, a Amazon SageMaker AI corrige automaticamente os endpoints para o software mais recente e seguro. No entanto, se você modificar incorretamente suas dependências de endpoints, a Amazon SageMaker AI não poderá corrigir automaticamente seus endpoints nem substituir suas instâncias não íntegras. Para garantir que seus endpoints permaneçam qualificados para atualizações automáticas, aplique as seguintes práticas recomendadas:

## Não exclua recursos enquanto seus endpoints os utilizam
<a name="dont-delete-resources-in-use"></a>

Evite excluir qualquer um dos seguintes recursos se você tiver endpoints existentes que os utilizam:
+ A definição do modelo que você cria com a [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)ação na SageMaker API da Amazon.
+ Qualquer artefato de modelo que você especificar para o parâmetro [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-ModelDataUrl](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-ModelDataUrl).
+ A função e as permissões do IAM que você especifica para o parâmetro [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ExecutionRoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ExecutionRoleArn).
**Lembre-se:**  
Na definição do modelo que seu endpoint usa, certifique-se de que o perfil do IAM especificada tenha as permissões corretas. Para obter mais informações sobre as permissões necessárias para endpoints Amazon SageMaker AI, consulte[CreateModel API: Permissões da função de execução](sagemaker-roles.md#sagemaker-roles-createmodel-perms).
+ As imagens de inferência que você especifica para o parâmetro [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-Image](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-Image), se você usar seu próprio código de inferência.
**Lembre-se:**  
Se você usar o recurso de registro privado, certifique-se de que a Amazon SageMaker AI possa acessar o registro privado, desde que você esteja usando o endpoint.
+ As sub-redes e grupos de segurança do Amazon VPC que você especifica para o parâmetro [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-VpcConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-VpcConfig).
+ A configuração do endpoint que você cria com a [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)ação na SageMaker API da Amazon.
+ Qualquer chave KMS ou buckets do Amazon S3 que você especificar na configuração de endpoint.
**Lembre-se:**  
Certifique-se de não desativar essas chaves do KMS.

## Siga estes procedimentos para atualizar seus endpoints
<a name="procedures-to-update-endpoint"></a>

Ao atualizar seus endpoints Amazon SageMaker AI, use qualquer um dos procedimentos a seguir que se aplicam às suas necessidades.

**Para atualizar suas configurações de definição de modelo**

1. Crie uma nova definição de modelo com suas configurações atualizadas usando a CreateModel ação na SageMaker API da Amazon.

1. Crie uma nova configuração de endpoint que use a nova definição do modelo. Para fazer isso, use a CreateEndpointConfig ação na SageMaker API da Amazon.

1. Atualize seu endpoint com a nova configuração de endpoint para que suas configurações de definição de modelo atualizadas entrem em vigor.

1. (Opcional) Exclua a configuração de endpoint antigo se você não a estiver usando com nenhum outro endpoint. Você também pode excluir os recursos especificados na definição do modelo se não os estiver usando com nenhum outro endpoint. Esses recursos incluem artefatos de modelo no Amazon S3 e imagens de inferência.

**Para atualizar a configuração de endpoint**

1. Crie uma nova configuração de endpoint com suas configurações atualizadas.

1. Atualize seu endpoint com a nova configuração para que suas atualizações entrem em vigor.

1. (Opcional) Exclua a configuração de endpoint antigo se você não a estiver usando com nenhum outro endpoint. Você também pode excluir os recursos especificados na definição do modelo se não os estiver usando com nenhum outro endpoint. Esses recursos incluem artefatos de modelo no Amazon S3 e imagens de inferência.

Sempre que criar uma nova definição de modelo ou configuração de endpoint, recomendamos o uso de um nome exclusivo. Se você quiser atualizar esses recursos e reter seus nomes originais, use os procedimentos a seguir.

**Para atualizar as configurações do modelo e reter o nome do modelo original**

1. Exclua a definição do modelo existente. Nesse ponto, qualquer endpoint que usa o modelo está quebrado, mas você corrige isso nas etapas a seguir.

1. Crie a definição do modelo novamente com suas configurações atualizadas e use o mesmo nome do modelo.

1. Crie uma nova configuração de endpoint que use a definição atualizada do modelo.

1. Atualize seu endpoint com a nova configuração de endpoint para que suas atualizações entrem em vigor.

**Para atualizar a configuração do endpoint e reter o nome da configuração original**

1. Exclua a configuração existente do endpoint.

1. Crie uma nova configuração de endpoint com suas configurações atualizadas e use o nome original.

1. Atualize seu endpoint com a nova configuração para que suas atualizações entrem em vigor.

# Atualizar de contêineres de inferência para conformidade com o NVIDIA Container Toolkit
<a name="container-nvidia-compliance"></a>

A partir das versões 1.17.4 e posteriores, o NVIDIA Container Toolkit não monta mais bibliotecas compatíveis com CUDA automaticamente. Essa mudança de comportamento pode afetar suas cargas de trabalho de inferência de SageMaker IA. Seus endpoints de SageMaker IA e trabalhos de transformação em lote podem usar contêineres incompatíveis com as versões mais recentes do NVIDIA Container Toolkit. Para garantir que as workloads atendam aos requisitos mais recentes, talvez seja necessário atualizar os endpoints ou configurar as tarefas de transformação em lote.

## Atualização de endpoints de SageMaker IA para fins de conformidade
<a name="endpoint-compliance"></a>

Recomendamos que você atualize seus endpoints de SageMaker IA existentes ou crie novos que suportem o comportamento padrão mais recente.

Para garantir que seu endpoint seja compatível com as versões mais recentes do NVIDIA Container Toolkit, siga estas etapas:

1. Atualize a forma como você configura as bibliotecas compatíveis com CUDA se você trouxer seu próprio contêiner.

1. Especifique uma imagem de máquina da Amazon (AMI) de inferência compatível com o comportamento mais recente do NVIDIA Container Toolkit. Você especifica uma AMI ao atualizar um endpoint ou ao criar outro.

### Atualizar a configuração de compatibilidade CUDA se você trouxer seu próprio contêiner
<a name="cuda-compatibility"></a>

As bibliotecas compatíveis com CUDA permitem compatibilidade futura. Essa compatibilidade se aplica a qualquer versão do kit de ferramentas CUDA que seja mais recente do que o driver NVIDIA fornecido pela instância de IA. SageMaker 

Você deve ativar as bibliotecas de compatibilidade CUDA somente quando o driver NVIDIA usado pela instância de SageMaker IA tiver uma versão mais antiga do que o kit de ferramentas CUDA no contêiner do modelo. Se o contêiner do modelo não exigir compatibilidade com CUDA, você pode ignorar esta etapa. Por exemplo, você pode pular essa etapa se não planeja usar um kit de ferramentas CUDA mais recente do que os fornecidos pelas instâncias de IA. SageMaker 

Devido às mudanças introduzidas na versão 1.17.4 do NVIDIA Container Toolkit, você pode habilitar explicitamente as bibliotecas compatíveis com CUDA, se necessário, adicionando-as ao `LD_LIBRARY_PATH` no contêiner.

Sugerimos que você habilite a compatibilidade CUDA com base na versão detectada do driver da NVIDIA. Para habilitá-la, adicione o trecho de código abaixo ao script shell de inicialização do contêiner. Adicione esse código ao script `ENTRYPOINT`.

O script demonstra como alternar dinamicamente o uso do pacote de compatibilidade CUDA com base na versão detectada do driver da NVIDIA no host implantado para o contêiner do seu modelo.

```
#!/bin/bash

verlt() {
    [ "$1" = "$2" ] && return 1 || [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
}

if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then
    CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 | cut -d'.' -f 3-)
    echo "CUDA compat package should be installed for NVIDIA driver smaller than ${CUDA_COMPAT_MAX_DRIVER_VERSION}"
    NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true)
    echo "Current installed NVIDIA driver version is ${NVIDIA_DRIVER_VERSION}"
    if verlt $NVIDIA_DRIVER_VERSION $CUDA_COMPAT_MAX_DRIVER_VERSION; then
        echo "Adding CUDA compat to LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
        echo $LD_LIBRARY_PATH
    else
        echo "Skipping CUDA compat setup as newer NVIDIA driver is installed"
    fi
else
    echo "Skipping CUDA compat setup as package not found"
fi
```

### Especificar uma AMI de inferência compatível com o NVIDIA Container Toolkit
<a name="specify-inference-ami"></a>

No `InferenceAmiVersion` parâmetro do tipo de `ProductionVariant` dados, você pode selecionar a AMI para um endpoint de SageMaker IA. Cada uma das imagens suportadas AMIs é pré-configurada. Cada imagem é configurada AWS com um conjunto de versões de software e driver.

Por padrão, a SageMaker IA AMIs segue o comportamento legado. Elas montam automaticamente as bibliotecas compatíveis com CUDA no contêiner. Para que o endpoint use o novo comportamento, especifique uma versão da AMI de inferência que esteja configurada para o novo comportamento.

Atualmente, as versões de AMI de inferência abaixo seguem o novo comportamento. Elas não montam bibliotecas compatíveis com CUDA automaticamente.

al2- ami-sagemaker-inference-gpu -2-1  
+ Versão do driver da NVIDIA: 535.54.03
+ Versão do CUDA: 12.2

al2- ami-sagemaker-inference-gpu -3-1  
+ Versão do driver da NVIDIA: 550.144.01
+ Versão do CUDA: 12.4

### Atualizar um endpoint existente
<a name="update-existing-endpoint"></a>

Use o exemplo a seguir para atualizar um endpoint. O exemplo usa uma versão da AMI de inferência que desabilita a montagem automática de bibliotecas de compatibilidade CUDA.

```
ENDPOINT_NAME="<endpoint name>"
INFERENCE_AMI_VERSION="al2-ami-sagemaker-inference-gpu-3-1"

# Obtaining current endpoint configuration
CURRENT_ENDPOINT_CFG_NAME=$(aws sagemaker describe-endpoint --endpoint-name "$ENDPOINT_NAME" --query "EndpointConfigName" --output text)
NEW_ENDPOINT_CFG_NAME="${CURRENT_ENDPOINT_CFG_NAME}new"

# Copying Endpoint Configuration with AMI version specified
aws sagemaker describe-endpoint-config \
    --endpoint-config-name ${CURRENT_ENDPOINT_CFG_NAME} \
    --output json | \
jq "del(.EndpointConfigArn, .CreationTime) | . + {
    EndpointConfigName: \"${NEW_ENDPOINT_CFG_NAME}\",
    ProductionVariants: (.ProductionVariants | map(.InferenceAmiVersion = \"${INFERENCE_AMI_VERSION}\"))
}" > /tmp/new_endpoint_config.json

# Make sure all fields in the new endpoint config look as expected
cat /tmp/new_endpoint_config.json

# Creating new endpoint config
aws sagemaker create-endpoint-config \
   --cli-input-json file:///tmp/new_endpoint_config.json
    
# Updating the endpoint
aws sagemaker update-endpoint \
    --endpoint-name "$ENDPOINT_NAME" \
    --endpoint-config-name "$NEW_ENDPOINT_CFG_NAME" \
    --retain-all-variant-properties
```

### Criar um endpoint
<a name="create-new-endpoint"></a>

Use o seguinte exemplo para criar um endpoint. O exemplo usa uma versão da AMI de inferência que desabilita a montagem automática de bibliotecas de compatibilidade CUDA.

```
INFERENCE_AMI_VERSION="al2-ami-sagemaker-inference-gpu-3-1"

aws sagemakercreate-endpoint-config \
 --endpoint-config-name "<endpoint_config>" \
 --production-variants '[{ \
    ....
    "InferenceAmiVersion":  "${INFERENCE_AMI_VERSION}", \
    ...
    "}]'

aws sagemaker create-endpoint \
--endpoint-name "<endpoint_name>" \
--endpoint-config-name "<endpoint_config>"
```

## Executar trabalhos de transformação em lote compatíveis
<a name="batch-compliance"></a>

A *transformação em lote* é a opção de inferência mais adequada para solicitações de processamento de grandes quantidades de dados off-line. Para criar trabalhos de transformação em lote, você usa a ação de API `CreateTransformJob`. Para obter mais informações, consulte [Transformação em lote para inferência com a Amazon AI SageMaker](batch-transform.md).

O comportamento alterado do NVIDIA Container Toolkit afeta os trabalhos de transformação em lote. Para executar uma transformação em lote que atenda aos requisitos do NVIDIA Container Toolkit, faça o seguinte:

1. Se você quiser executar a transformação em lote com um modelo para o qual você trouxe seu próprio contêiner, primeiro atualize o contêiner para compatibilidade CUDA. Para atualizá-lo, siga o processo em [Atualizar a configuração de compatibilidade CUDA se você trouxer seu próprio contêiner](#cuda-compatibility).

1. Use a ação de API `CreateTransformJob` para criar o trabalho de transformação em lote. Em sua solicita, defina a variável de ambiente `SAGEMAKER_CUDA_COMPAT_DISABLED` como `true`. Esse parâmetro instrui o contêiner a não montar automaticamente as bibliotecas compatíveis com CUDA.

   Por exemplo, ao criar um trabalho de transformação em lote usando o AWS CLI, você define a variável de ambiente com o `--environment` parâmetro:

   ```
   aws sagemaker create-transform-job \
       --environment '{"SAGEMAKER_CUDA_COMPAT_DISABLED": "true"}'\
       . . .
   ```