Aggiornamento dei container di inferenza per renderli conformi a NVIDIA Container Toolkit - Amazon SageMaker AI

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

Aggiornamento dei container di inferenza per renderli conformi a NVIDIA Container Toolkit

A partire dalle versioni 1.17.4 e successive, NVIDIA Container Toolkit non monta più automaticamente le librerie di compatibilità CUDA. Questo cambiamento di comportamento potrebbe influire sui carichi di lavoro di inferenza SageMaker AI. Gli endpoint di SageMaker intelligenza artificiale e i processi di trasformazione in batch potrebbero utilizzare contenitori incompatibili con le versioni più recenti di NVIDIA Container Toolkit. Per garantire che i carichi di lavoro soddisfino i requisiti più recenti, potrebbe essere necessario aggiornare gli endpoint o configurare i processi di trasformazione in batch.

Aggiornamento SageMaker degli endpoint AI per motivi di conformità

Ti consigliamo di aggiornare gli endpoint SageMaker AI esistenti o di crearne di nuovi che supportino il comportamento predefinito più recente.

Per garantire che il tuo endpoint sia compatibile con le versioni più recenti di NVIDIA Container Toolkit, segui queste fasi:

  1. Aggiorna la modalità di configurazione delle librerie di compatibilità CUDA se utilizzi il tuo container.

  2. Specifica un’inferenza Amazon Machine Image (AMI) che supporti il comportamento più recente di NVIDIA Container Toolkit. Si specifica un AMI quando si aggiorna un endpoint esistente o se ne crea uno nuovo.

Aggiornamento della configurazione di compatibilità CUDA se utilizzi il tuo container

Le librerie di compatibilità CUDA consentono la compatibilità con le versioni successive. Questa compatibilità si applica a tutte le versioni del toolkit CUDA più recenti del driver NVIDIA fornito dall'istanza AI. SageMaker

È necessario abilitare le librerie di compatibilità CUDA solo quando il driver NVIDIA utilizzato dall'istanza SageMaker AI ha una versione precedente al toolkit CUDA nel contenitore del modello. Se il container del modello non richiede la compatibilità CUDA, puoi ignorare questa fase. Ad esempio, puoi saltare questo passaggio se non intendi utilizzare un toolkit CUDA più recente di quelli forniti dalle istanze AI. SageMaker

Grazie alle modifiche introdotte nella versione 1.17.4 di NVIDIA Container Toolkit, è possibile abilitare esplicitamente le librerie di compatibilità CUDA, se necessario, aggiungendole al container LD_LIBRARY_PATH.

Ti consigliamo di abilitare la compatibilità CUDA in base alla versione del driver NVIDIA rilevata. Per abilitarla, aggiungi il frammento di codice riportato di seguito allo script della shell di avvio del container. Aggiungi questo codice allo script ENTRYPOINT.

Il seguente script dimostra come cambiare dinamicamente l’utilizzo del pacchetto di compatibilità CUDA in base alla versione del driver NVIDIA rilevata nell’host implementato per il container del modello.

#!/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

Specifica di un’AMI di inferenza conforme a NVIDIA Container Toolkit

Nel InferenceAmiVersion parametro del tipo di ProductionVariant dati, puoi selezionare l'AMI per un endpoint SageMaker AI. Ciascuna delle immagini supportate AMIs è un'immagine preconfigurata. Ogni immagine è configurata AWS con un set di versioni di software e driver.

Per impostazione predefinita, l' SageMaker IA AMIs segue il comportamento precedente. Montano automaticamente le librerie di compatibilità CUDA nel container. Per fare in modo che un endpoint utilizzi il nuovo comportamento, è necessario specificare una versione dell’AMI di inferenza configurata per il nuovo comportamento.

Le seguenti versioni dell’AMI di inferenza attualmente seguono il nuovo comportamento. Non montano automaticamente le librerie di compatibilità CUDA.

al2- -2-1 ami-sagemaker-inference-gpu
  • Driver NVIDIA versione: 535.54.03

  • Versione CUDA: 12.2

al2- -3-1 ami-sagemaker-inference-gpu
  • Driver NVIDIA versione: 550.144.01

  • Versione CUDA: 12.4

Aggiornamento di un endpoint esistente

Utilizza il seguente esempio per aggiornare un endpoint esistente. L’esempio utilizza una versione dell’AMI di inferenza che disabilita il montaggio automatico delle librerie di compatibilità 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

Creazione di un nuovo endpoint

Utilizza il seguente esempio per creare un nuovo endpoint. L’esempio utilizza una versione dell’AMI di inferenza che disabilita il montaggio automatico delle librerie di compatibilità 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>"

Esecuzione di processi di trasformazione in batch conformi

Trasformazione in batch è l’opzione di inferenza più adatta per le richieste di elaborazione offline di grandi quantità di dati. Per creare processi di trasformazione in batch, utilizza l’operazione API CreateTransformJob. Per ulteriori informazioni, consulta Trasformazione in batch per l'inferenza con Amazon SageMaker AI.

Il comportamento modificato di NVIDIA Container Toolkit influisce sui processi di trasformazione in batch. Per eseguire una trasformazione in batch conforme ai requisiti di NVIDIA Container Toolkit, procedi come segue:

  1. Se desideri eseguire la trasformazione in batch con un modello per il quale hai utilizzato il tuo container, innanzitutto aggiorna il container per la compatibilità CUDA. Per aggiornarlo, segui la procedura riportata in Aggiornamento della configurazione di compatibilità CUDA se utilizzi il tuo container.

  2. Utilizza l’azione API CreateTransformJob per creare il processo di trasformazione in batch. Nella richiesta, imposta la variabile di ambiente SAGEMAKER_CUDA_COMPAT_DISABLED su true. Questo parametro indica al container di non montare automaticamente le librerie di compatibilità CUDA.

    Ad esempio, quando si crea un processo di trasformazione in batch utilizzando ilAWS CLI, si imposta la variabile di ambiente con il parametro: --environment

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