

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 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
```