Perché il mio endpoint Amazon SageMaker entra in stato di errore quando creo o aggiorno un endpoint?

5 minuti di lettura
0

Vorrei risolvere il motivo per cui la creazione o l'aggiornamento del mio endpoint Amazon SageMaker ha avuto esito negativo.

Risoluzione

Quando la creazione o l'aggiornamento dell'endpoint SageMaker ha esito negativo, SageMaker fornisce il motivo dell'errore. Utilizza una delle seguenti opzioni per esaminare questo motivo:

  • Controlla l'endpoint nella console SageMaker. Il motivo dell'errore è riportato nella console.
  • Esegui il comando describe-endpoint dell'Interfaccia della linea di comando AWS (AWS CLI). Controlla il campo FailureReason per conoscere il motivo dell'errore.

Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Di seguito sono riportati alcuni dei motivi dell'errore e i relativi metodi di risoluzione.

Impossibile fornire la capacità di elaborazione di ML richiesta a causa dell'errore InsufficientInstanceCapacity

Quando provi a creare un endpoint, potresti ricevere il seguente errore:

Unable to provision requested ML compute capacity due to InsufficientInstanceCapacity error

Questo errore si verifica quando AWS non dispone di capacità sufficiente per eseguire il provisioning delle istanze richieste per il tuo endpoint.

Puoi provare a risolvere questo errore con uno o più dei seguenti approcci:

  • Attendi qualche minuto e prova di nuovo, poiché la capacità può variare spesso.
  • Se utilizzi più istanze per il tuo endpoint, prova a creare l'endpoint con un numero inferiore di istanze. Se è configurata la scalabilità automatica, SageMaker può eseguire l'aumento o la riduzione orizzontali in base alle esigenze e alla capacità consentita.
  • Prova con un tipo di istanza diverso che supporti il tuo carico di lavoro. Dopo avere creato un endpoint, aggiornalo con il tipo di istanza desiderato. Dato che SageMaker utilizza un metodo di implementazione blu/verde per massimizzare la disponibilità, puoi passare a un nuovo tipo di istanza senza influire sui carichi di lavoro di produzione correnti.

Il container per la variante di produzione <variant> non ha superato il controllo dell'integrità del ping. Controlla i log di CloudWatch per questo endpoint.

I container utilizzati per gli endpoint SageMaker devono implementare un server Web che risponda agli endpoint /invocations e /ping. Quando crei un endpoint, SageMaker inizia a inviare richieste GET periodiche all'endpoint /ping dopo l'avvio del container.

Come minimo, un container deve rispondere con un codice di stato HTTP 200 OK e un corpo vuoto per indicare che è pronto ad accettare richieste di inferenza. Questo errore si verifica quando SageMaker non ottiene risposte consistenti dal container entro quattro minuti dal suo avvio. Poiché l'endpoint non risponde al controllo dell'integrità, SageMaker non ritiene che sia integro. Pertanto, l'endpoint è contrassegnato come Failed (Non riuscito).

Il controllo dell'integrità potrebbe avere esito negativo anche quando si utilizza un'immagine di AWS Deep Learning Containers. Queste immagini utilizzano TorchServe o Multi Model Server per fornire i modelli che implementano gli endpoint HTTP per i controlli di inferenza e integrità. Questi framework controllano se il modello è stato caricato prima di restituire a SageMaker una risposta 200 OK. Se il server non è in grado di vedere che il modello è stato caricato, il controllo dell'integrità ha esito negativo. Un modello potrebbe non essere caricato per molte ragioni, incluso l'utilizzo della memoria. I messaggi di errore corrispondenti vengono registrati nei log di Amazon CloudWatch per l'endpoint. Se il codice caricato nell'endpoint ha causato l'errore (ad esempio, model_fn per PyTorch), gli errori vengono registrati in AWS CloudTrail. Per aumentare la verbosità di questi log, aggiorna la variabile ambientale SAGEMAKER_CONTAINER_LOG_LEVEL per il modello con i livelli di log per la registrazione in Python.

Una richiesta di controllo dell'integrità deve ricevere una risposta entro due secondi per avere successo. Assicurati di testare la risposta avviando il container modello in locale e inviando una richiesta GET al container per verificare la risposta.

Impossibile estrarre l'archivio di dati del modello per il container

SageMaker si aspetta un file TAR con i dati del modello da utilizzare nell'endpoint. Dopo che SageMaker ha scaricato il file TAR, viene estratto l'archivio di dati. Questo errore potrebbe verificarsi se SageMaker non riesce a estrarre l'archivio di dati. Ad esempio, SageMaker non può estrarre l'archivio di dati se l'artefatto del modello contiene collegamenti simbolici ai file che si trovano nel file TAR.

Quando crei un endpoint, assicurati che gli artefatti del modello non includano collegamenti simbolici all'interno del file TAR. Per verificare se il file TAR include collegamenti simbolici, estrai i dati del modello ed esegui il seguente comando all'interno degli artefatti:

find . -type l -ls

Questo comando restituisce tutti i collegamenti simbolici trovati dopo la ricerca nella directory corrente e in una delle sue sottodirectory. Sostituisci ogni collegamento restituito con le copie effettive del file.

CannotStartContainerError

Questo errore si verifica quando SageMaker non riesce ad avviare il container per prepararlo per l'inferenza.

Quando SageMaker avvia l'endpoint, il container viene avviato con il seguente comando:

docker run <image-id> serve

Quando viene eseguito questo comando, il container deve avviare il processo di servizio.

Per risolvere questo errore, utilizza l'SDK SageMaker Python in modalità locale. In alternativa, prova a eseguire la tua immagine di inferenza con il comando docker run. L'SDK SageMaker Python carica il modello in modo simile a un endpoint SageMaker. Tuttavia, Docker non carica il modello a meno che non configuri il comando o il container in tal senso. Per caricare il modello in locale, puoi utilizzare un comando simile al seguente:

docker run -v $(pwd)/test_dir:/opt/ml -p 8080:8080 --rm ${image} serve

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa