Panoramica
Questa pagina mostra come esportare i modelli BigQuery ML. Puoi esportare i modelli BigQuery ML in Cloud Storage e utilizzarli per la previsione online o modificarli in Python. Puoi esportare un modello BigQuery ML come indicato di seguito:
- Su Cloud Console.
- Utilizzando l'istruzione
EXPORT MODEL
. - Usare il comando
bq extract
nello strumento a riga di comandobq
. - Invio di un job
extract
tramite l'API o le librerie client.
Puoi esportare i seguenti tipi di modelli:
AUTOENCODER
AUTOML_CLASSIFIER
AUTOML_REGRESSOR
BOOSTED_TREE_CLASSIFIER
BOOSTED_TREE_REGRESSOR
DNN_CLASSIFIER
DNN_REGRESSOR
DNN_LINEAR_COMBINED_CLASSIFIER
DNN_LINEAR_COMBINED_REGRESSOR
KMEANS
LINEAR_REG
LOGISTIC_REG
MATRIX_FACTORIZATION
TENSORFLOW
(modelli TensorFlow importati)PCA
Esporta formati e campioni del modello
La tabella seguente mostra i formati di destinazione di esportazione per ogni tipo di modello BigQuery ML e fornisce un esempio di file che vengono scritti nel bucket Cloud Storage.
Tipo di modello | Esporta formato modello | File esportati campione |
---|---|---|
AUTOML_CLASSIFIER | TensorFlow SalvaModello (TF 2.1.0) | gcs_bucket/
|
AUTOML_REGRESSOR | ||
CODICE AUTOMATICO | TensorFlow SalvaModello (TF 1.15 o superiore) | |
DNN_CLASSIFICAZIONE | ||
DNN_REGRESSOR | ||
DNN_LINEAR_COMBINED_CLASSIFIER | ||
DNN_LINEAR_COMBINED_REGRESSOR | ||
KMEAN | ||
LINEAR_REGRESSOR | ||
LOGISTIC_REG | ||
MATRIX_FACTORIZATION | ||
PCA | ||
BOOSTED_TREE_CLASSIFIER | Richiamo (XGBoost 0.82) | gcs_bucket/
main.py è per la corsa locale. Per maggiori dettagli, vedi Deployment di modelli.
|
BOOSTED_TREE_REGRESSOR | ||
TENSORFLOW (importato) | TensorFlow salvato modello | Esattamente gli stessi file presenti quando importi il modello |
Il modello non contiene le informazioni sulla progettazione della funzionalità eseguite nell'istruzione SELECT
durante l'addestramento, quindi dovrai convertire manualmente i dati di input prima di inserire il modello nel modello esportato.
Limitazioni
Quando esporti i modelli, si applicano le seguenti limitazioni:
L'esportazione del modello non è supportata se durante l'addestramento è stata utilizzata una delle seguenti funzionalità:
- Nei dati di input erano presenti i tipi di funzionalità
ARRAY
,TIMESTAMP
oGEOGRAPHY
. - La clausola di trasformazione ML di BigQuery è stata usata per la progettazione di funzionalità.
- Nei dati di input erano presenti i tipi di funzionalità
I modelli esportati per i tipi di modelli
AUTOML_REGRESSOR
eAUTOML_CLASSIFIER
non supportano il deployment di AI Platform per la previsione online.Il limite di dimensione del modello è di 1 GB per l'esportazione del modello di fattorizzazione della matrice. La dimensione del modello è circa proporzionale a
num_factors
, quindi puoi ridurrenum_factors
durante l'addestramento per ridurre le dimensioni del modello se raggiungi il limite.Le funzionalità relative alle chiavi di crittografia gestite dal cliente non sono supportate per l'esportazione dei modelli.
Esportazione dei modelli BigQuery ML
Per esportare un modello:
Console
Apri la pagina BigQuery in Cloud Console.
Nella sezione Risorse del pannello di navigazione, espandi il progetto e fai clic sul tuo set di dati per espanderlo. Trova e fai clic sul modello che stai esportando.
Fai clic su Esporta modello sul lato destro della finestra.
Nella finestra di dialogo Esporta modello in Cloud Storage:
- In Seleziona la località di Cloud Storage, cerca il bucket o la posizione della cartella in cui vuoi esportare il modello.
- Fai clic su Esporta per esportare il modello.
Per controllare l'avanzamento del job, cerca Job nella parte superiore della navigazione per trovare un job di esportazione.
SQL
L'istruzione EXPORT MODEL
consente di esportare i modelli BigQuery ML in Cloud Storage utilizzando la sintassi delle query SQL standard.
Per esportare un modello BigQuery ML in Cloud Console utilizzando l'istruzione EXPORT MODEL
, segui questi passaggi:
In Cloud Console, apri la pagina BigQuery.
Fai clic su Crea nuova query.
Nel campo Editor query, digita l'istruzione
EXPORT MODEL
.La query seguente esporta un modello denominato
myproject.mydataset.mymodel
in un bucket Cloud Storage con URIgs://bucket/path/to/saved_model/
.EXPORT MODEL `myproject.mydataset.mymodel` OPTIONS(URI = 'gs://bucket/path/to/saved_model/')
Fai clic su Esegui. Una volta completata la query, nel riquadro Risultati delle query viene visualizzato quanto segue:
Successfully exported model
.
bq
Utilizza il comando bq extract
con il flag --model
.
(Facoltativo) Fornisci il flag --destination_format
e scegli il formato del modello esportato.
(Facoltativo) Fornisci il flag --location
e imposta il valore sulla
località.
bq --location=location extract \ --destination_format format \ --model project_id:dataset.model \ gs://bucket/model_folder
Dove:
- location è il nome della tua sede. Il flag
--location
è facoltativo. Ad esempio, se utilizzi BigQuery nell'area geografica di Tokyo, puoi impostare il valore del flag suasia-northeast1
. Puoi impostare un valore predefinito per la località utilizzando il file.bigqueryrc. - destination_format è il formato del modello esportato:
ML_TF_SAVED_MODEL
(predefinito) oML_XGBOOST_BOOSTER
. - project_id è l'ID progetto.
- dataset è il nome del set di dati di origine.
- model è il modello che stai esportando.
- bucket è il nome del bucket Cloud Storage in cui esporti i dati. Il set di dati BigQuery e il bucket Cloud Storage devono essere nella stessa località.
- model_folder è il nome della cartella in cui verranno scritti i file del modello esportati.
Esempi:
Ad esempio, il seguente comando esporta mydataset.mymodel
nel formato TensorFlow savedmodel in un bucket Cloud Storage denominato mymodel_folder
.
bq extract --model \ 'mydataset.mymodel' \ gs://example-bucket/mymodel_folder
Il valore predefinito di destination_format è ML_TF_SAVED_MODEL
.
Il seguente comando esporta mydataset.mymodel
in formato XGBoost Booster
in un bucket Cloud Storage denominato mymodel_folder
.
bq extract --model \ --destination_format ML_XGBOOST_BOOSTER \ 'mydataset.mytable' \ gs://example-bucket/mymodel_folder
API
Per esportare il modello, crea un job extract
e compila la relativa configurazione.
(Facoltativo) Specifica la tua località nella proprietà location
nella sezione jobReference
della risorsa job.
Crea un job di estrazione che punta al modello BigQuery ML e alla destinazione di Cloud Storage.
Specifica il modello di origine utilizzando l'oggetto di configurazione
sourceModel
che contiene l'ID progetto, l'ID del set di dati e l'ID modello.La proprietà
destination URI(s)
deve essere completa, nel formato gs://bucket/model_folder.Specifica il formato di destinazione impostando la proprietà
configuration.extract.destinationFormat
. Ad esempio, per esportare un modello di albero potenziato, imposta questa proprietà sul valoreML_XGBOOST_BOOSTER
.Per controllare lo stato del job, chiama jobs.get(job_id) fornendo l'ID del job restituito dalla richiesta iniziale.
- Se
status.state = DONE
, il job è stato completato correttamente. - Se è presente la proprietà
status.errorResult
, la richiesta non è andata a buon fine e l'oggetto includerà informazioni che descrivono il problema. - Se
status.errorResult
non è presente, il job è stato completato correttamente, anche se potrebbero esserci errori non irreversibili. Gli errori non irreversibili sono elencati nella proprietàstatus.errors
dell'oggetto job restituito.
- Se
Note API:
Come best practice, genera un ID univoco e trasmettilo come
jobReference.jobId
quando chiamijobs.insert
per creare un job. Questo approccio è più efficace in caso di errore di rete, perché il client può eseguire il polling o riprovare sull'ID job noto.Chiamare
jobs.insert
su un determinato ID job è idempotente; in altre parole, puoi riprovare tutte le volte che vuoi per lo stesso ID job e al massimo una di queste operazioni avrà esito positivo.
Java
Deployment dei modelli
Puoi eseguire il deployment del modello esportato in Google Cloud AI Platform e anche in locale.
Deployment di AI Platform
Esporta formato modello | Deployment |
---|---|
TensorFlow Video salvato (modelli non AutoML) | Esegui il deployment di un modello Tensorflow salvato (versione di runtime 1.15 o successive) |
Tensorflow Salvamodel (modelli AutoML) | Non supportata |
Booster XGBoost |
Routine di previsione personalizzata
(versione di runtime 1.15)
Nota: dal momento che nei file esportati sono salvate informazioni di pre-elaborazione e post-elaborazione, devi utilizzare una routine di previsione personalizzata per eseguire il deployment del modello con i file aggiuntivi esportati. |
Deployment locale
Esporta formato modello | Deployment |
---|---|
TensorFlow Video salvato (modelli non AutoML) |
SaveModel è un formato standard e puoi eseguirne il deployment nel container docker Tensorflow. Puoi anche utilizzare l'esecuzione locale della previsione online di AI Platform. |
Tensorflow Salvamodel (modelli AutoML) | Esegui il contenitore AutoML. |
Booster XGBoost |
Per eseguire i modelli XGBoost Booster in locale, puoi utilizzare il file main.py
esportato:
|
Formato output della previsione
Questa sezione fornisce il formato di output della previsione dei modelli esportati per ogni tipo di modello. Tutti i modelli esportati supportano la previsione batch; sono in grado di gestire più righe di input contemporaneamente. Ad esempio, in ciascuno dei seguenti esempi di formati di output sono presenti due righe di input.
CODICE AUTOMATICO
Formato output della previsione | Campione di output |
---|---|
+------------------------+------------------------+------------------------+ | LATENT_COL_1 | LATENT_COL_2 | ... | +------------------------+------------------------+------------------------+ | [FLOAT] | [FLOAT] | ... | +------------------------+------------------------+------------------------+ |
+------------------+------------------+------------------+------------------+ | LATENT_COL_1 | LATENT_COL_2 | LATENT_COL_3 | LATENT_COL_4 | +------------------------+------------+------------------+------------------+ | 0.21384512 | 0.93457112 | 0.64978097 | 0.00480489 | +------------------+------------------+------------------+------------------+ |
AUTOML_CLASSIFIER
Formato output della previsione | Campione di output |
---|---|
+------------------------------------------+ | predictions | +------------------------------------------+ | [{"scores":[FLOAT], "classes":[STRING]}] | +------------------------------------------+ |
+---------------------------------------------+ | predictions | +---------------------------------------------+ | [{"scores":[1, 2], "classes":['a', 'b']}, | | {"scores":[3, 0.2], "classes":['a', 'b']}] | +---------------------------------------------+ |
AUTOML_REGRESSOR
Formato output della previsione | Campione di output |
---|---|
+-----------------+ | predictions | +-----------------+ | [FLOAT] | +-----------------+ |
+-----------------+ | predictions | +-----------------+ | [1.8, 2.46] | +-----------------+ |
BOOSTED_TREE_CLASSIFIER
Formato output della previsione | Campione di output |
---|---|
+-------------+--------------+-----------------+ | LABEL_PROBS | LABEL_VALUES | PREDICTED_LABEL | +-------------+--------------+-----------------+ | [FLOAT] | [STRING] | STRING | +-------------+--------------+-----------------+ |
+-------------+--------------+-----------------+ | LABEL_PROBS | LABEL_VALUES | PREDICTED_LABEL | +-------------+--------------+-----------------+ | [0.1, 0.9] | ['a', 'b'] | ['b'] | +-------------+--------------+-----------------+ | [0.8, 0.2] | ['a', 'b'] | ['a'] | +-------------+--------------+-----------------+ |
BOOSTED_TREE_REGRESSOR
Formato output della previsione | Campione di output |
---|---|
+-----------------+ | predicted_label | +-----------------+ | FLOAT | +-----------------+ |
+-----------------+ | predicted_label | +-----------------+ | [1.8] | +-----------------+ | [2.46] | +-----------------+ |
DNN_CLASSIFICAZIONE
Formato output della previsione | Campione di output |
---|---|
+---------------+-------------+-----------+---------+------------------------+--------+---------------+ | ALL_CLASS_IDS | ALL_CLASSES | CLASS_IDS | CLASSES | LOGISTIC (binary only) | LOGITS | PROBABILITIES | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ | [INT64] | [STRING] | INT64 | STRING | FLOAT | [FLOAT]| [FLOAT] | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ |
+---------------+-------------+-----------+---------+------------------------+--------+---------------+ | ALL_CLASS_IDS | ALL_CLASSES | CLASS_IDS | CLASSES | LOGISTIC (binary only) | LOGITS | PROBABILITIES | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ | [0, 1] | ['a', 'b'] | [0] | ['a'] | [0.36] | [-0.53]| [0.64, 0.36] | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ | [0, 1] | ['a', 'b'] | [0] | ['a'] | [0.2] | [-1.38]| [0.8, 0.2] | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ |
DNN_REGRESSOR
Formato output della previsione | Campione di output |
---|---|
+-----------------+ | PREDICTED_LABEL | +-----------------+ | FLOAT | +-----------------+ |
+-----------------+ | PREDICTED_LABEL | +-----------------+ | [1.8] | +-----------------+ | [2.46] | +-----------------+ |
DNN_LINEAR_COMBINED_CLASSIFIER
Formato output della previsione | Campione di output |
---|---|
+---------------+-------------+-----------+---------+------------------------+--------+---------------+ | ALL_CLASS_IDS | ALL_CLASSES | CLASS_IDS | CLASSES | LOGISTIC (binary only) | LOGITS | PROBABILITIES | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ | [INT64] | [STRING] | INT64 | STRING | FLOAT | [FLOAT]| [FLOAT] | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ |
+---------------+-------------+-----------+---------+------------------------+--------+---------------+ | ALL_CLASS_IDS | ALL_CLASSES | CLASS_IDS | CLASSES | LOGISTIC (binary only) | LOGITS | PROBABILITIES | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ | [0, 1] | ['a', 'b'] | [0] | ['a'] | [0.36] | [-0.53]| [0.64, 0.36] | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ | [0, 1] | ['a', 'b'] | [0] | ['a'] | [0.2] | [-1.38]| [0.8, 0.2] | +---------------+-------------+-----------+---------+------------------------+--------+---------------+ |
DNN_LINEAR_COMBINED_REGRESSOR
Formato output della previsione | Campione di output |
---|---|
+-----------------+ | PREDICTED_LABEL | +-----------------+ | FLOAT | +-----------------+ |
+-----------------+ | PREDICTED_LABEL | +-----------------+ | [1.8] | +-----------------+ | [2.46] | +-----------------+ |
KMEAN
Formato output della previsione | Campione di output |
---|---|
+--------------------+--------------+---------------------+ | CENTROID_DISTANCES | CENTROID_IDS | NEAREST_CENTROID_ID | +--------------------+--------------+---------------------+ | [FLOAT] | [INT64] | INT64 | +--------------------+--------------+---------------------+ |
+--------------------+--------------+---------------------+ | CENTROID_DISTANCES | CENTROID_IDS | NEAREST_CENTROID_ID | +--------------------+--------------+---------------------+ | [1.2, 1.3] | [1, 2] | [1] | +--------------------+--------------+---------------------+ | [0.4, 0.1] | [1, 2] | [2] | +--------------------+--------------+---------------------+ |
REGAR_REG
Formato output della previsione | Campione di output |
---|---|
+-----------------+ | PREDICTED_LABEL | +-----------------+ | FLOAT | +-----------------+ |
+-----------------+ | PREDICTED_LABEL | +-----------------+ | [1.8] | +-----------------+ | [2.46] | +-----------------+ |
LOGISTIC_REG
Formato output della previsione | Campione di output |
---|---|
+-------------+--------------+-----------------+ | LABEL_PROBS | LABEL_VALUES | PREDICTED_LABEL | +-------------+--------------+-----------------+ | [FLOAT] | [STRING] | STRING | +-------------+--------------+-----------------+ |
+-------------+--------------+-----------------+ | LABEL_PROBS | LABEL_VALUES | PREDICTED_LABEL | +-------------+--------------+-----------------+ | [0.1, 0.9] | ['a', 'b'] | ['b'] | +-------------+--------------+-----------------+ | [0.8, 0.2] | ['a', 'b'] | ['a'] | +-------------+--------------+-----------------+ |
MATRIX_FACTORIZATION
Nota: al momento supportiamo solo l'acquisizione di un utente di input e l'esecuzione di oltre 50 coppie (prevedito_rating, predict_item) ordinate da predict_rating in ordine decrescente.
Formato output della previsione | Campione di output |
---|---|
+--------------------+--------------+ | PREDICTED_RATING | PREDICTED_ITEM | +------------------+----------------+ | [FLOAT] | [STRING] | +------------------+----------------+ |
+--------------------+--------------+ | PREDICTED_RATING | PREDICTED_ITEM | +------------------+----------------+ | [5.5, 1.7] | ['A', 'B'] | +------------------+----------------+ | [7.2, 2.7] | ['B', 'A'] | +------------------+----------------+ |
TENSORFLOW (importato)
Formato output della previsione |
---|
Uguale al modello importato |
PCA
Formato output della previsione | Campione di output |
---|---|
+-------------------------+---------------------------------+ | PRINCIPAL_COMPONENT_IDS | PRINCIPAL_COMPONENT_PROJECTIONS | +-------------------------+---------------------------------+ | [INT64] | [FLOAT] | +-------------------------+---------------------------------+ |
+-------------------------+---------------------------------+ | PRINCIPAL_COMPONENT_IDS | PRINCIPAL_COMPONENT_PROJECTIONS | +-------------------------+---------------------------------+ | [1, 2] | [1.2, 5.0] | +-------------------------+---------------------------------+ |
Visualizzazione del modello XGBoost
Puoi visualizzare gli alberi potenziati con l'API plot_tree Python dopo l'esportazione del modello. Ad esempio, puoi utilizzare Colab senza installare le dipendenze:
- Esporta il modello ad albero potenziato in un bucket Cloud Storage.
- Scarica il file
model.bst
dal bucket Cloud Storage. - In un notelab Colab, carica il file
model.bst
suFiles
. Esegui il codice seguente nel blocco note:
import xgboost as xgb import matplotlib.pyplot as plt model = xgb.Booster(model_file="model.bst") num_iterations = <iteration_number> for tree_num in range(num_iterations): xgb.plot_tree(model, num_trees=tree_num) plt.show
Questo esempio mostra più alberi (un albero per iterazione):
Al momento non salviamo i nomi delle caratteristiche nel modello, quindi vedrai nomi quali "quot";00", " "f1" e così via. Puoi trovare i nomi delle funzionalità corrispondenti nel file esportato assets/model_metadata.json
utilizzando questi nomi (come "f0") come indici.
Autorizzazioni obbligatorie
Per esportare un modello BigQuery ML in Cloud Storage, devi avere le autorizzazioni necessarie per accedere al modello BigQuery ML, autorizzazioni per eseguire un job di esportazione e autorizzazioni per scrivere i dati nel bucket Cloud Storage.
Autorizzazioni BigQuery
Per esportare il modello, devi disporre almeno delle autorizzazioni di
bigquery.models.export
. Vengono concesse le seguenti autorizzazioni IAM predefinite abigquery.models.export
:bigquery.dataViewer
bigquery.dataOwner
bigquery.dataEditor
bigquery.admin
Per eseguire un job di esportazione, devi disporre almeno delle autorizzazioni
bigquery.jobs.create
. Ai seguenti ruoli IAM predefiniti vengono concesse autorizzazionibigquery.jobs.create
:bigquery.user
bigquery.jobUser
bigquery.admin
Autorizzazioni di Cloud Storage
Per scrivere i dati in un bucket Cloud Storage esistente, devi disporre delle autorizzazioni
storage.objects.create
. Ai seguenti ruoli IAM predefiniti vengono concesse autorizzazionistorage.objects.create
:storage.objectCreator
storage.objectAdmin
storage.admin
Per ulteriori informazioni sui ruoli IAM e sulle autorizzazioni in BigQuery ML, consulta Controllo dell'accesso. Per ulteriori informazioni sui ruoli a livello di set di dati, consulta Ruoli di base per i set di dati nella documentazione di BigQuery.
Considerazioni sulla località
Quando scegli una posizione per i tuoi dati, tieni presente quanto segue:
- Coordina i bucket Cloud Storage per esportare i dati.
- Quando esporti dati, il bucket Cloud Storage a livello di una o più aree geografiche deve trovarsi nella stessa località del set di dati BigQuery ML. Ad esempio, se il set di dati BigQuery ML si trova in una località con più aree geografiche dell'UE, il bucket Cloud Storage contenente i dati che stai esportando deve trovarsi in una località a singola area geografica o a più aree geografiche nell'UE.
- Se il set di dati si trova in una località a livello di area geografica, il bucket Cloud Storage deve essere un bucket a livello di area geografica nella stessa località. Ad esempio, se il set di dati si trova nell'area geografica di Tokyo, il bucket Cloud Storage deve essere un bucket a livello di area geografica a Tokyo.
- Eccezione: se il set di dati si trova in una località con più aree geografiche negli Stati Uniti, puoi esportare i dati in un bucket Cloud Storage in qualsiasi località con una o più aree geografiche.
- Sviluppa un piano di gestione dei dati.
- Se scegli una risorsa di archiviazione a livello di area geografica, come un set di dati BigQuery ML o un bucket Cloud Storage, sviluppa un piano per la gestione geografica dei dati.
Per ulteriori informazioni sulle località di Cloud Storage, consulta la sezione Località dei bucket nella documentazione di Cloud Storage.
Spostamento di dati BigQuery tra località diverse
Non puoi modificare la posizione di un set di dati dopo averlo creato, ma puoi crearne una copia.
Criteri per le quote
Per informazioni sulle quote dei job di esportazione, consulta Esportazione dei job nella pagina Quote e limiti.
Prezzi
Non è previsto alcun costo per esportare i modelli BigQuery ML, ma le esportazioni sono soggette alle quote e ai limiti di BigQuery. Per ulteriori informazioni sui prezzi di BigQuery, consulta la pagina Prezzi.
Dopo l'esportazione, i costi vengono addebitati per l'archiviazione dei dati in Cloud Storage. Per ulteriori informazioni sui prezzi di Cloud Storage, consulta la pagina dei prezzi di Cloud Storage.
Passaggi successivi
- Esplora il tutorial sull'esportazione di un modello BigQuery ML per la previsione online.