Esportazione di modelli

Questa pagina descrive come utilizzare AutoML Tables per esportare il modello personalizzato in Cloud Storage, scaricare il modello sul server e usare Docker per rendere il modello disponibile per le previsioni.

Il modello esportato può essere eseguito solo su CPU con architettura x86 che supportano Set di istruzioni Advanced Vector Extensions (AVX).

Introduzione

Di seguito sono riportati i passaggi per esportare il modello:

  1. Esporta il modello.
  2. Esegui il server del modello.
  3. Richiedi previsioni.

Prima di iniziare

Prima di poter completare questa attività, devi aver completato le seguenti attività:

  • Configura il progetto come descritto in Prima di iniziare.
  • Addestra il modello che vuoi scaricare.
  • Installa e inizializza Google Cloud CLI sul server che utilizzerai per per eseguire il modello esportato.
  • Installa Docker sul tuo server.
  • Esegui il pull dell'immagine Docker del server del modello AutoML Tables:

    sudo docker pull gcr.io/cloud-automl-tables-public/model_server
    

Esportazione di un modello

Non puoi esportare un modello creato prima del 23 agosto 2019.

Console

  1. Vai alla pagina AutoML Tables nella console Google Cloud.

    Vai alla pagina AutoML Tables

  2. Seleziona la scheda Modelli nel riquadro di navigazione a sinistra.

  3. Nel menu Altre azioni del modello da esportare, fai clic su Modello di esportazione.

    Menu Altre azioni con Esporta modello

  4. Seleziona o crea una cartella Cloud Storage nell'elenco in ogni località.

    Il bucket deve soddisfare i requisiti dei bucket.

    Non puoi esportare un modello in un bucket di primo livello. Devi utilizzare almeno a un livello della cartella.

  5. Fai clic su Esporta.

    Finestra di esportazione del modello

    Nella sezione successiva scaricherai il modello esportato sul tuo server.

REST

Puoi utilizzare models.export per esportare un modello in di archiviazione ideale in Cloud Storage.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • endpoint: automl.googleapis.com per la località globale e eu-automl.googleapis.com per la regione UE.
  • project-id: l'ID del tuo progetto Google Cloud.
  • location: la località della risorsa: us-central1 per tutto il mondo o eu per l'Unione europea.
  • model-id: l'ID del modello di cui vuoi eseguire il deployment. Ad esempio: TBL543.
  • gcs-destination : la tua cartella di destinazione in di archiviazione ideale in Cloud Storage. Ad esempio, gs://export-bucket/exports.

    Non puoi esportare un modello in un bucket di primo livello. Devi utilizzare almeno a un livello della cartella.

Metodo HTTP e URL:

POST https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:export

Corpo JSON della richiesta:

{
  "outputConfig": {
    "modelFormat": "tf_saved_model",
    "gcsDestination": {
      "outputUriPrefix": "gcs-destination"
    }
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:export"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:export" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/292381/locations/us-central1/operations/TBL543",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2019-12-30T18:23:47.728373Z",
    "updateTime": "2019-12-30T18:23:47.728373Z",
    "worksOn": [
      "projects/292381/locations/us-central1/models/TBL543"
    ],
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "gs://export-bucket/exports/model-export/tbl/tf_saved_model-automl_integration_test_model-2019-12-30T18:23:47.461Z/"
      }
    },
    "state": "RUNNING"
  }
}

L'esportazione di un modello è un'operazione a lunga esecuzione. Puoi eseguire il polling per verificare lo stato dell'operazione o attendere che venga eseguita return. Scopri di più.

Esegui il server del modello

In questa attività scaricherai il modello esportato da Cloud Storage e avviare il container Docker, in modo che il modello sia pronto per ricevere le previsioni richieste.

Il modello deve essere eseguito all'interno di un container Docker.

Per eseguire il server del modello:

  1. Sulla macchina in cui eseguirai il modello, passa alla directory in cui vuoi salvare il modello esportato.

  2. Scarica il modello esportato:

    gsutil cp -r gcs-destination/* .

    Dove gcs-destination è il percorso della posizione del file esportato in Cloud Storage. Ad esempio:

    gsutil cp -r gs://export-us-central1/models/* .
    

    Il modello viene copiato nella directory corrente, nel seguente percorso:

    ./model-export/tbl/tf_saved_model-<model-name>-<export-timestamp>

  3. Rinomina la directory che contiene il timestamp.

    mv model-export/tbl/tf_saved_model-<model-name>-<export-timestamp> model-export/tbl/<new-dir-name>
    

    Il formato del timestamp rende la directory non valida per Docker.

  4. Avvia il container Docker utilizzando il nome della directory che hai appena creato:

    docker run -v `pwd`/model-export/tbl/new_folder_name:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
    

Puoi arrestare il server del modello in qualsiasi momento utilizzando Ctrl-C.

Aggiornamento del container Docker server del modello in corso...

Poiché scarichi il container Docker del server del modello quando esporti devi aggiornare esplicitamente il server del modello per ottenere aggiornamenti e correzioni di bug. Devi aggiornare periodicamente il server del modello, utilizzando il seguente comando:

    docker pull gcr.io/cloud-automl-tables-public/model_server

Ottenere previsioni dal modello esportato

Il server del modello nel container di immagini AutoML Tables gestisce richieste di previsione e restituisce i risultati delle previsioni.

La previsione batch non è disponibile per i modelli esportati.

Formato dei dati di previsione

Fornisci i dati (campo payload) per la richiesta di previsione quanto segue Formato JSON:

{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }

I tipi di dati JSON richiesti dipendono dal tipo di dati AutoML Tables della colonna. Per maggiori dettagli, consulta Formato degli oggetti riga.

L'esempio seguente mostra una richiesta con tre colonne: una colonna categorica, un array numerico e uno struct. La richiesta include due righe.

{
  "instances": [
    {
      "categorical_col": "mouse",
      "num_array_col": [
        1,
        2,
        3
      ],
      "struct_col": {
        "foo": "piano",
        "bar": "2019-05-17T23:56:09.05Z"
      }
    },
    {
      "categorical_col": "dog",
      "num_array_col": [
        5,
        6,
        7
      ],
      "struct_col": {
        "foo": "guitar",
        "bar": "2019-06-17T23:56:09.05Z"
      }
    }
  ]
}

Invio della richiesta di previsione

  1. Inserisci i dati della richiesta in un file di testo, ad esempio tmp/request.json.

    Il numero di righe di dati nella richiesta di previsione, chiamata mini-batch dimensioni, influisce sulla latenza e sulla velocità effettiva di previsione. Più grande è il mini- della dimensione del batch, maggiori saranno la latenza e la velocità effettiva. Per ridurre la latenza, utilizza un di mini-batch più piccole. Per aumentare la velocità effettiva, aumenta il volume dimensioni. Le dimensioni più comuni dei mini-batch sono 1, 32, 64, 128, 256, 512, e 1024.

  2. Richiedi la previsione:

    curl -X POST --data @/tmp/request.json http://localhost:8080/predict
    

Formato dei risultati della previsione

Il formato dei risultati dipende dal tipo di modello.

Risultati del modello di classificazione

I risultati di previsione per i modelli di classificazione (binari e multiclasse) restituiscono un il punteggio di probabilità per ogni valore potenziale della colonna target. Devi determinare come usare i punteggi. Ad esempio, per ottenere una classificazione binaria dai punteggi forniti, Identificare un valore di soglia. Se esistono due classi, "A" e "B", dovresti classifica l'esempio come "A" se il punteggio di "A" è maggiore del valore scelto soglia e "B" negli altri casi. Per set di dati sbilanciati, la soglia potrebbe approccio al 100% o allo 0%.

Il payload dei risultati per un modello di classificazione è simile a questo esempio:

{
  "predictions": [
    {
      "scores": [
        0.539999994635582,
        0.2599999845027924,
        0.2000000208627896
      ],
      "classes": [
        "apple",
        "orange",
        "grape"
      ]
    },
    {
      "scores": [
        0.23999999463558197,
        0.35999998450279236,
        0.40000002086278963
      ],
      "classes": [
        "apple",
        "orange",
        "grape"
      ]
    }
  ]
}

Risultati del modello di regressione

Viene restituito un valore previsto per ogni riga valida della richiesta di previsione. Gli intervalli di previsione non vengono restituiti per i modelli esportati.

Il payload dei risultati per un modello di regressione è simile a questo esempio:

{
  "predictions": [
    3982.3662109375,
    3982.3662109375
  ]
}