Individuare la causa degli errori che si verificano durante l'addestramento del modello le previsioni nel cloud possono essere difficili. In questa pagina viene descritto come trovare e risolvere i problemi riscontrati in AI Platform Prediction. Se riscontri problemi con il framework di machine learning che utilizzi, leggi la documentazione del framework di machine learning.
Strumento a riga di comando
- ERRORE: (gcloud) Scelta non valida: "ai-platform".
Questo errore indica che devi aggiorna gcloud. Per aggiornare gcloud, esegui questo comando:
gcloud components update
- ERROR: (gcloud) unrecognized arguments: --framework=SCIKIT_LEARN.
Questo errore indica che devi aggiornare gcloud. Per aggiornare gcloud, esegui questo comando:
gcloud components update
- ERROR: (gcloud) unrecognized arguments: --framework=XGBOOST.
Questo errore indica che devi aggiorna gcloud. Per aggiornare gcloud, esegui questo comando:
gcloud components update
- ERRORE: (gcloud) Impossibile caricare il modello. Impossibile caricare il modello: /tmp/model/0001/model.pkl. '\x03'. (Codice di errore: 0)
Questo errore indica che è stata utilizzata la libreria sbagliata per esportare il modello. Per correggere esporta nuovamente il modello utilizzando la libreria corretta. Ad esempio, esportare i modelli del modulo
model.pkl
con la libreriapickle
e i modelli del modulomodel.joblib
con la raccoltajoblib
.- ERRORE: (gcloud.ai-platform.jobs.submit.prediction) argomento --data-format: Scelta non valida: "json".
Questo errore significa che hai specificato
json
come valore di--data-format
per l'invio di un job di previsione batch. Per utilizzare il formato dei datiJSON
, devi forniretext
come valore del flag--data-format
.
Versioni di Python
- ERRORE: è stato rilevato un modello non valido con l'errore: "Impossibile caricare il modello: impossibile caricare
- model: /tmp/model/0001/model.pkl. unsupported pickle protocol: 3. Rendi
- che il modello sia stato esportato con Python 2. In caso contrario, specifica
- parametro "python_version" corretto durante il deployment del modello. Al momento,
- 'python_version' accetta 2.7 e 3.5. (Codice di errore: 0)"
- Questo errore indica che un file del modello esportato con Python 3 è stato disegnato in una risorsa della versione del modello di previsione di AI Platform con un'impostazione di Python 2.7.
Per risolvere questo problema:
- Crea una nuova risorsa della versione del modello e imposta "python_version" a 3,5.
- Esegui il deployment dello stesso file del modello nella risorsa della nuova versione del modello.
Il comando virtualenv
non è stato trovato
Se hai ricevuto questo errore quando hai provato ad attivare virtualenv
, è possibile che
è aggiungere la directory contenente virtualenv
al tuo $PATH
variabile di ambiente. Se modifichi questa variabile puoi usare virtualenv
senza dover digitare il percorso completo del file.
Innanzitutto, installa virtualenv
eseguendo questo comando:
pip install --user --upgrade virtualenv
Il programma di installazione ti chiede di modificare l'ambiente $PATH
e fornisce il percorso allo script virtualenv
. Su macOS,
simile a
/Users/[YOUR-USERNAME]/Library/Python/[YOUR-PYTHON-VERSION]/bin
.
Apri il file in cui la shell carica le variabili di ambiente. In genere, si tratta di
~/.bashrc
o ~/.bash_profile
in macOS.
Aggiungi la riga seguente, sostituendo [VALUES-IN-BRACKETS]
con il codice
valori:
export PATH=$PATH:/Users/[YOUR-USERNAME]/Library/Python/[YOUR-PYTHON-VERSION]/bin
Infine, esegui il seguente comando per caricare il file .bashrc
(o .bash_profile
) aggiornato:
source ~/.bashrc
Utilizzo dei log dei job
Un buon primo punto di partenza per la risoluzione dei problemi sono i log dei job acquisiti e in Cloud Logging.
Log per i diversi tipi di operazioni
L’esperienza di registrazione varia in base al tipo di operazione, come illustrato in le sezioni seguenti.
Log di previsione batch
Tutti i job di previsione batch vengono registrati.
Log di previsione online
Le richieste di previsione online non generano log per impostazione predefinita. Puoi attivare Cloud Logging quando crei la risorsa del modello:
gcloud
Includi il flag --enable-logging
quando esegui
gcloud ai-platform models create
Python
Imposta onlinePredictionLogging
su True
nel
Risorsa Model
che utilizzi
per la tua chiamata
projects.models.create
.
Trovare i log
I log del job contengono tutti gli eventi per l'operazione, inclusi quelli di tutti dei processi nel tuo cluster quando utilizzi l'addestramento distribuito. Se mentre esegui un job di addestramento distribuito, i log a livello di job e il processo worker principale. Il primo passaggio per la risoluzione di un errore è in genere esaminare i log per quel processo, filtrando gli eventi registrati per altri processi nel tuo cluster. Gli esempi in questa sezione mostrano questo filtro.
Puoi filtrare i log dalla riga di comando o in Cloud Logging della console Google Cloud. In entrambi i casi, utilizza questi i valori dei metadati nel filtro in base alle esigenze:
Elemento metadati | Filtro per mostrare gli elementi dove si trova... |
---|---|
resource.type | Uguale a "cloud_ml_job". |
resource.labels.job_id | Uguale al nome del job. |
resource.labels.task_name | Uguale a "master-replica-0" solo le voci di log dell'istanza principale worker. |
gravità | Maggiore o uguale a ERROR per leggere solo le voci di log corrispondenti a condizioni di errore. |
Riga di comando
Utilizza gcloud beta logging read per per creare una query che soddisfi le tue esigenze. Ecco alcuni esempi:
Ogni esempio si basa su queste variabili di ambiente:
PROJECT="my-project-name"
JOB="my_job_name"
Se preferisci, puoi inserire il valore letterale della stringa.
Per stampare i log dei processi sullo schermo:
gcloud ai-platform jobs stream-logs $JOB
Consulta tutte le opzioni per gcloud ai-platform Job stream-logs.
Per stampare il registro e farlo vedere al worker principale:
gcloud beta logging read --project=${PROJECT} "resource.type=\"ml_job\" and resource.labels.job_id=${JOB} and resource.labels.task_name=\"master-replica-0\""
Per stampare solo gli errori registrati per il worker principale sullo schermo:
gcloud beta logging read --project=${PROJECT} "resource.type=\"ml_job\" and resource.labels.job_id=${JOB} and resource.labels.task_name=\"master-replica-0\" and severity>=ERROR"
Gli esempi precedenti rappresentano i casi più comuni di filtraggio dei log dal job di addestramento di AI Platform Prediction. Cloud Logging fornisce molte potenti opzioni di filtro che puoi utilizzare se hai bisogno di perfezionare eseguire una ricerca. La documentazione sui filtri avanzati descrive queste opzioni in dettaglio.
Console
Apri la pagina Job di AI Platform Prediction nella console Google Cloud.
Seleziona il job non riuscito dall'elenco nella pagina Job per visualizzarne i dettagli.
- Fai clic su Visualizza log per aprire Cloud Logging.
Puoi anche andare direttamente a Cloud Logging, ma c'è il passaggio aggiuntivo trovare un lavoro:
- Espandi il selettore delle risorse.
- Espandi il job di previsione di AI Platform nell'elenco delle risorse.
- Trova il nome del tuo job nell'elenco job_id (puoi inserire le prime lettere) del nome del job nella casella di ricerca per restringere i job visualizzati).
- Espandi la voce del job e seleziona
master-replica-0
dall'elenco delle attività.
Recupero delle informazioni dai log
Dopo aver trovato il log giusto per il tuo job e averlo filtrato in
master-replica-0
, puoi esaminare gli eventi registrati per trovare l'origine del
problema. Si tratta della procedura di debug di Python standard, ma tieni presente quanto segue:
- Gli eventi hanno più livelli di gravità. Puoi filtrare per visualizzare solo gli eventi di un determinato livello, come errori o errori e avvisi.
- Un problema che causa l'uscita da trainer con un errore irreversibile (codice restituito > 0) viene registrata come eccezione, preceduta dallo stack traccia:
- Puoi ottenere maggiori informazioni espandendo gli oggetti nel file JSON registrato (indicato da una freccia rivolta verso destra e contenuti elencati come {...}). Ad esempio, puoi espandere jsonPayload per vedere l'analisi dello stack in un formato leggibile rispetto a quello indicato nella descrizione principale dell'errore:
- Alcuni errori mostrano istanze di errori non irreversibili. In genere non includono una traccia dello stack e possono essere più difficili da diagnosticare.
Ottenere il massimo dal logging
Il servizio di addestramento AI Platform Prediction registra automaticamente questi eventi:
- Informazioni sullo stato interne al servizio.
- Messaggi inviati dall'applicazione di addestramento a
stderr
. - Testo di output inviato dall'applicazione di addestramento a
stdout
.
Puoi semplificare la risoluzione dei problemi nell'applicazione per formatori seguendo buone pratiche di programmazione:
- Invia messaggi significativi a stderr (ad esempio con il logging).
- Solleva l'eccezione più logica e descrittiva quando si verifica un problema.
- Aggiungi stringhe descrittive agli oggetti eccezione.
La documentazione Python fornisce ulteriori informazioni sulle eccezioni.
Risoluzione dei problemi della previsione
Questa sezione elenca alcuni problemi comuni riscontrati durante l'acquisizione delle previsioni.
Gestione di condizioni specifiche per la previsione online
Questa sezione fornisce indicazioni su alcune condizioni di errore di previsione online. che è noto per alcuni utenti.
Il completamento delle previsioni richiede troppo tempo (30-180 secondi)
La causa più comune della lentezza della previsione online è lo scale up dei nodi di elaborazione partendo da zero. Se sul modello sono effettuate richieste di previsione regolari, mantiene uno o più nodi pronti per fornire previsioni. Se il tuo modello non ha fornito alcuna previsione da molto tempo, il servizio "riduce le dimensioni" a zero nodi pronti. La successiva richiesta di previsione dopo lo scale down richiederà molto più di tornare indietro rispetto al solito perché il servizio deve eseguire il provisioning dei nodi per gestire li annotino.
Codici di stato HTTP
Quando si verifica un errore con una richiesta di previsione online, solitamente ricevi una richiesta il codice di stato restituito dal servizio. Di seguito sono riportati alcuni codici comuni il loro significato nel contesto della previsione online:
- 429 - Memoria esaurita
Il nodo di elaborazione ha esaurito la memoria durante l'esecuzione del modello. Non sono presenti per aumentare la memoria allocata ai nodi di previsione. Tu puoi provare a fare quanto segue per far funzionare il modello:
- Riduci le dimensioni del modello:
- Utilizzo di variabili meno precise.
- Quantificare i dati continui.
- Ridurre la dimensione di altre caratteristiche di input (usando termini più piccoli) dimensioni, ad esempio).
- Invia di nuovo la richiesta con un batch di istanze più piccolo.
- Riduci le dimensioni del modello:
- 429 - Troppe richieste in attesa
Il modello riceve più richieste di quante possa gestire. Se utilizzi con scalabilità automatica, riceve le richieste più velocemente di quanto il sistema sia in grado di scalare. Inoltre, se il valore minimo dei nodi è 0, questa configurazione può "avvio a freddo" scenario in cui verrà osservato un tasso di errore del 100% fino il primo nodo è attuabile.
Con la scalabilità automatica, puoi provare a inviare di nuovo le richieste con backoff esponenziale. Il reinvio delle richieste con backoff esponenziale può dare al sistema il tempo di adeguarsi.
Per impostazione predefinita, la scalabilità automatica viene attivata L'utilizzo della CPU supera il 60% ed è configurabile.
- 429 - Quota
Il tuo progetto Google Cloud è limitato a 10.000 richieste ogni 100 secondi (circa 100 al secondo). Se ricevi questo errore nei picchi temporanei, spesso puoi riprovare con il backoff esponenziale per elaborare tutte le richieste nel tempo. Se ricevi regolarmente questo codice, puoi richiedere una quota aumentano. Consulta la pagina della quota per maggiori dettagli.
- 503 - I nostri sistemi hanno rilevato traffico insolito dalla rete del tuo computer
La frequenza di richieste che il tuo modello ha ricevuto da un singolo IP è talmente alta che il sistema sospetti un attacco denial of service. Interrompi l'invio di richieste per un minuto e poi riprendilo a una frequenza inferiore.
- 500 - Impossibile caricare il modello
Il sistema non è riuscito a caricare il modello. Prova a procedere nel seguente modo:
- Assicurati che l'addestratore stia esportando il modello corretto.
- Prova una previsione di test con
gcloud ai-platform local predict
. - Esporta di nuovo il modello e riprova.
Errori di formattazione per le richieste di previsione
Questi messaggi riguardano tutti il tuo input di previsione.
- "JSON vuoto o con formato non corretto/non valido nel corpo della richiesta"
- Il servizio non è riuscito ad analizzare il file JSON nella tua richiesta oppure la tua richiesta è vuoto. Controlla se nel messaggio sono presenti errori o omissioni che invalidano il codice JSON.
- "Istanze" mancanti campo nel corpo della richiesta"
- Il corpo della tua richiesta non è nel formato corretto. Deve essere un file JSON
oggetto con una singola chiave denominata
"instances"
che contiene un elenco con tutte delle tue istanze di input. - Errore di codifica JSON durante la creazione di una richiesta
La richiesta include dati con codifica base64, ma non nel formato JSON corretto. Ogni stringa codificata in base64 deve essere rappresentata da un oggetto con un chiave singola denominata
"b64"
. Ad esempio:{"b64": "an_encoded_string"}
Un altro errore base64 si verifica quando sono presenti dati binari diversi da base64 codificati. Codifica i dati e formattali nel seguente modo:
{"b64": base64.b64encode(binary_data)}
Leggi ulteriori informazioni su formattare e codificare i dati binari.
La previsione nel cloud richiede più tempo rispetto a quella sul desktop
La previsione online è progettata per essere un servizio scalabile che che gestisce un tasso elevato di richieste di previsione. Il servizio è ottimizzato per le prestazioni aggregate in tutte le richieste di pubblicazione. L'attenzione alla scalabilità comporta caratteristiche di rendimento diverse rispetto alla generazione di un numero ridotto di previsioni sulla tua macchina locale.
Passaggi successivi
- Richiedi assistenza.
- Scopri di più sul modello di errore delle API di Google.
in particolare i codici di errore canonici definiti
google.rpc.Code
e i dettagli dell'errore standard definiti google/rpc/error_details.proto. - Scopri come monitorare i job di addestramento.
- Consulta la sezione Risoluzione dei problemi e domande frequenti su Cloud TPU per assistenza per la diagnosi e la risoluzione dei problemi quando esegui la previsione della piattaforma AI con Cloud TPU.