

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Best practice per ridurre al minimo le interruzioni durante gli aggiornamenti dei driver della GPU
<a name="inference-gpu-drivers"></a>

SageMaker AI Model Deployment aggiorna nel tempo i driver GPU sulle istanze ML per le opzioni di inferenza in tempo reale, Batch e Asynchronous Inference per fornire ai clienti l'accesso ai miglioramenti dei fornitori di driver. Di seguito puoi vedere la versione della GPU supportata per ciascuna opzione di Inferenza. Diverse versioni dei driver possono modificare il modo in cui il modello interagisce con. GPUs Di seguito sono riportate alcune strategie per aiutarti a capire come funziona l'applicazione con le diverse versioni dei driver. 

## Versioni correnti e famiglie di istanze supportate
<a name="inference-gpu-drivers-versions"></a>

Amazon SageMaker AI Inference supporta i seguenti driver e famiglie di istanze:

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

## Risolvi i problemi del container del modello con funzionalità GPU
<a name="inference-gpu-drivers-troubleshoot"></a>

Se riscontri un problema durante l'esecuzione del carico di lavoro della GPU, consulta le seguenti indicazioni:

### Errore di rilevamento della scheda GPU o errore di inizializzazione NVIDIA
<a name="collapsible-section-0"></a>

Esegui il comando `nvidia-smi` (NVIDIA System Management Interface) dall'interno del container Docker. Se l'interfaccia di gestione del sistema NVIDIA rileva un errore di rilevamento della GPU o un errore di inizializzazione NVIDIA, restituirà il seguente messaggio di errore:

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

In base al vostro caso d'uso, seguite le seguenti best practice per risolvere l'errore:
+ Segui le raccomandazioni sulle best practice descritte nel menu a discesa [Se porti i tuoi container di modello (BYO)](#collapsible-byoc).
+ Segui le raccomandazioni sulle best practice descritte nel menu a discesa [Se utilizzi un livello di compatibilità CUDA](#collapsible-cuda-compat).

Per ulteriori informazioni, consulta la [pagina Interfaccia di gestione del sistema NVIDIA](https://developer.nvidia.com/nvidia-system-management-interface) sul sito Web di NVIDIA.

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

 Se l'istanza GPU utilizza versioni di driver NVIDIA non compatibili con la versione CUDA nel container Docker, la distribuzione di un endpoint avrà esito negativo e verrà visualizzato il seguente messaggio di errore: 

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

In base al vostro caso d'uso, seguite le seguenti best practice per risolvere l'errore:
+ Segui le raccomandazioni sulle best practice descritte nel menu a discesa [Il driver da cui dipende il mio container è superiore alla versione presente sulle istanze della GPU di ML](#collapsible-driver-dependency-higher).
+ Segui le raccomandazioni sulle best practice descritte nel menu a discesa [Se utilizzi un livello di compatibilità CUDA](#collapsible-cuda-compat).

## Best practice per lavorare con versioni non corrispondenti dei driver
<a name="inference-gpu-drivers-cuda-toolkit-updates"></a>

Di seguito vengono fornite informazioni su come aggiornare il driver della GPU:

### Il driver da cui dipende il mio container è inferiore alla versione presente sull'istanza della GPU di ML
<a name="collapsible-driver-dependency-lower"></a>

Nessuna operazione richiesta. NVIDIA offre la compatibilità con le versioni precedenti.

### Il driver da cui dipende il mio container è superiore alla versione presente sulle istanze della GPU di ML
<a name="collapsible-driver-dependency-higher"></a>

Se si tratta di una differenza di versione minore, nessuna operazione richiesta. NVIDIA offre la compatibilità con le versioni minori.

Se si tratta di una differenza di versione importante, sarà necessario installare il pacchetto di compatibilità CUDA. Fai riferimento al [pacchetto di compatibilità CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/index.html) nella documentazione NVIDIA.

**Importante**  
Il pacchetto di compatibilità CUDA non è compatibilità con le versioni precedenti, quindi deve essere disabilitato se la versione del driver sull'istanza è superiore alla versione del pacchetto di compatibilità CUDA

### Se porti i tuoi container di modello (BYO)
<a name="collapsible-byoc"></a>

Assicurati che nell'immagine non siano inclusi pacchetti di driver NVIDIA, il che potrebbe causare conflitti con la versione del driver NVIDIA sull'host.

### Se utilizzi un livello di compatibilità CUDA
<a name="collapsible-cuda-compat"></a>

Per verificare se la versione del driver Nvidia della piattaforma supporta la versione del pacchetto di compatibilità CUDA installata nel container del modello, consulta la [Documentazione CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/index.html#use-the-right-compat-package). Se la versione del driver Nvidia della piattaforma non supporta la versione del pacchetto di compatibilità CUDA, puoi disabilitare o rimuovere il pacchetto di compatibilità CUDA dall'immagine del container del modello. Se la versione delle libs di compatibilità CUDA è supportata dall'ultima versione del driver Nvidia, ti suggeriamo di abilitare il pacchetto di compatibilità CUDA in base alla versione del driver Nvidia rilevata per la compatibilità futura, aggiungendo lo snippet di codice sottostante nello script di shell di avvio del container (nello script `ENTRYPOINT`).

Lo script dimostra come cambiare dinamicamente l'uso del pacchetto di compatibilità CUDA in base alla versione del driver Nvidia rilevata sull'host distribuito per il container del modello. Quando viene SageMaker rilasciata una versione più recente del driver Nvidia, il CUDA Compatibility Package installato può essere disattivato automaticamente se l'applicazione CUDA è supportata nativamente sul nuovo 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
```