

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á.

# 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"}'\
       . . .
   ```