Exportar modelos

Esta página mostra-lhe como exportar modelos do BigQuery ML. Pode exportar modelos do BigQuery ML para o Cloud Storage e usá-los para previsões online ou editá-los em Python. Pode exportar um modelo do BigQuery ML das seguintes formas:

  • Usando a Trusted Cloud consola.
  • Usar a declaração EXPORT MODEL.
  • Usando o comando bq extract na ferramenta de linhas de comando bq.
  • Enviar uma tarefa extract através da API ou das bibliotecas cliente.

Pode exportar os seguintes tipos de modelos:

  • 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
  • RANDOM_FOREST_CLASSIFIER
  • RANDOM_FOREST_REGRESSOR
  • TENSORFLOW (modelos do TensorFlow importados)
  • PCA
  • TRANSFORM_ONLY

Formatos e amostras de modelos de exportação

A tabela seguinte mostra os formatos de destino de exportação para cada tipo de modelo do BigQuery ML e fornece um exemplo de ficheiros que são escritos no contentor do Cloud Storage.

Tipo de modelo Formato do modelo de exportação Exemplo de ficheiros exportados
AUTOML_CLASSIFIER TensorFlow SavedModel (TF 2.1.0) gcs_bucket/
  assets/
    f1.txt
    f2.txt
  saved_model.pb
  variables/
    variables.data-00-of-01
    variables.index
AUTOML_REGRESSOR
AUTOENCODER TensorFlow SavedModel (TF 1.15 ou superior)
DNN_CLASSIFIER
DNN_REGRESSOR
DNN_LINEAR_COMBINED_CLASSIFIER
DNN_LINEAR_COMBINED_REGRESSOR
KMEANS
LINEAR_REGRESSOR
LOGISTIC_REG
MATRIX_FACTORIZATION
PCA
TRANSFORM_ONLY
BOOSTED_TREE_CLASSIFIER Impulso (XGBoost 0.82) gcs_bucket/
  assets/
    0.txt
    1.txt
    model_metadata.json
  main.py
  model.bst
  xgboost_predictor-0.1.tar.gz
    ....
     predictor.py
    ....


main.py destina-se à execução local. Consulte o artigo Implementação de modelos para ver mais detalhes.
BOOSTED_TREE_REGRESSOR
RANDOM_FOREST_REGRESSOR
RANDOM_FOREST_REGRESSOR
TENSORFLOW (importado) TensorFlow SavedModel Exatamente os mesmos ficheiros que estavam presentes quando importou o modelo

Exporte o modelo preparado com o TRANSFORM

Se o modelo for treinado com a cláusula TRANSFORM, um modelo de pré-processamento adicional executa a mesma lógica na cláusula TRANSFORM e é guardado no formato TensorFlow SavedModel no subdiretório transform. Pode implementar um modelo preparado com a cláusula TRANSFORM no Vertex AI, bem como localmente. Para mais informações, consulte o artigo Implementação de modelos.

Formato do modelo de exportação Exemplo de ficheiros exportados
Modelo de previsão: TensorFlow SavedModel ou Booster (XGBoost 0.82).
Modelo de pré-processamento para a cláusula TRANSFORM: TensorFlow SavedModel (TF 2.5 ou superior)
gcs_bucket/
  ....(model files)
  transform/
    assets/
        f1.txt/
        f2.txt/
    saved_model.pb
    variables/
        variables.data-00-of-01
        variables.index

O modelo não contém as informações sobre a engenharia de funcionalidades realizada fora da cláusula TRANSFORM durante a preparação. Por exemplo, tudo o que estiver na declaração SELECT . Por isso, tem de converter manualmente os dados de entrada antes de os introduzir no modelo de pré-processamento.

Tipos de dados suportados

Quando exporta modelos preparados com a cláusula TRANSFORM, os seguintes tipos de dados são suportados para introdução na cláusula TRANSFORM.

Tipo de entrada TRANSFORM Amostras de entrada TRANSFORM Amostras de entrada do modelo de pré-processamento exportadas
INT64 10,
11
tf.constant(
  [10, 11],
  dtype=tf.int64)
NUMERIC NUMERIC 10,
NUMERIC 11
tf.constant(
  [10, 11],
  dtype=tf.float64)
BIGNUMERIC BIGNUMERIC 10,
BIGNUMERIC 11
tf.constant(
  [10, 11],
  dtype=tf.float64)
FLOAT64 10.0,
11.0
tf.constant(
  [10, 11],
  dtype=tf.float64)
BOOL TRUE,
FALSE
tf.constant(
  [True, False],
  dtype=tf.bool)
STRING 'abc',
'def'
tf.constant(
  ['abc', 'def'],
  dtype=tf.string)
BYTES b'abc',
b'def'
tf.constant(
  ['abc', 'def'],
  dtype=tf.string)
DATA DATE '2020-09-27',
DATE '2020-09-28'
tf.constant(
  [
    '2020-09-27',
    '2020-09-28'
  ],
  dtype=tf.string)

"%F" format
DATA/HORA DATETIME '2023-02-02 02:02:01.152903',
DATETIME '2023-02-03 02:02:01.152903'
tf.constant(
  [
    '2023-02-02 02:02:01.152903',
    '2023-02-03 02:02:01.152903'
  ],
  dtype=tf.string)

"%F %H:%M:%E6S" format
HORA TIME '16:32:36.152903',
TIME '17:32:36.152903'
tf.constant(
  [
    '16:32:36.152903',
    '17:32:36.152903'
  ],
  dtype=tf.string)

"%H:%M:%E6S" format
TIMESTAMP TIMESTAMP '2017-02-28 12:30:30.45-08',
TIMESTAMP '2018-02-28 12:30:30.45-08'
tf.constant(
  [
    '2017-02-28 20:30:30.4 +0000',
    '2018-02-28 20:30:30.4 +0000'
  ],
  dtype=tf.string)

"%F %H:%M:%E1S %z" format
ARRAY ['a', 'b'],
['c', 'd']
tf.constant(
  [['a', 'b'], ['c', 'd']],
  dtype=tf.string)
ARRAY< STRUCT< INT64, FLOAT64>> [(1, 1.0), (2, 1.0)],
[(2, 1.0), (3, 1.0)]
tf.sparse.from_dense(
  tf.constant(
    [
      [0, 1.0, 1.0, 0],
      [0, 0, 1.0, 1.0]
    ],
    dtype=tf.float64))
NULL NULL,
NULL
tf.constant(
  [123456789.0e10, 123456789.0e10],
  dtype=tf.float64)

tf.constant(
  [1234567890000000000, 1234567890000000000],
  dtype=tf.int64)

tf.constant(
  [' __MISSING__ ', ' __MISSING__ '],
  dtype=tf.string)

Funções SQL suportadas

Quando exporta modelos preparados com a cláusula TRANSFORM, pode usar as seguintes funções SQL na cláusula TRANSFORM .

  • Operadores
    • +, -, *, /, =, <, >, <=, >=, !=, <>, [NOT] BETWEEN, [NOT] IN, IS [NOT] NULL, IS [NOT] TRUE, IS [NOT] FALSE, NOT, AND, OR.
  • Expressões condicionais
    • CASE expr, CASE, COALESCE, IF, IFNULL, NULLIF.
  • Funções matemáticas
    • ABS, ACOS, ACOSH, ASINH, ATAN, ATAN2, ATANH, CBRT, CEIL, CEILING, COS, COSH, COT, COTH, CSC, CSCH, EXP, FLOOR, IS_INF, IS_NAN, LN, LOG, LOG10, MOD, POW, POWER, SEC, SECH, SIGN, SIN, SINH, SQRT, TAN, TANH.
  • Funções de conversão
    • CAST AS INT64, CAST AS FLOAT64, CAST AS NUMERIC, CAST AS BIGNUMERIC, CAST AS STRING, SAFE_CAST AS INT64, SAFE_CAST AS FLOAT64
  • Funções de texto
    • CONCAT, LEFT, LENGTH, LOWER, REGEXP_REPLACE, RIGHT, SPLIT, SUBSTR, SUBSTRING, TRIM, UPPER.
  • Funções de data
    • Date, DATE_ADD, DATE_SUB, DATE_DIFF, DATE_TRUNC, EXTRACT, FORMAT_DATE, PARSE_DATE, SAFE.PARSE_DATE.
  • Funções de data/hora
    • DATETIME, DATETIME_ADD, DATETIME_SUB, DATETIME_DIFF, DATETIME_TRUNC, EXTRACT, PARSE_DATETIME, SAFE.PARSE_DATETIME.
  • Funções de tempo
    • TIME, TIME_ADD, TIME_SUB, TIME_DIFF, TIME_TRUNC, EXTRACT, FORMAT_TIME, PARSE_TIME, SAFE.PARSE_TIME.
  • Funções de data/hora
    • TIMESTAMP, TIMESTAMP_ADD, TIMESTAMP_SUB, TIMESTAMP_DIFF, TIMESTAMP_TRUNC, FORMAT_TIMESTAMP, PARSE_TIMESTAMP, SAFE.PARSE_TIMESTAMP, TIMESTAMP_MICROS, TIMESTAMP_MILLIS, TIMESTAMP_SECONDS, EXTRACT, STRING, UNIX_MICROS, UNIX_MILLIS, UNIX_SECONDS.
  • Funções de pré-processamento manual
    • ML.IMPUTER, ML.HASH_BUCKETIZE, ML.LABEL_ENCODER, ML.MULTI_HOT_ENCODER, ML.NGRAMS, ML.ONE_HOT_ENCODER, ML.BUCKETIZE, ML.MAX_ABS_SCALER, ML.MIN_MAX_SCALER, ML.NORMALIZER, ML.QUANTILE_BUCKETIZE, ML.ROBUST_SCALER, ML.STANDARD_SCALER.

Limitações

Aplicam-se as seguintes limitações quando exporta modelos:

  • A exportação de modelos não é suportada se tiver sido usada alguma das seguintes funcionalidades durante a preparação:

    • Os tipos de funcionalidades ARRAY, TIMESTAMP ou GEOGRAPHY estavam presentes nos dados de entrada.
  • Os modelos exportados para os tipos de modelos AUTOML_REGRESSOR e AUTOML_CLASSIFIER não suportam a implementação da Vertex AI para a previsão online.

  • O limite de tamanho do modelo é de 1 GB para a exportação do modelo de fatorização de matrizes. O tamanho do modelo é aproximadamente proporcional a num_factors, pelo que pode reduzir num_factors durante a preparação para diminuir o tamanho do modelo se atingir o limite.

  • Para modelos preparados com a cláusula BigQuery ML TRANSFORM para pré-processamento manual de caraterísticas, consulte os tipos de dados e as funções suportadas para exportação.

  • Os modelos preparados com a cláusula BigQuery ML TRANSFORM antes de 18 de setembro de 2023 têm de ser novamente preparados antes de poderem ser implementados através do registo de modelos para a previsão online.

  • Durante a exportação do modelo, ARRAY<STRUCT<INT64, FLOAT64>>, ARRAY e TIMESTAMP são suportados como dados pré-transformados, mas não são suportados como dados pós-transformados.

Exporte modelos do BigQuery ML

Para exportar um modelo:

Consola

  1. Abra a página do BigQuery na Trusted Cloud consola
    .

    Aceda à página do BigQuery

  2. No painel de navegação, na secção Recursos, expanda o seu projeto e clique no conjunto de dados para o expandir. Encontre e clique no modelo que está a exportar.

  3. No lado direito da janela, clique em Exportar modelo.

    Exporte o modelo

  4. Na caixa de diálogo Exportar modelo para o Cloud Storage:

    • Em Selecionar localização do Cloud Storage, procure o contentor ou a localização da pasta para onde quer exportar o modelo.
    • Clique em Exportar para exportar o modelo.

Para verificar o progresso da tarefa, procure perto da parte superior da navegação o Histórico de tarefas para uma tarefa de Exportação.

SQL

A declaração EXPORT MODEL permite-lhe exportar modelos do BigQuery ML para o Cloud Storage através da sintaxe de consulta GoogleSQL.

Para exportar um modelo do BigQuery ML na Trusted Cloud consola através da declaração EXPORT MODEL, siga estes passos:

  1. Na Trusted Cloud consola, abra a página do BigQuery.

    Aceda ao BigQuery

  2. Clique em Redigir nova consulta.

  3. No campo Editor de consultas, escreva a sua declaração EXPORT MODEL.

    A seguinte consulta exporta um modelo denominado myproject.mydataset.mymodel para um contentor do Cloud Storage com o URI gs://bucket/path/to/saved_model/.

     EXPORT MODEL `myproject.mydataset.mymodel`
     OPTIONS(URI = 'gs://bucket/path/to/saved_model/')
     

  4. Clique em Executar. Quando a consulta estiver concluída, é apresentado o seguinte no painel Resultados da consulta: Successfully exported model.

bq

Use o comando bq extract com a flag --model.

(Opcional) Forneça a flag --destination_format e escolha o formato do modelo exportado. (Opcional) Forneça a flag --location e defina o valor para a sua localização.

bq --location=location extract \
--destination_format format \
--model project_id:dataset.model \
gs://bucket/model_folder

Onde:

  • location é o nome da sua localização. A flag --location é opcional. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, pode definir o valor da flag como asia-northeast1. Pode predefinir um valor para a localização através do ficheiro.bigqueryrc.
  • destination_format é o formato do modelo exportado: ML_TF_SAVED_MODEL (predefinição) ou ML_XGBOOST_BOOSTER.
  • project_id é o ID do seu projeto.
  • dataset é o nome do conjunto de dados de origem.
  • model é o modelo que está a exportar.
  • bucket é o nome do contentor do Cloud Storage para o qual está a exportar os dados. O conjunto de dados do BigQuery e o contentor do Cloud Storage têm de estar na mesma localização.
  • model_folder é o nome da pasta onde os ficheiros de modelo exportados vão ser escritos.

Exemplos:

Por exemplo, o comando seguinte exporta mydataset.mymodel no formato TensorFlow SavedModel para um contentor do Cloud Storage denominado mymodel_folder.

bq extract --model \
'mydataset.mymodel' \
gs://example-bucket/mymodel_folder

O valor predefinido de destination_format é ML_TF_SAVED_MODEL.

O comando seguinte exporta mydataset.mymodel no formato XGBoost Booster para um contentor do Cloud Storage denominado mymodel_folder.

bq extract --model \
--destination_format ML_XGBOOST_BOOSTER \
'mydataset.mytable' \
gs://example-bucket/mymodel_folder

API

Para exportar o modelo, crie uma tarefa extract e preencha a configuração da tarefa.

(Opcional) Especifique a sua localização na propriedade location na secção jobReference do recurso de trabalho.

  1. Crie uma tarefa de extração que aponte para o modelo do BigQuery ML e para o destino do Cloud Storage.

  2. Especifique o modelo de origem através do objeto de configuração sourceModel que contém o ID do projeto, o ID do conjunto de dados e o ID do modelo.

  3. A propriedade destination URI(s) tem de ser totalmente qualificada, no formato gs://bucket/model_folder.

  4. Especifique o formato de destino definindo a propriedade configuration.extract.destinationFormat. Por exemplo, para exportar um modelo de árvore com reforço, defina esta propriedade com o valor ML_XGBOOST_BOOSTER.

  5. Para verificar o estado da tarefa, chame jobs.get(job_id) com o ID da tarefa devolvido pelo pedido inicial.

    • Se status.state = DONE, a tarefa foi concluída com êxito.
    • Se a propriedade status.errorResult estiver presente, o pedido falhou e esse objeto inclui informações que descrevem o que correu mal.
    • Se status.errorResult estiver ausente, a tarefa foi concluída com êxito, embora possam ter ocorrido alguns erros não fatais. Os erros não fatais são apresentados na propriedade status.errors do objeto de tarefa devolvido.

Notas da API:

  • Como prática recomendada, gere um ID exclusivo e transmita-o como jobReference.jobId quando chamar jobs.insert para criar uma tarefa. Esta abordagem é mais robusta em caso de falha de rede, porque o cliente pode sondar ou tentar novamente com o ID da tarefa conhecido.

  • A chamada de jobs.insert num determinado ID da tarefa é idempotente; por outras palavras, pode tentar novamente quantas vezes quiser no mesmo ID da tarefa e, no máximo, uma dessas operações vai ter êxito.

Java

Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.ExtractJobConfiguration;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.ModelId;

// Sample to extract model to GCS bucket
public class ExtractModel {

  public static void main(String[] args) throws InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    String projectName = "bigquery-public-data";
    String datasetName = "samples";
    String modelName = "model";
    String bucketName = "MY-BUCKET-NAME";
    String destinationUri = "gs://" + bucketName + "/path/to/file";
    extractModel(projectName, datasetName, modelName, destinationUri);
  }

  public static void extractModel(
      String projectName, String datasetName, String modelName, String destinationUri)
      throws InterruptedException {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      ModelId modelId = ModelId.of(projectName, datasetName, modelName);

      ExtractJobConfiguration extractConfig =
          ExtractJobConfiguration.newBuilder(modelId, destinationUri).build();

      Job job = bigquery.create(JobInfo.of(extractConfig));

      // Blocks until this job completes its execution, either failing or succeeding.
      Job completedJob = job.waitFor();
      if (completedJob == null) {
        System.out.println("Job not executed since it no longer exists.");
        return;
      } else if (completedJob.getStatus().getError() != null) {
        System.out.println(
            "BigQuery was unable to extract due to an error: \n" + job.getStatus().getError());
        return;
      }
      System.out.println("Model extract successful");
    } catch (BigQueryException ex) {
      System.out.println("Model extraction job was interrupted. \n" + ex.toString());
    }
  }
}

Implementação de modelos

Pode implementar o modelo exportado no Vertex AI, bem como localmente. Se a cláusula TRANSFORM do modelo contiver funções de data, funções de data/hora, funções de tempo ou funções de data/hora, tem de usar a biblioteca bigquery-ml-utils no contentor. A exceção é se estiver a implementar através do Model Registry, que não precisa de modelos exportados nem de contentores de publicação.

Implementação do Vertex AI

Formato do modelo de exportação Implementação
TensorFlow SavedModel (modelos não AutoML) Implemente um SavedModel do TensorFlow. Tem de criar o ficheiro SavedModel com uma versão suportada do TensorFlow.
TensorFlow SavedModel (modelos da AutoML) Não suportado.
XGBoost Booster Usar uma rotina de previsão personalizada. Para modelos de reforço XGBoost, as informações de pré-processamento e pós-processamento são guardadas nos ficheiros exportados, e uma rotina de previsão personalizada permite-lhe implementar o modelo com os ficheiros exportados adicionais.

Tem de criar os ficheiros do modelo com uma versão suportada do XGBoost.

Implementação local

Formato do modelo de exportação Implementação
TensorFlow SavedModel (modelos não AutoML) O SavedModel é um formato padrão e pode implementá-los no contentor Docker do TensorFlow Serving.

Também pode tirar partido da execução local da previsão online do Vertex AI.
TensorFlow SavedModel (modelos da AutoML) Coloque o modelo em contentores e execute-o.
XGBoost Booster Para executar modelos de reforço XGBoost localmente, pode usar o ficheiro main.py exportado:
  1. Transfira todos os ficheiros do Cloud Storage para o diretório local.
  2. Descomprima o ficheiro predictor.py de xgboost_predictor-0.1.tar.gz para o diretório local.
  3. Execute main.py (consulte as instruções em main.py).

Formato de saída da previsão

Esta secção apresenta o formato de saída da previsão dos modelos exportados para cada tipo de modelo. Todos os modelos exportados suportam a previsão em lote e podem processar várias linhas de entrada em simultâneo. Por exemplo, existem duas linhas de entrada em cada um dos seguintes exemplos de formato de saída.

AUTOENCODER

Formato de saída da previsão Exemplo de saída
+------------------------+------------------------+------------------------+
|      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 de saída da previsão Exemplo de saída
+------------------------------------------+
| predictions                              |
+------------------------------------------+
| [{"scores":[FLOAT], "classes":[STRING]}] |
+------------------------------------------+
        
+---------------------------------------------+
| predictions                                 |
+---------------------------------------------+
| [{"scores":[1, 2], "classes":['a', 'b']},   |
|  {"scores":[3, 0.2], "classes":['a', 'b']}] |
+---------------------------------------------+
        

AUTOML_REGRESSOR

Formato de saída da previsão Exemplo de saída
+-----------------+
| predictions     |
+-----------------+
| [FLOAT]         |
+-----------------+
        
+-----------------+
| predictions     |
+-----------------+
| [1.8, 2.46]     |
+-----------------+
        

BOOSTED_TREE_CLASSIFIER e RANDOM_FOREST_CLASSIFIER

Formato de saída da previsão Exemplo de saída
+-------------+--------------+-----------------+
| 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 E RANDOM_FOREST_REGRESSOR

Formato de saída da previsão Exemplo de saída
+-----------------+
| predicted_label |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| predicted_label |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
        

DNN_CLASSIFIER

Formato de saída da previsão Exemplo de saída
+---------------+-------------+-----------+---------+------------------------+--------+---------------+
| 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 de saída da previsão Exemplo de saída
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
        

DNN_LINEAR_COMBINED_CLASSIFIER

Formato de saída da previsão Exemplo de saída
+---------------+-------------+-----------+---------+------------------------+--------+---------------+
| 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 de saída da previsão Exemplo de saída
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
        

KMEANS

Formato de saída da previsão Exemplo de saída
+--------------------+--------------+---------------------+
| 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]                 |
+--------------------+--------------+---------------------+
        

LINEAR_REG

Formato de saída da previsão Exemplo de saída
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
       

LOGISTIC_REG

Formato de saída da previsão Exemplo de saída
+-------------+--------------+-----------------+
| 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: atualmente, só suportamos a obtenção de um utilizador de entrada e a saída dos 50 principais pares (predicted_rating, predicted_item) ordenados por predicted_rating por ordem descendente.

Formato de saída da previsão Exemplo de saída
+--------------------+--------------+
| PREDICTED_RATING | PREDICTED_ITEM |
+------------------+----------------+
| [FLOAT]          | [STRING]       |
+------------------+----------------+
        
+--------------------+--------------+
| PREDICTED_RATING | PREDICTED_ITEM |
+------------------+----------------+
| [5.5, 1.7]       | ['A', 'B']     |
+------------------+----------------+
| [7.2, 2.7]       | ['B', 'A']     |
+------------------+----------------+
        

TENSORFLOW (importado)

Formato de saída da previsão
Igual ao modelo importado

PCA

Formato de saída da previsão Exemplo de saída
+-------------------------+---------------------------------+
| PRINCIPAL_COMPONENT_IDS | PRINCIPAL_COMPONENT_PROJECTIONS |
+-------------------------+---------------------------------+
|       [INT64]           |             [FLOAT]             |
+-------------------------+---------------------------------+
        
+-------------------------+---------------------------------+
| PRINCIPAL_COMPONENT_IDS | PRINCIPAL_COMPONENT_PROJECTIONS |
+-------------------------+---------------------------------+
|       [1, 2]            |             [1.2, 5.0]          |
+-------------------------+---------------------------------+
        

TRANSFORM_ONLY

Formato de saída da previsão
Igual às colunas especificadas na cláusula TRANSFORM do modelo

Visualização do modelo XGBoost

Pode visualizar as árvores com reforço através da API Python plot_tree após a exportação do modelo. Por exemplo, pode tirar partido do Colab sem instalar as dependências:

  1. Exporte o modelo de árvore com reforço para um contentor do Cloud Storage.
  2. Transfira o ficheiro model.bst do contentor do Cloud Storage.
  3. Num bloco de notas do Colab, carregue o ficheiro model.bst para Files.
  4. Execute o seguinte código no bloco de notas:

    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
    

Este exemplo representa graficamente várias árvores (uma árvore por iteração):

Exporte o modelo

Atualmente, não guardamos os nomes das funcionalidades no modelo, pelo que verá nomes como "f0", "f1", etc. Pode encontrar os nomes das funcionalidades correspondentes no ficheiro exportado usando estes nomes (como "f0") como índices.assets/model_metadata.json

Autorizações necessárias

Para exportar um modelo do BigQuery ML para o Cloud Storage, precisa de autorizações para aceder ao modelo do BigQuery ML, autorizações para executar uma tarefa de exportação e autorizações para escrever os dados no contentor do Cloud Storage.

Autorizações do BigQuery

  • No mínimo, para exportar o modelo, tem de ter bigquery.models.export autorizações. As seguintes funções predefinidas da gestão de identidade e de acesso (IAM) têm autorizações bigquery.models.export:

    • bigquery.dataViewer
    • bigquery.dataOwner
    • bigquery.dataEditor
    • bigquery.admin
  • No mínimo, para executar uma tarefa de exportação, tem de ter autorizações bigquery.jobs.create. As seguintes funções do IAM predefinidas têm autorizações bigquery.jobs.create:

    • bigquery.user
    • bigquery.jobUser
    • bigquery.admin

Autorizações do Cloud Storage

  • Para escrever os dados num contentor do Cloud Storage existente, tem de ter autorizações storage.objects.create. As seguintes funções do IAM predefinidas têm autorizações storage.objects.create:

    • storage.objectCreator
    • storage.objectAdmin
    • storage.admin

Para mais informações sobre as funções e as autorizações do IAM no BigQuery ML, consulte o artigo Controlo de acesso.

Mova dados do BigQuery entre localizações

Não é possível alterar a localização de um conjunto de dados após a respetiva criação, mas pode fazer uma cópia do conjunto de dados.

Política de quotas

Para informações sobre as quotas de tarefas de exportação, consulte o artigo Tarefas de exportação na página Quotas e limites.

Preços

Não existe qualquer custo para exportar modelos do BigQuery ML, mas as exportações estão sujeitas às quotas e limites do BigQuery. Para mais informações sobre os preços do BigQuery, consulte a página Preços.

Após a exportação dos dados, é-lhe cobrado o armazenamento dos dados no Cloud Storage. Para mais informações sobre os preços do Cloud Storage, consulte a página de preços do Cloud Storage.

O que se segue?