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à.
Risolvi i problemi relativi alle implementazioni dei modelli Amazon SageMaker AI
Se riscontri un problema durante la distribuzione di modelli di machine learning in Amazon SageMaker AI, consulta le seguenti linee guida.
Argomenti
Errori di rilevamento nel conteggio delle CPU attive
Se distribuisci un modello di SageMaker intelligenza artificiale con una Java Virtual Machine (JVM) Linux, potresti riscontrare errori di rilevamento che impediscono l'utilizzo delle risorse della CPU disponibili. Questo problema riguarda alcuni JVMs che supportano Java 8 e Java 9 e la maggior parte che supporta Java 10 e Java 11. Questi JVMs implementano un meccanismo che rileva e gestisce il numero di CPU e la memoria massima disponibile quando si esegue un modello in un contenitore Docker e, più in generale, all'interno di taskset
comandi o gruppi di controllo Linux (cgroup). SageMaker Le implementazioni di intelligenza artificiale sfruttano alcune delle impostazioni utilizzate da JVM per la gestione di queste risorse. Attualmente, ciò fa sì che il contenitore rilevi erroneamente il numero di unità disponibili. CPUs
SageMaker L'intelligenza artificiale non limita l'accesso CPUs a un'istanza. Tuttavia, la JVM potrebbe rilevare il numero di CPU 1
quando ne CPUs sono disponibili altre per il contenitore. Di conseguenza, la JVM modifica tutte le impostazioni interne come se l'esecuzione dovesse basarsi sulla sola disponibilità di 1
core CPU. Queste impostazioni influenzano il processo di garbage collection, i blocchi, i thread del compilatore e altri processi interni della JVM che impattano negativamente sulla concorrenza, sul throughput e sulla latenza del container.
Per un esempio di rilevamento errato, in un contenitore configurato per l' SageMaker intelligenza artificiale distribuito con una JVM basata su Java8_191 e che ne ha quattro disponibili CPUs sull'istanza, esegui il comando seguente per avviare la JVM:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
Questo comando genera l'output seguente:
active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Molte delle JVMs persone interessate da questo problema hanno la possibilità di disabilitare questo comportamento e ristabilire l'accesso completo a tutti i componenti dell'istanza. CPUs Disabilita il comportamento indesiderato e stabilisci l'accesso completo a tutte le istanze CPUs includendo il -XX:-UseContainerSupport
parametro all'avvio delle applicazioni Java. Ad esempio, esegui il comando java
per avviare la JVM come segue:
java -XX:-UseContainerSupport -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
Questo comando genera l'output seguente:
active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
Controlla se la JVM utilizzata nel container supporta il parametro -XX:-UseContainerSupport
. In caso affermativo, passa sempre il parametro quando avvii la JVM. Ciò fornisce l'accesso a tutte le istanze CPUs presenti.
Potresti riscontrare questo problema anche quando utilizzi indirettamente una JVM in contenitori AI. SageMaker Ad esempio, quando si utilizza una JVM per supportare SparkML Scala. Il parametro -XX:-UseContainerSupport
influenza anche l'output restituito dall'API Java Runtime.getRuntime().availableProcessors()
.
Problemi con la distribuzione di un file model.tar.gz
Quando si distribuisce un modello utilizzando un file model.tar.gz
, l'archivio del modello non deve includere alcun collegamento simbolico. I collegamenti simbolici impediscono la creazione del modello. Inoltre, si consiglia di non includere file non necessari nel tarball.
Il container primario non ha superato i controllo dell'integrità del ping
Se il container primario non esegue i controlli di integrità del ping con il seguente messaggio di errore, indica che c'è un problema con il container o lo script:
The primary container for production variant beta did not pass the ping health check. Please check CloudWatch Logs logs for this endpoint.
Per risolvere questo problema, dovresti controllare i log dei CloudWatch log dell'endpoint in questione per vedere se ci sono errori o problemi che impediscono al contenitore di rispondere a o. /ping
/invocations
I log possono fornire un messaggio di errore che potrebbe indicare il problema. Dopo aver identificato l'errore e il motivo dell'errore, è necessario risolverlo.
È inoltre consigliabile testare la distribuzione del modello a livello locale prima di creare un endpoint.
-
Utilizza la modalità locale nell' SageMaker SDK per imitare l'ambiente ospitato distribuendo il modello su un endpoint locale. Per ulteriori informazioni, consulta Modalità locale
. -
Usa i comandi vanilla docker per testare le risposte del contenitore. to /ping and /invocations Per ulteriori informazioni, consulta local_test
.