Generazione di previsioni online con XGBoost

Questo esempio addestra un modello semplice per prevedere il livello di reddito di una persona in base al set di dati sul reddito censito. Dopo aver addestrato e salvato il modello in locale, ne esegui il deployment in AI Platform Prediction ed esegui una query per ottenere previsioni online.

Questi contenuti sono disponibili anche su GitHub come blocco note Jupyter.

Come portare il tuo modello in AI Platform Prediction

Puoi utilizzare il tuo modello in AI Platform Prediction per ottenere previsioni in cinque passaggi:

  • Salva il modello in un file
  • Carica il modello salvato in Cloud Storage
  • Crea una risorsa del modello su AI Platform Prediction
  • Crea una versione del modello, collegando il modello salvato
  • Fare una previsione online

Prima di iniziare

Completa i seguenti passaggi per configurare un account Google Cloud, attivare l'API AI Platform Prediction e installare e attivare Cloud SDK.

Configura il tuo progetto Google Cloud

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API AI Platform Training & Prediction and Compute Engine.

    Abilita le API

  5. Installa Google Cloud CLI.
  6. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  9. Abilita le API AI Platform Training & Prediction and Compute Engine.

    Abilita le API

  10. Installa Google Cloud CLI.
  11. Per initialize gcloud CLI, esegui questo comando:

    gcloud init

Configura l'ambiente

Scegli una delle opzioni seguenti per configurare il tuo ambiente localmente su macOS o in un ambiente remoto su Cloud Shell.

Per gli utenti di macOS, consigliamo di configurare l'ambiente utilizzando la scheda MACOS riportata di seguito. Cloud Shell, mostrato nella scheda CLOUD SHELL, è disponibile su macOS, Linux e Windows. Cloud Shell offre un modo rapido per provare AI Platform Prediction, ma non è adatto per il lavoro di sviluppo continuo.

macOS

  1. Controlla l'installazione di Python
    Verifica di aver installato Python e, se necessario, installalo.

    python -V
  2. Controlla l'installazione di pip
    pip è il gestore di pacchetti di Python, incluso nelle versioni attuali di Python. Verifica se hai già installato pip eseguendo pip --version. In caso contrario, scopri come installare pip.

    Puoi eseguire l'upgrade di pip utilizzando il seguente comando:

    pip install -U pip

    Consulta la documentazione pip per ulteriori dettagli.

  3. Installa virtualenv
    virtualenv è uno strumento per creare ambienti Python isolati. Verifica se hai già installato virtualenv eseguendo virtualenv --version. In caso contrario, installa virtualenv:

    pip install --user --upgrade virtualenv

    Per creare un ambiente di sviluppo isolato per questa guida, crea un nuovo ambiente virtuale in virtualenv. Ad esempio, il seguente comando attiva un ambiente denominato aip-env:

    virtualenv aip-env
    source aip-env/bin/activate
  4. Ai fini di questo tutorial, esegui il resto dei comandi all'interno del tuo ambiente virtuale.

    Leggi ulteriori informazioni sull'utilizzo di virtualenv. Per uscire da virtualenv, esegui deactivate.

Cloud Shell

  1. Apri la console Google Cloud.

    Console Google Cloud

  2. Fai clic sul pulsante Attiva Google Cloud Shell nella parte superiore della finestra della console.

    Attiva Google Cloud Shell

    All'interno di un nuovo frame nella parte inferiore della console si apre una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. L'inizializzazione della sessione della shell può richiedere alcuni secondi.

    Sessione di Cloud Shell

    La sessione Cloud Shell è pronta per l'uso.

  3. Configura lo strumento a riga di comando gcloud per utilizzare il progetto selezionato.

    gcloud config set project [selected-project-id]

    dove [selected-project-id] è l'ID progetto. Ometti le parentesi che racchiudono il testo.

Installa framework

macOS

All'interno del tuo ambiente virtuale, esegui questo comando per installare le versioni di scikit-learn, XGBoost e pandas utilizzate nella versione 2.11 di AI Platform Prediction:

(aip-env)$ pip install scikit-learn==1.0.2 xgboost==1.6.2 pandas==1.3.5

Fornendo i numeri di versione nel comando precedente, ti assicuri che le dipendenze nel tuo ambiente virtuale corrispondano a quelle nella versione del runtime. Ciò aiuta a prevenire comportamenti imprevisti quando il codice viene eseguito su AI Platform Prediction.

Per ulteriori dettagli, opzioni di installazione e informazioni sulla risoluzione dei problemi, consulta le istruzioni di installazione per ciascun framework:

Cloud Shell

Esegui questo comando per installare scikit-learn, XGBoost e pandas:

pip install --user scikit-learn xgboost pandas

Per ulteriori dettagli, opzioni di installazione e informazioni sulla risoluzione dei problemi, consulta le istruzioni di installazione per ciascun framework:

Scarica i dati

Il set di dati sul reddito del censimento utilizzato da questo esempio per l'addestramento è ospitato dal repository UC Irvine Machine Learning. Per saperne di più, consulta Informazioni sui dati.

  • Il file di addestramento è adult.data
  • Il file di valutazione è adult.test

Addestra e salva un modello

Per addestrare e salvare un modello, completa i seguenti passaggi:

  1. Carica i dati in un DataFrame pandas per prepararli all'utilizzo con XGBoost.
  2. Addestra un modello semplice in XGBoost.
  3. Salva il modello in un file che può essere caricato in AI Platform Prediction.

Se hai già un modello addestrato da caricare, scopri come esportare il modello.

Carica e trasforma i dati

In questo passaggio, caricherai i set di dati di addestramento e test in un DataFrame pandas e trasformerai i dati categorici in caratteristiche numeriche per prepararli all'uso con il modello.

import json
import numpy as np
import os
import pandas as pd
import pickle
import xgboost as xgb
from sklearn.preprocessing import LabelEncoder

# these are the column labels from the census data files
COLUMNS = (
    'age',
    'workclass',
    'fnlwgt',
    'education',
    'education-num',
    'marital-status',
    'occupation',
    'relationship',
    'race',
    'sex',
    'capital-gain',
    'capital-loss',
    'hours-per-week',
    'native-country',
    'income-level'
)

# categorical columns contain data that need to be turned into numerical
# values before being used by XGBoost
CATEGORICAL_COLUMNS = (
    'workclass',
    'education',
    'marital-status',
    'occupation',
    'relationship',
    'race',
    'sex',
    'native-country'
)

# load training set
with open('./census_data/adult.data', 'r') as train_data:
    raw_training_data = pd.read_csv(train_data, header=None, names=COLUMNS)
# remove column we are trying to predict ('income-level') from features list
train_features = raw_training_data.drop('income-level', axis=1)
# create training labels list
train_labels = (raw_training_data['income-level'] == ' >50K')

# load test set
with open('./census_data/adult.test', 'r') as test_data:
    raw_testing_data = pd.read_csv(test_data, names=COLUMNS, skiprows=1)
# remove column we are trying to predict ('income-level') from features list
test_features = raw_testing_data.drop('income-level', axis=1)
# create training labels list
test_labels = (raw_testing_data['income-level'] == ' >50K.')

# convert data in categorical columns to numerical values
encoders = {col:LabelEncoder() for col in CATEGORICAL_COLUMNS}
for col in CATEGORICAL_COLUMNS:
    train_features[col] = encoders[col].fit_transform(train_features[col])
for col in CATEGORICAL_COLUMNS:
    test_features[col] = encoders[col].fit_transform(test_features[col])

Addestra ed esporta il modello

Per esportare il modello, puoi utilizzare il metodo save_model dell'oggetto Booster o la libreria pickle Python.

# load data into DMatrix object
dtrain = xgb.DMatrix(train_features, train_labels)
dtest = xgb.DMatrix(test_features)

# train XGBoost model
bst = xgb.train({}, dtrain, 20)
bst.save_model('./model.bst')

Requisiti per la denominazione dei file del modello

Il file del modello salvato che carichi in Cloud Storage deve essere denominato model.pkl, model.joblib o model.bst, a seconda della libreria utilizzata. Questa limitazione garantisce che AI Platform Prediction utilizzi lo stesso pattern per ricostruire il modello all'importazione utilizzato durante l'esportazione.

Libreria utilizzata per esportare il modello Nome del modello corretto
pickle model.pkl
sklearn.exeternals.joblib model.joblib
xgboost.Booster model.bst

Per iterazioni future del modello, organizza il bucket Cloud Storage in modo che ogni nuovo modello abbia una directory dedicata.

Archivia il modello in Cloud Storage

Ai fini di questo tutorial, il modo più semplice è utilizzare un bucket Cloud Storage dedicato nello stesso progetto che utilizzi per AI Platform Prediction.

Se utilizzi un bucket in un altro progetto, devi assicurarti che l'account di servizio AI Platform Prediction possa accedere al tuo modello in Cloud Storage. Senza le autorizzazioni appropriate, la richiesta di creazione di una versione del modelloAI Platform Predictionm non va a buon fine. Scopri di più su come concedere autorizzazioni per lo spazio di archiviazione.

Configura il bucket Cloud Storage

Questa sezione mostra come creare un nuovo bucket. Puoi utilizzare un bucket esistente, ma deve trovarsi nella stessa regione in cui prevedi di eseguire job AI Platform. Inoltre, se non fa parte del progetto che stai utilizzando per eseguire AI Platform Prediction, devi concedere esplicitamente l'accesso agli account di servizio AI Platform Prediction.

  1. Specifica un nome per il nuovo bucket. Il nome deve essere univoco in tutti i bucket in Cloud Storage.

    BUCKET_NAME="YOUR_BUCKET_NAME"

    Ad esempio, utilizza il nome del progetto con -aiplatform aggiunto:

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-aiplatform
  2. Controlla il nome del bucket che hai creato.

    echo $BUCKET_NAME
  3. Seleziona una regione per il bucket e imposta una variabile di ambiente REGION.

    Utilizza la stessa regione in cui prevedi di eseguire job di AI Platform Prediction. Consulta le regioni disponibili per i servizi di AI Platform Prediction.

    Ad esempio, il codice seguente crea REGION e lo imposta su us-central1:

    REGION=us-central1
  4. Crea il nuovo bucket:

    gsutil mb -l $REGION gs://$BUCKET_NAME

Carica il file del modello esportato in Cloud Storage

Esegui questo comando per caricare nel tuo bucket in Cloud Storage il modello esportato in precedenza in questo tutorial:

gsutil cp ./model.bst gs://$BUCKET_NAME/model.bst

Puoi utilizzare lo stesso bucket Cloud Storage per più file del modello. Ogni file del modello deve trovarsi all'interno della propria directory all'interno del bucket.

Formattare i dati per la previsione

Prima di inviare una richiesta di previsione online, devi formattare i dati di test per prepararli all'utilizzo da parte del servizio di previsione AI Platform Prediction. Assicurati che il formato delle istanze di input corrisponda a quello previsto dal modello.

gcloud

Crea un file input.json con ogni istanza di input su una riga separata. L'esempio seguente utilizza le prime dieci istanze di dati nell'elenco test_features definito nei passaggi precedenti.

    [25, "Private", 226802, "11th", 7, "Never-married", "Machine-op-inspct", "Own-child", "Black", "Male", 0, 0, 40, "United-States"]
    [38, "Private", 89814, "HS-grad", 9, "Married-civ-spouse", "Farming-fishing", "Husband", "White", "Male", 0, 0, 50, "United-States"]
    [28, "Local-gov", 336951, "Assoc-acdm", 12, "Married-civ-spouse", "Protective-serv", "Husband", "White", "Male", 0, 0, 40, "United-States"]
    [44, "Private", 160323, "Some-college", 10, "Married-civ-spouse", "Machine-op-inspct", "Husband", "Black", "Male", 7688, 0, 40, "United-States"]
    [18, "?", 103497, "Some-college", 10, "Never-married", "?", "Own-child", "White", "Female", 0, 0, 30, "United-States"]
    [34, "Private", 198693, "10th", 6, "Never-married", "Other-service", "Not-in-family", "White", "Male", 0, 0, 30, "United-States"]
    [29, "?", 227026, "HS-grad", 9, "Never-married", "?", "Unmarried", "Black", "Male", 0, 0, 40, "United-States"]
    [63, "Self-emp-not-inc", 104626, "Prof-school", 15, "Married-civ-spouse", "Prof-specialty", "Husband", "White", "Male", 3103, 0, 32, "United-States"]
    [24, "Private", 369667, "Some-college", 10, "Never-married", "Other-service", "Unmarried", "White", "Female", 0, 0, 40, "United-States"]
    [55, "Private", 104996, "7th-8th", 4, "Married-civ-spouse", "Craft-repair", "Husband", "White", "Male", 0, 0, 10, "United-States"]

Tieni presente che il formato delle istanze di input deve corrispondere a quello previsto dal modello. In questo esempio, il modello di censimento richiede 14 caratteristiche, quindi l'input deve essere una matrice di forma (num_instances, 14).

API REST

Crea un file input.json formattato con ogni istanza di input su una riga separata. L'esempio seguente utilizza le prime dieci istanze di dati nell'elenco test_features definito nei passaggi precedenti.

{
  "instances": [

    [25, "Private", 226802, "11th", 7, "Never-married", "Machine-op-inspct", "Own-child", "Black", "Male", 0, 0, 40, "United-States"],
    [38, "Private", 89814, "HS-grad", 9, "Married-civ-spouse", "Farming-fishing", "Husband", "White", "Male", 0, 0, 50, "United-States"],
    [28, "Local-gov", 336951, "Assoc-acdm", 12, "Married-civ-spouse", "Protective-serv", "Husband", "White", "Male", 0, 0, 40, "United-States"],
    [44, "Private", 160323, "Some-college", 10, "Married-civ-spouse", "Machine-op-inspct", "Husband", "Black", "Male", 7688, 0, 40, "United-States"],
    [18, "?", 103497, "Some-college", 10, "Never-married", "?", "Own-child", "White", "Female", 0, 0, 30, "United-States"],
    [34, "Private", 198693, "10th", 6, "Never-married", "Other-service", "Not-in-family", "White", "Male", 0, 0, 30, "United-States"],
    [29, "?", 227026, "HS-grad", 9, "Never-married", "?", "Unmarried", "Black", "Male", 0, 0, 40, "United-States"],
    [63, "Self-emp-not-inc", 104626, "Prof-school", 15, "Married-civ-spouse", "Prof-specialty", "Husband", "White", "Male", 3103, 0, 32, "United-States"],
    [24, "Private", 369667, "Some-college", 10, "Never-married", "Other-service", "Unmarried", "White", "Female", 0, 0, 40, "United-States"],
    [55, "Private", 104996, "7th-8th", 4, "Married-civ-spouse", "Craft-repair", "Husband", "White", "Male", 0, 0, 10, "United-States"]
  ]
}

Tieni presente che il formato delle istanze di input deve corrispondere a quello previsto dal modello. In questo esempio, il modello Census richiede 14 caratteristiche, quindi l'input deve essere una matrice di forma (num_instances, 14).

Leggi ulteriori informazioni sulla formattazione dell'input per la previsione online.

Testa il modello con previsioni locali

Puoi utilizzare il comando gcloud ai-platform local predict per verificare in che modo il modello gestisce le previsioni prima di eseguirne il deployment su AI Platform Prediction. Il comando utilizza le dipendenze del tuo ambiente locale per eseguire previsioni e restituisce i risultati nello stesso formato utilizzato da gcloud ai-platform predict per eseguire previsioni online. Testare le previsioni in locale può aiutarti a individuare gli errori prima di incorrere in costi per le richieste di previsione online.

Per l'argomento --model-dir, specifica una directory contenente il modello di machine learning esportato sulla tua macchina locale o in Cloud Storage. Per l'argomento --framework, specifica tensorflow, scikit-learn o xgboost. Non puoi utilizzare il comando gcloud ai-platform local predict con una routine di previsione personalizzata.

L'esempio seguente mostra come eseguire una previsione locale:

gcloud ai-platform local predict --model-dir LOCAL_OR_CLOUD_STORAGE_PATH_TO_MODEL_DIRECTORY/ \
  --json-instances LOCAL_PATH_TO_PREDICTION_INPUT.JSON \
  --framework NAME_OF_FRAMEWORK

Esegui il deployment di modelli e versioni

AI Platform Prediction organizza i modelli addestrati utilizzando le risorse di model e model. Un modello di previsione di AI Platform è un container per le versioni del modello di machine learning.

Per eseguire il deployment di un modello, crea una risorsa del modello in AI Platform Prediction, crea una versione del modello e collega la versione del modello al file del modello archiviato in Cloud Storage.

Crea una risorsa del modello

AI Platform Prediction utilizza le risorse del modello per organizzare le diverse versioni del modello.

A questo punto, devi decidere se le versioni dei modelli appartenenti a questo modello devono utilizzare un endpoint a livello di regione o l'endpoint globale. Nella maggior parte dei casi, scegli un endpoint a livello di regione. Se hai bisogno di funzionalità disponibili solo nei tipi di macchine legacy (MLS1), utilizza l'endpoint globale.

A questo punto, devi anche decidere se le versioni del modello appartenenti a questo modello devono esportare i log quando forniscono previsioni. I seguenti esempi non abilitano il logging. Scopri come abilitare il logging.

console

  1. Apri la pagina Modelli di AI Platform Prediction nella console Google Cloud:

    Vai alla pagina Modelli

  2. Fai clic sul pulsante Nuovo modello nella parte superiore della pagina Modelli. Accederai alla pagina Crea modello.

  3. Inserisci un nome univoco per il modello nel campo Nome modello.

  4. Quando è selezionata la casella di controllo Utilizza endpoint a livello di regione, AI Platform Prediction utilizza un endpoint a livello di regione. Per utilizzare invece l'endpoint globale, deseleziona la casella di controllo Utilizza endpoint a livello di regione.

  5. Nell'elenco a discesa Regione, seleziona una località per i nodi di previsione. Le regioni disponibili variano a seconda che utilizzi un endpoint a livello di regione o un endpoint globale.

  6. Fai clic su Crea.

  7. Verifica di essere tornato alla pagina Modelli e che il nuovo modello venga visualizzato nell'elenco.

gcloud

Endpoint a livello di regione

Esegui questo comando:

gcloud ai-platform models create MODEL_NAME \
  --region=REGION

Sostituisci quanto segue:

Se non specifichi il flag --region, gcloud CLI ti chiede di selezionare un endpoint a livello di regione (o di utilizzare us-central sull'endpoint globale).

In alternativa, puoi impostare la proprietà ai_platform/region su una regione specifica per assicurarti che gcloud CLI utilizzi sempre l'endpoint a livello di regione corrispondente per AI Platform Prediction, anche quando non specifichi il flag --region. (Questa configurazione non si applica ai comandi nel gruppo di comandi gcloud ai-platform operations.)

Endpoint globale

Esegui questo comando:

gcloud ai-platform models create MODEL_NAME \
  --regions=REGION

Sostituisci quanto segue:

Se non specifichi il flag --regions, gcloud CLI ti chiede di selezionare un endpoint a livello di regione (o di utilizzare us-central1 sull'endpoint globale).

API REST

Endpoint a livello di regione

  1. Formatta la richiesta inserendo l'oggetto modello nel corpo della richiesta. Specifica almeno un nome per il modello sostituendo MODEL_NAME nell'esempio seguente:

    {
      "name": "MODEL_NAME"
    }
    
  2. Effettua una chiamata API REST all'URL seguente, sostituendo PROJECT_ID con l'ID progetto Google Cloud:

    POST https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    Sostituisci quanto segue:

    Ad esempio, puoi effettuare la richiesta seguente utilizzando il comando curl. Questo comando autorizza la richiesta utilizzando le credenziali associate all'installazione di Google Cloud CLI.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    L'API restituisce una risposta simile alla seguente:

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

Endpoint globale

  1. Formatta la richiesta inserendo l'oggetto modello nel corpo della richiesta. Come minimo, specifica un nome per il modello sostituendo MODEL_NAME nell'esempio seguente e specifica una regione sostituendo REGION con una regione che supporta i tipi di macchina legacy (MLS1):

    {
      "name": "MODEL_NAME",
      "regions": ["REGION"]
    }
    
  2. Effettua una chiamata API REST all'URL seguente, sostituendo PROJECT_ID con l'ID progetto Google Cloud:

    POST https://ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    Ad esempio, puoi effettuare la richiesta seguente utilizzando il comando curl. Questo comando autorizza la richiesta utilizzando le credenziali associate all'installazione di Google Cloud CLI.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME", "regions": ["REGION"]}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    L'API restituisce una risposta simile alla seguente:

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

Per ulteriori dettagli, consulta l'API del modello AI Platform Prediction.

Crea una versione del modello

Ora è tutto pronto per creare una versione del modello con il modello addestrato che hai caricato in precedenza su Cloud Storage. Quando crei una versione, puoi specificare un numero di parametri. Il seguente elenco descrive i parametri comuni, alcuni dei quali sono obbligatori:

  • name: deve essere univoco all'interno del modello di AI Platform Prediction.
  • deploymentUri: il percorso della directory del modello in Cloud Storage.

    • Se esegui il deployment di un modello TensorFlow, si tratta di una directory salvataModel.
    • Se esegui il deployment di un modello scikit-learn o XGBoost, questa è la directory contenente il file model.joblib, model.pkl o model.bst.
    • Se esegui il deployment di una routine di previsione personalizzata, questa è la directory che contiene tutti gli artefatti del modello. La dimensione totale di questa directory deve essere di 500 MB o inferiore.
  • framework: TENSORFLOW, SCIKIT_LEARN o XGBOOST.

  • runtimeVersion: una versione di runtime basata sulle dipendenze necessarie al modello. Se esegui il deployment di un modello scikit-learn o di un modello XGBoost, il valore minimo è 1,4. Se prevedi di utilizzare la versione del modello per la previsione batch, devi utilizzare la versione 2.1 o precedente del runtime.

  • pythonVersion: deve essere impostato su "3.5" (per le versioni di runtime dalla 1.4 alla 1.14) o "3.7" (per le versioni del runtime 1.15 e successive) per essere compatibile con i file del modello esportati utilizzando Python 3. Può anche essere impostato su "2.7" se utilizzato con la versione 1.15 o precedente del runtime.

  • machineType (facoltativo): il tipo di macchina virtuale utilizzata da AI Platform Prediction per i nodi che forniscono le previsioni. Scopri di più sui tipi di macchine. Se non viene configurato, il valore predefinito è n1-standard-2 sugli endpoint a livello di regione e mls1-c1-m2 sull'endpoint globale.

Leggi ulteriori informazioni su ciascuno di questi parametri, nonché su altri parametri meno comuni, nella documentazione di riferimento API per la risorsa della versione.

Inoltre, se hai creato il modello su un endpoint a livello di regione, assicurati di creare anche la versione sullo stesso endpoint a livello di regione.

console

  1. Apri la pagina Modelli di AI Platform Prediction nella console Google Cloud:

    Vai alla pagina Modelli

  2. Nella pagina Modelli, seleziona il nome della risorsa del modello che vuoi utilizzare per creare la tua versione. Viene visualizzata la pagina Dettagli modello.

  3. Fai clic sul pulsante Nuova versione nella parte superiore della pagina Dettagli modello. Viene visualizzata la pagina Crea versione.

  4. Inserisci il nome della versione nel campo Nome. Se vuoi, inserisci una descrizione per la versione nel campo Descrizione.

  5. Inserisci le seguenti informazioni su come hai addestrato il modello nelle caselle a discesa corrispondenti:

  6. Seleziona un tipo di macchina per eseguire la previsione online.

  7. Nel campo URI del modello, inserisci la località del bucket Cloud Storage in cui hai caricato il file del modello. Puoi utilizzare il pulsante Sfoglia per trovare il percorso corretto.

    Assicurati di specificare il percorso della directory contenente il file, non il percorso del file del modello stesso. Ad esempio, utilizza gs://your_bucket_name/model-dir/ anziché gs://your_bucket_name/model-dir/saved_model.pb o gs://your_bucket_name/model-dir/model.pkl.

  8. Seleziona un'opzione di Scalabilità per l'implementazione della previsione online:

    • Se selezioni "Scalabilità automatica", viene visualizzato il campo facoltativo Numero minimo di nodi. Puoi inserire il numero minimo di nodi da mantenere in esecuzione sempre dopo lo scale down del servizio.

    • Se selezioni "Scalabilità manuale", devi inserire il numero di nodi che vuoi mantenere sempre in esecuzione.

    Scopri come le opzioni di scalabilità variano in base al tipo di macchina.

    Scopri di più sui prezzi dei costi di previsione.

  9. Per completare la creazione della versione del modello, fai clic su Salva.

gcloud

  1. Imposta le variabili di ambiente per archiviare il percorso della directory Cloud Storage in cui si trova il programma binario del modello, il nome del modello, il nome della versione e il framework scelto.

    Quando crei una versione con gcloud CLI, puoi fornire il nome del framework in lettere maiuscole con trattini bassi (ad esempio SCIKIT_LEARN) o in lettere minuscole con trattini (ad esempio scikit-learn). Entrambe le opzioni portano a un comportamento identico.

    Sostituisci [VALUES_IN_BRACKETS] con i valori appropriati:

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    FRAMEWORK="[YOUR-FRAMEWORK_NAME]"
    

  2. Crea la versione:

    gcloud ai-platform versions create $VERSION_NAME \
      --model=$MODEL_NAME \
      --origin=$MODEL_DIR \
      --runtime-version=2.11 \
      --framework=$FRAMEWORK \
      --python-version=3.7 \
      --region=REGION \
      --machine-type=MACHINE_TYPE
    

    Sostituisci quanto segue:

    La creazione della versione richiede alcuni minuti. Quando è pronto, dovresti vedere il seguente output:

    Creating version (this might take a few minutes)......done.
  3. Ottieni informazioni sulla tua nuova versione:

    gcloud ai-platform versions describe $VERSION_NAME \
      --model=$MODEL_NAME
    

    Dovresti vedere un output simile al seguente:

    createTime: '2018-02-28T16:30:45Z'
    deploymentUri: gs://your_bucket_name
    framework: [YOUR-FRAMEWORK-NAME]
    machineType: mls1-c1-m2
    name: projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]
    pythonVersion: '3.7'
    runtimeVersion: '2.11'
    state: READY

API REST

  1. Formatta il corpo della richiesta in modo che contenga l'oggetto versione. Questo esempio specifica le versioni name, deploymentUri, runtimeVersion, framework e machineType. Sostituisci [VALUES_IN_BRACKETS] con i valori appropriati:

    {
      "name": "[YOUR-VERSION-NAME]",
      "deploymentUri": "gs://your_bucket_name/",
      "runtimeVersion": "2.11",
      "framework": "[YOUR_FRAMEWORK_NAME]",
      "pythonVersion": "3.7",
      "machineType": "[YOUR_MACHINE_TYPE]"
    }
    
  2. Effettua la chiamata API REST al percorso seguente, sostituendo [VALUES_IN_BRACKETS] con i valori appropriati:

    POST https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions
    

    Sostituisci REGION con la regione dell'endpoint a livello di regione in cui hai creato il modello. Se hai creato il modello sull'endpoint globale, utilizza ml.googleapis.com.

    Ad esempio, puoi effettuare la richiesta seguente utilizzando il comando curl:

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "2.11", "framework": "[YOUR_FRAMEWORK_NAME]", "pythonVersion": "3.7", "machineType": "[YOUR_MACHINE_TYPE]"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions"
    

    La creazione della versione richiede alcuni minuti. Quando è pronto, dovresti vedere un output simile a questo:

    {
      "name": "projects/[YOUR-PROJECT-ID]/operations/create_[YOUR-MODEL-NAME]_[YOUR-VERSION-NAME]-[TIMESTAMP]",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.ml.v1.OperationMetadata",
        "createTime": "2018-07-07T02:51:50Z",
        "operationType": "CREATE_VERSION",
        "modelName": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]",
        "version": {
          "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]",
          "deploymentUri": "gs://your_bucket_name",
          "createTime": "2018-07-07T02:51:49Z",
          "runtimeVersion": "2.11",
          "framework": "[YOUR_FRAMEWORK_NAME]",
          "machineType": "[YOUR_MACHINE_TYPE]",
          "pythonVersion": "3.7"
        }
      }
    }
    

Invia richiesta di previsione online

Dopo aver creato correttamente una versione, AI Platform Prediction avvia un nuovo server pronto per gestire le richieste di previsione.

gcloud

  1. Imposta le variabili di ambiente per il nome del modello, del nome della versione e del nome del file di input. Sostituisci [VALUES_IN_BRACKETS] con i valori appropriati:

    MODEL_NAME="[YOUR-MODEL-NAME]"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    INPUT_FILE="input.json"
    
  2. Invia la richiesta di previsione:

    gcloud ai-platform predict --model $MODEL_NAME --version \
      $VERSION_NAME --json-instances $INPUT_FILE
    

Python

Questo esempio utilizza la libreria client Python per inviare richieste di previsione per l'intero set di dati Census e stampa i primi dieci risultati. Scopri di più su come utilizzare la libreria client di Python.

Sostituisci [VALUES_IN_BRACKETS] con i valori appropriati:

import googleapiclient.discovery

# Fill in your PROJECT_ID, VERSION_NAME and MODEL_NAME before running
# this code.

PROJECT_ID = [YOUR PROJECT_ID HERE]
VERSION_NAME = [YOUR VERSION_NAME HERE]
MODEL_NAME = [YOUR MODEL_NAME HERE]

service = googleapiclient.discovery.build('ml', 'v1')
name = 'projects/{}/models/{}'.format(PROJECT_ID, MODEL_NAME)
name += '/versions/{}'.format(VERSION_NAME)

response = service.projects().predict(
    name=name,
    body={'instances': data}
).execute()

if 'error' in response:
  print (response['error'])
else:
  online_results = response['predictions']

Per XGBoost, i risultati sono in virgola mobile che devono essere convertiti in valori booleani in base alla soglia appropriata per il modello. Ad esempio:

# convert floats to booleans
converted_responses = [x > 0.5 for x in online_results]

Ulteriori informazioni sui parametri di input della previsione sono disponibili nei dettagli delle richieste di previsione dell'API AI Platform Prediction.

Informazioni sui dati

Il set di dati sul reddito del censimento utilizzato da questo esempio per l'addestramento è ospitato dal repository UC Irvine Machine Learning.

Dati del censimento gentilmente concessi da: Lichman, M. (2013); Repository di machine learning per UCI http://archive.ics.uci.edu/ml. Irvine, California: University of California, School of Information and Computer Science. Questo set di dati è pubblicamente disponibile per l'utilizzo da parte di chiunque ai sensi dei seguenti termini indicati nell'origine set di dati: http://archive.ics.uci.edu/ml e viene fornito "così com'è", senza alcuna garanzia, espressa o implicita, da parte di Google. Google esclude qualsiasi responsabilità per eventuali danni, diretti o indiretti, derivanti dall'uso del set di dati.

Passaggi successivi