Le routine di previsione personalizzate ti consentono di determinare quale codice eseguire quando invii una richiesta di previsione online ad AI Platform Prediction.
Quando esegui il deployment di una risorsa di versione in AI Platform Prediction senza utilizzare un una routine di previsione personalizzata, gestisce le richieste di previsione dell'operazione di previsione del framework di machine learning utilizzato per l'addestramento.
Ma quando esegui il deployment di una routine di previsione personalizzata come risorsa della versione, può indicare ad AI Platform Prediction di eseguire codice Python personalizzato in risposta una richiesta di previsione che riceve. Puoi pre-elaborare l'input della previsione prima addestrato esegue la previsione oppure la previsione del modello può essere post-elaborata prima di inviare il risultato della previsione.
Per creare una routine di previsione personalizzata, devi fornire due parti AI Platform Prediction quando crei la versione del modello:
Una directory del modello in Cloud Storage, che contiene tutti gli artefatti che devono da utilizzare per la previsione.
Un pacchetto di distribuzione di origine Python
.tar.gz
in Cloud Storage contenenti la tua implementazione dell'interfaccia Predictor e qualsiasi altra il codice che vuoi venga utilizzato da AI Platform Prediction al momento della previsione.
Puoi eseguire il deployment di una routine di previsione personalizzata solo quando utilizzi un tipo di macchina legacy (MLS1) per la versione del tuo modello.
Carica gli artefatti del modello nella directory del modello
Segui la guida al deployment dei modelli per caricare il modello addestrato a Cloud Storage, insieme a tutti gli altri file Fornire dati o statefulness per AI Platform Prediction da utilizzare durante la previsione.
La dimensione totale del file degli artefatti del modello di cui esegui il deployment su AI Platform Prediction deve essere 500 MB o inferiore.
Puoi caricare il modello addestrato di machine learning nella directory del modello come
TensorFlow SavedModel
, un file model.joblib
, un file model.pkl
o un
model.bst
, ma puoi anche
fornisci il tuo modello come file HDF5 contenente un file tf.keras
addestrato
modello
o in un formato serializzato diverso.
Puoi anche includere un file di pickle con un'istanza di un una classe di preprocessore che contiene lo stato serializzato dall'addestramento.
Ad esempio, considera il seguente preprocessore, definito nel file denominato
preprocess.py
:
Durante l'addestramento su un set di dati numerico, il preprocessore centra i dati su
0 sottraendo la media di ogni colonna da ogni valore nella colonna. Quindi,
puoi esportare l'istanza del preprocessore come file di raccolta, preprocessor.pkl
,
che conserva le medie di ogni colonna calcolate dai dati di addestramento.
Durante la previsione, una routine di previsione personalizzata può caricare il preprocessore questo file per eseguire una trasformazione identica sull'input della previsione.
Per scoprire come utilizzare un preprocessore stateful come questo nella tua previsione personalizzata leggi la sezione successiva, che descrive come implementare il predittore a riga di comando.
per analizzare un esempio completo dell'utilizzo di un preprocessore stateful durante l'addestramento. e la previsione, leggi l'articolo Creazione di una routine di previsione personalizzata con Keras o Creazione di una routine di previsione personalizzata con scikit-learn.
Crea il tuo predittore
Indica ad AI Platform Prediction come gestire le richieste di previsione fornendole con un corso Predictor. È una classe che implementa la seguente interfaccia:
Nodi di previsione di AI Platform Prediction
utilizza il metodo della classe from_path
per caricare un'istanza del tuo predittore. Questo
dovrebbe caricare gli artefatti salvati nella directory del modello, i contenuti
di cui vengono copiati da Cloud Storage in una posizione individuata
model_dir
argomento.
Ogni volta che il deployment riceve una richiesta di previsione online, l'istanza
la classe Predictor restituita da from_path
usa il metodo predict
per generare
per le previsioni. AI Platform Prediction serializza il valore restituito di questo metodo
a JSON e la invia come risposta alla richiesta di previsione.
Tieni presente che il metodo predict
non deve convertire l'input da JSON a
oggetti Python o convertire l'output in JSON; AI Platform Prediction gestisce questo
al di fuori del metodo predict
.
AI Platform Prediction fornisce l'argomento instances
mediante l'analisi del codice
campo instances
dal corpo di predict
richiesta all'API AI Platform Training and Prediction. Analizza qualsiasi altro
campi del corpo della richiesta e li fornisce al metodo predict
sotto forma di voci
nel dizionario **kwargs
. Per saperne di più, leggi come strutturare una
Richiesta predict
all'API AI Platform Training and Prediction.
Proseguendo con l'esempio della sezione precedente, supponiamo che la directory del modello
contiene preprocessor.pkl
(l'istanza in detersa della classe ZeroCenterer
)
e un modello tf.keras
addestrato esportato come model.h5
o un modello
modello scikit-learn esportato come model.joblib
.
A seconda del framework di machine learning che utilizzi, implementa uno dei
seguenti classi di predittori in un file chiamato predictor.py
:
TensorFlow
scikit-learn
Nota che il metodo predict
converte i risultati della previsione in un elenco con
tolist
metodo
prima di restituirli. Gli array NumPy non sono serializzabili in formato JSON, quindi devi
convertirli in elenchi di numeri (che sono serializzabili in formato JSON). Altrimenti,
AI Platform Prediction non invierà la risposta della previsione.
Pacchettizzazione del predittore e delle sue dipendenze
Devi pacchettizzare il tuo Predictor come pacchetto di distribuzione di origine .tar.gz
.
Poiché NumPy, TensorFlow e scikit-learn sono inclusi nel
immagine runtime AI Platform Prediction,
non devi includere queste dipendenze nel file tarball. Tuttavia, assicurati di
non includere le dipendenze di Predictor che non sono preinstallate
AI Platform Prediction.
Per l'esempio precedente, devi includere preprocess.py
nell'origine
di distribuzione dei contenuti, anche se il tuo Predictor non lo importa esplicitamente.
Altrimenti, preprocessor = pickle.load(f)
avrà esito negativo perché Python
riconoscere la classe dell'istanza ZeroCenterer
nel file pickle.
Il seguente setup.py
mostra un modo per pacchettizzare questi script:
Per pacchettizzare e caricare l'esempio di codice personalizzato descritto in questa pagina, procedi come descritto di seguito: seguenti:
Crea i file
preprocess.py
,predictor.py
esetup.py
descritti in sezioni precedenti, tutte nella stessa directory. Vai alla directory in della tua shell.Esegui
python setup.py sdist --formats=gztar
per crearedist/my_custom_code-0.1.tar.gz
.Carica questo tarball in una posizione temporanea in Cloud Storage.
Non deve essere necessariamente uguale alla directory del modello. Se hai intenzione di eseguire l'iterazione e il deployment di più versioni della tua routine di previsione personalizzata, potresti voler caricare i tuoi pacchetti di codice personalizzati in una struttura temporanea . Puoi incrementare l'argomento
version
insetup.py
quando aggiornare il codice per tenere traccia delle diverse versioni.Il comando seguente mostra un modo per caricare la distribuzione di origine in Cloud Storage:
gcloud storage cp dist/my_custom_code-0.1.tar.gz gs://YOUR_BUCKET/PATH_TO_STAGING_DIR/
Puoi fornire il codice per la tua routine di previsione personalizzata in uno o più pacchetti.
Esegui il deployment della tua routine di previsione personalizzata
Per prima cosa, seleziona una regione in cui la previsione online
disponibile e utilizza gcloud
per creare una risorsa del modello:
gcloud ai-platform models create MODEL_NAME{"</var>"}} \
--regions CHOSEN_REGION
Assicurati che il componente gcloud beta
sia aggiornato, quindi crea una risorsa di versione
prestando particolare attenzione ai seguenti flag gcloud
:
--origin
: il percorso della directory del modello in di archiviazione ideale in Cloud Storage.--package-uris
: un elenco separato da virgole di caratteri di codice utente in Cloud Storage, incluso quello contenente la classe Predictor.--prediction-class
: il nome completo della classe Predictor (MODULE_NAME, CLASS_NAME).--framework
: non specificare un framework durante il deployment di una previsione personalizzata una nuova routine.--runtime-version
: le routine di previsione personalizzate sono disponibili in tempo di esecuzione dalla 1.4 alla 2.11.
Il comando seguente mostra come creare una risorsa di versione basata sul file di esempio descritti nelle sezioni precedenti:
gcloud components install beta
gcloud beta ai-platform versions create VERSION_NAME \
--model MODEL_NAME{"</var>"}} \
--runtime-version 2.11 \
--python-version 3.7 \
--origin gs://YOUR_BUCKET/PATH_TO_MODEL_DIR \
--package-uris gs://YOUR_BUCKET/PATH_TO_STAGING_DIR/my_custom_code-0.1.tar.gz \
--prediction-class predictor.MyPredictor
Per scoprire di più sulla creazione di modelli e versioni in dettaglio o su come utilizzando la console Google Cloud anziché gcloud CLI, consulta guida per il deployment dei modelli.
Specifica un account di servizio personalizzato
Durante la creazione di una risorsa di versione, puoi facoltativamente specificare un account di servizio per la routine di previsione personalizzata da usare durante la previsione. Questo consente di personalizzarne le autorizzazioni per accedere ad altre risorse Google Cloud. Scopri di più su come specificare un account di servizio per la previsione personalizzata di Cloud Shell.
Passaggi successivi
- Segui un tutorial sull'uso di routine di previsione personalizzate con Keras o con Scikit-learn per vedere un esempio più completo di come addestrare ed eseguire il deployment di un modello utilizzando una routine di previsione personalizzata.
- Per ulteriori informazioni, leggi la guida all'esportazione dei modelli sull'esportazione degli artefatti per la previsione senza utilizzare una previsione personalizzata una nuova routine.
- Leggi la guida al deployment dei modelli per saperne di più
ulteriori dettagli sul deployment delle risorse
model
eversion
in AI Platform Prediction per fornire previsioni.