Exportar modelos

En esta página se explica cómo exportar modelos de BigQuery ML. Puedes exportar modelos de BigQuery ML a Cloud Storage y usarlos para hacer predicciones online o editarlos en Python. Puedes exportar un modelo de BigQuery ML de las siguientes formas:

  • Con la Google Cloud consola.
  • Usar la instrucción EXPORT MODEL.
  • Usando el comando bq extract en la herramienta de línea de comandos bq.
  • Enviar un trabajo de extract a través de la API o las bibliotecas de cliente.

Puede exportar los siguientes 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 importados de TensorFlow)
  • PCA
  • TRANSFORM_ONLY

Exportar formatos y muestras de modelos

En la siguiente tabla se muestran los formatos de destino de exportación de cada tipo de modelo de BigQuery ML y se proporciona un ejemplo de los archivos que se escriben en el segmento de Cloud Storage.

Tipo de modelo Formato de exportación del modelo Ejemplo de archivos exportados
AUTOML_CLASSIFIER SavedModel de TensorFlow (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 SavedModel de TensorFlow (TF 1.15 o versiones posteriores)
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 Refuerzo (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 es para la ejecución local. Consulta más información sobre la implementación de modelos.
BOOSTED_TREE_REGRESSOR
RANDOM_FOREST_REGRESSOR
RANDOM_FOREST_REGRESSOR
TENSORFLOW (importado) SavedModel de TensorFlow Exactamente los mismos archivos que estaban presentes al importar el modelo

Exportar un modelo entrenado con TRANSFORM

Si el modelo se entrena con la cláusula TRANSFORM, un modelo de preprocesamiento adicional realiza la misma lógica en la cláusula TRANSFORM y se guarda en formato TensorFlow SavedModel en el subdirectorio transform. Puedes desplegar un modelo entrenado con la cláusula TRANSFORM en Vertex AI y de forma local. Para obtener más información, consulta el artículo sobre el despliegue de modelos.

Formato de exportación del modelo Ejemplo de archivos exportados
Modelo de predicción: TensorFlow SavedModel o Booster (XGBoost 0.82).
Modelo de preprocesamiento para la cláusula TRANSFORM: SavedModel de TensorFlow (TF 2.5 o versiones posteriores)
gcs_bucket/
  ....(model files)
  transform/
    assets/
        f1.txt/
        f2.txt/
    saved_model.pb
    variables/
        variables.data-00-of-01
        variables.index

El modelo no contiene la información sobre la ingeniería de funciones realizada fuera de la cláusula TRANSFORM durante el entrenamiento. Por ejemplo, cualquier elemento de la instrucción SELECT . Por lo tanto, tendrás que convertir manualmente los datos de entrada antes de introducirlos en el modelo de preprocesamiento.

Tipos de datos admitidos

Cuando se exportan modelos entrenados con la cláusula TRANSFORM, se admiten los siguientes tipos de datos para la cláusula TRANSFORM.

Tipo de entrada TRANSFORM Ejemplos de entrada de TRANSFORM Muestras de entrada del modelo de preprocesamiento 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)
FECHA DATE '2020-09-27',
DATE '2020-09-28'
tf.constant(
  [
    '2020-09-27',
    '2020-09-28'
  ],
  dtype=tf.string)

"%F" format
DATETIME 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)

Funciones de SQL admitidas

Cuando exportes modelos entrenados con la cláusula TRANSFORM, puedes usar las siguientes funciones de SQL dentro de la cláusula TRANSFORM.

  • Operadores
    • +, -, *, /, =, <, >, <=, >=, !=, <>, [NOT] BETWEEN, [NOT] IN, IS [NOT] NULL, IS [NOT] TRUE, IS [NOT] FALSE, NOT, AND, OR.
  • Expresiones condicionales
    • CASE expr, CASE, COALESCE, IF, IFNULL y NULLIF.
  • Funciones 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 y TANH.
  • Funciones de conversión
    • CAST AS INT64, CAST AS FLOAT64, CAST AS NUMERIC, CAST AS BIGNUMERIC, CAST AS STRING, SAFE_CAST AS INT64, SAFE_CAST AS FLOAT64
  • Funciones de cadena
    • CONCAT, LEFT, LENGTH, LOWER, REGEXP_REPLACE, RIGHT, SPLIT, SUBSTR, SUBSTRING, TRIM, UPPER.
  • Funciones de fecha
    • Date, DATE_ADD, DATE_SUB, DATE_DIFF, DATE_TRUNC, EXTRACT, FORMAT_DATE, PARSE_DATE, SAFE.PARSE_DATE.
  • Funciones de fecha y hora
    • DATETIME, DATETIME_ADD, DATETIME_SUB, DATETIME_DIFF, DATETIME_TRUNC, EXTRACT, PARSE_DATETIME, SAFE.PARSE_DATETIME.
  • Funciones de tiempo
    • TIME, TIME_ADD, TIME_SUB, TIME_DIFF, TIME_TRUNC, EXTRACT, FORMAT_TIME, PARSE_TIME, SAFE.PARSE_TIME.
  • Funciones de marca de tiempo
    • 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.
  • Funciones de preprocesamiento 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.

Limitaciones

Se aplican las siguientes limitaciones al exportar modelos:

  • No se puede exportar el modelo si se ha usado alguna de las siguientes funciones durante el entrenamiento:

    • Se han detectado tipos de funciones ARRAY, TIMESTAMP o GEOGRAPHY en los datos de entrada.
  • Los modelos exportados de los tipos AUTOML_REGRESSOR y AUTOML_CLASSIFIER no se pueden desplegar en Vertex AI para hacer predicciones online.

  • El límite de tamaño del modelo es de 1 GB para la exportación de modelos de factorización de matrices. El tamaño del modelo es aproximadamente proporcional a num_factors, por lo que puedes reducir num_factors durante el entrenamiento para reducir el tamaño del modelo si alcanzas el límite.

  • En el caso de los modelos entrenados con la cláusula TRANSFORM de BigQuery ML para el preprocesamiento manual de características, consulta los tipos de datos y las funciones admitidos para la exportación.

  • Los modelos entrenados con la cláusula BigQuery MLTRANSFORM antes del 18 de septiembre del 2023 deben volver a entrenarse para poder desplegarse a través de Model Registry para hacer predicciones online.

  • Durante la exportación del modelo, se admiten ARRAY<STRUCT<INT64, FLOAT64>>, ARRAY y TIMESTAMP como datos pretransformados, pero no como datos postransformados.

Exportar modelos de BigQuery ML

Para exportar un modelo, sigue estos pasos:

Consola

  1. Abre la página de BigQuery en la Google Cloud consola
    .

    Ir a la página de BigQuery

  2. En el panel de navegación, en la sección Recursos, despliega tu proyecto y haz clic en el conjunto de datos para expandirlo. Busca el modelo que quieras exportar y haz clic en él.

  3. En la parte derecha de la ventana, haz clic en Exportar modelo.

    Exportar modelo

  4. En el cuadro de diálogo Exportar modelo a Cloud Storage, haz lo siguiente:

    • En Seleccionar ubicación de Cloud Storage, busca el segmento o la carpeta en la que quieras exportar el modelo.
    • Haz clic en Exportar para exportar el modelo.

Para comprobar el progreso de la tarea, busca cerca de la parte superior de la navegación la opción Historial de tareas y, a continuación, la tarea Exportar.

SQL

La instrucción EXPORT MODEL te permite exportar modelos de BigQuery ML a Cloud Storage mediante la sintaxis de consulta GoogleSQL.

Para exportar un modelo de BigQuery ML en la consola mediante la instrucción EXPORT MODEL, sigue estos pasos: Google Cloud

  1. En la Google Cloud consola, abre la página de BigQuery.

    Ir a BigQuery

  2. Haz clic en Redactar nueva consulta.

  3. En el campo Editor de consultas, escribe tu EXPORT MODEL sentencia.

    La siguiente consulta exporta un modelo llamado myproject.mydataset.mymodel a un segmento de Cloud Storage con el URI gs://bucket/path/to/saved_model/.

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

  4. Haz clic en Ejecutar. Cuando se complete la consulta, aparecerá lo siguiente en el panel Resultados de la consulta: Successfully exported model.

bq

Usa el comando bq extract con la marca --model.

(Opcional) Proporciona la marca --destination_format y elige el formato del modelo exportado. (Opcional) Proporciona la marca --location y asigna el valor de tu ubicación.

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

Donde:

  • location es el nombre de tu ubicación. La marca --location es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes asignar el valor asia-northeast1 a la marca. Puedes definir un valor predeterminado para la ubicación mediante el archivo.bigqueryrc.
  • destination_format es el formato del modelo exportado: ML_TF_SAVED_MODEL (predeterminado) o ML_XGBOOST_BOOSTER.
  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos de origen.
  • model es el modelo que vas a exportar.
  • bucket es el nombre del segmento de Cloud Storage al que se exportan los datos. El conjunto de datos de BigQuery y el segmento de Cloud Storage deben estar en la misma ubicación.
  • model_folder es el nombre de la carpeta en la que se escribirán los archivos de modelo exportados.

Ejemplos:

Por ejemplo, el siguiente comando exporta mydataset.mymodel en formato TensorFlow SavedModel a un segmento de Cloud Storage llamado mymodel_folder.

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

El valor predeterminado de destination_format es ML_TF_SAVED_MODEL.

El siguiente comando exporta mydataset.mymodel en formato XGBoost Booster a un segmento de Cloud Storage llamado mymodel_folder.

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

API

Para exportar un modelo, crea un trabajo extract y rellena la configuración del trabajo.

(Opcional) Especifica tu ubicación en la propiedad location de la sección jobReference del recurso Job.

  1. Crea una tarea de extracción que apunte al modelo de BigQuery ML y al destino de Cloud Storage.

  2. Especifica el modelo de origen mediante el objeto de configuración sourceModel, que contiene el ID del proyecto, el ID del conjunto de datos y el ID del modelo.

  3. La propiedad destination URI(s) debe estar cualificada y tener el formato gs://bucket/model_folder.

  4. Especifica el formato de destino configurando la propiedad configuration.extract.destinationFormat. Por ejemplo, para exportar un modelo de árbol reforzado, asigna a esta propiedad el valor ML_XGBOOST_BOOSTER.

  5. Para comprobar el estado de la tarea, llama a jobs.get(job_id) con el ID de la tarea devuelto por la solicitud inicial.

    • Si status.state = DONE, el trabajo se ha completado correctamente.
    • Si la propiedad status.errorResult está presente, significa que se ha producido un error en la solicitud y que el objeto incluirá información que describe lo que ha fallado.
    • Si no aparece status.errorResult, significa que el trabajo se ha completado correctamente, aunque puede que se hayan producido algunos errores no graves. Los errores no fatales se indican en la propiedad status.errors del objeto de trabajo devuelto.

Notas sobre la API:

  • Como práctica recomendada, genera un ID único y pásalo como jobReference.jobId al llamar a jobs.insert para crear un trabajo. Este enfoque es más sólido ante fallos de red, ya que el cliente puede sondear o volver a intentar la operación con el ID de trabajo conocido.

  • Llamar a jobs.insert en un ID de trabajo determinado es idempotente. En otras palabras, puedes volver a intentarlo tantas veces como quieras en el mismo ID de trabajo y, como máximo, una de esas operaciones se completará correctamente.

Java

Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

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());
    }
  }
}

Despliegue de modelo

Puedes desplegar el modelo exportado en Vertex AI y de forma local. Si la cláusula TRANSFORM del modelo contiene funciones de fecha, de fecha y hora, de hora o de marca de tiempo, debes usar la biblioteca bigquery-ml-utils en el contenedor. La excepción es si despliegas a través de Model Registry, que no necesita modelos exportados ni contenedores de servicio.

Despliegue de Vertex AI

Formato de exportación del modelo Implementación
SavedModel de TensorFlow (modelos que no son de AutoML) Despliega un SavedModel de TensorFlow. Debes crear el archivo SavedModel con una versión compatible de TensorFlow.
SavedModel de TensorFlow (modelos de AutoML) No es compatible.
XGBoost Booster Usa una rutina de predicción personalizada. En el caso de los modelos de refuerzo de XGBoost, la información de preprocesamiento y postprocesamiento se guarda en los archivos exportados, y una rutina de predicción personalizada te permite implementar el modelo con los archivos exportados adicionales.

Debes crear los archivos de modelo con una versión compatible de XGBoost.

Despliegue local

Formato de exportación del modelo Implementación
SavedModel de TensorFlow (modelos que no son de AutoML) SavedModel es un formato estándar que puedes desplegar en un contenedor de Docker de TensorFlow Serving.

También puedes aprovechar la ejecución local de la predicción online de Vertex AI.
SavedModel de TensorFlow (modelos de AutoML) Conteneriza y ejecuta el modelo.
XGBoost Booster Para ejecutar modelos de refuerzo de XGBoost de forma local, puedes usar el archivo main.py exportado:
  1. Descarga todos los archivos de Cloud Storage en el directorio local.
  2. Descomprime el archivo predictor.py de xgboost_predictor-0.1.tar.gz en el directorio local.
  3. Ejecuta main.py (consulta las instrucciones en main.py).

Formato de salida de la predicción

En esta sección se proporciona el formato de salida de las predicciones de los modelos exportados para cada tipo de modelo. Todos los modelos exportados admiten la predicción por lotes, por lo que pueden gestionar varias filas de entrada a la vez. Por ejemplo, hay dos filas de entrada en cada uno de los siguientes ejemplos de formato de salida.

AUTOENCODER

Formato de salida de la predicción Ejemplo de salida
+------------------------+------------------------+------------------------+
|      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 salida de la predicción Ejemplo de salida
+------------------------------------------+
| predictions                              |
+------------------------------------------+
| [{"scores":[FLOAT], "classes":[STRING]}] |
+------------------------------------------+
        
+---------------------------------------------+
| predictions                                 |
+---------------------------------------------+
| [{"scores":[1, 2], "classes":['a', 'b']},   |
|  {"scores":[3, 0.2], "classes":['a', 'b']}] |
+---------------------------------------------+
        

AUTOML_REGRESSOR

Formato de salida de la predicción Ejemplo de salida
+-----------------+
| predictions     |
+-----------------+
| [FLOAT]         |
+-----------------+
        
+-----------------+
| predictions     |
+-----------------+
| [1.8, 2.46]     |
+-----------------+
        

BOOSTED_TREE_CLASSIFIER y RANDOM_FOREST_CLASSIFIER

Formato de salida de la predicción Ejemplo de salida
+-------------+--------------+-----------------+
| 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 Y RANDOM_FOREST_REGRESSOR

Formato de salida de la predicción Ejemplo de salida
+-----------------+
| predicted_label |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| predicted_label |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
        

DNN_CLASSIFIER

Formato de salida de la predicción Ejemplo de salida
+---------------+-------------+-----------+---------+------------------------+--------+---------------+
| 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 salida de la predicción Ejemplo de salida
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
        

DNN_LINEAR_COMBINED_CLASSIFIER

Formato de salida de la predicción Ejemplo de salida
+---------------+-------------+-----------+---------+------------------------+--------+---------------+
| 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 salida de la predicción Ejemplo de salida
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
        

KMEANS

Formato de salida de la predicción Ejemplo de salida
+--------------------+--------------+---------------------+
| 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 salida de la predicción Ejemplo de salida
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| FLOAT           |
+-----------------+
        
+-----------------+
| PREDICTED_LABEL |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
       

LOGISTIC_REG

Formato de salida de la predicción Ejemplo de salida
+-------------+--------------+-----------------+
| 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: Actualmente, solo admitimos la introducción de un usuario y la obtención de los 50 pares principales (predicted_rating, predicted_item) ordenados por predicted_rating de forma descendente.

Formato de salida de la predicción Ejemplo de salida
+--------------------+--------------+
| 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 salida de la predicción
Igual que el modelo importado

PCA

Formato de salida de la predicción Ejemplo de salida
+-------------------------+---------------------------------+
| PRINCIPAL_COMPONENT_IDS | PRINCIPAL_COMPONENT_PROJECTIONS |
+-------------------------+---------------------------------+
|       [INT64]           |             [FLOAT]             |
+-------------------------+---------------------------------+
        
+-------------------------+---------------------------------+
| PRINCIPAL_COMPONENT_IDS | PRINCIPAL_COMPONENT_PROJECTIONS |
+-------------------------+---------------------------------+
|       [1, 2]            |             [1.2, 5.0]          |
+-------------------------+---------------------------------+
        

TRANSFORM_ONLY

Formato de salida de la predicción
Es igual que las columnas especificadas en la cláusula TRANSFORM del modelo.

Visualización de modelos XGBoost

Puedes visualizar los árboles reforzados con la API de Python plot_tree después de exportar el modelo. Por ejemplo, puedes usar Colab sin instalar las dependencias:

  1. Exporta el modelo de árbol reforzado a un segmento de Cloud Storage.
  2. Descarga el archivo model.bst del segmento de Cloud Storage.
  3. En un cuaderno de Colab, sube el archivo model.bst a Files.
  4. Ejecuta el siguiente código en el cuaderno:

    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
    

En este ejemplo se representan varios árboles (un árbol por iteración):

Exportar modelo

Actualmente, no guardamos los nombres de las funciones en el modelo, por lo que verás nombres como "f0", "f1" y así sucesivamente. Puedes encontrar los nombres de las funciones correspondientes en el archivo assets/model_metadata.json exportado usando estos nombres (como "f0") como índices.

Permisos obligatorios

Para exportar un modelo de BigQuery ML a Cloud Storage, necesitas permisos para acceder al modelo de BigQuery ML, permisos para ejecutar un trabajo de exportación y permisos para escribir los datos en el segmento de Cloud Storage.

Permisos de BigQuery

  • Para exportar un modelo, como mínimo debes tener permisos de bigquery.models.export. Los siguientes roles predefinidos de gestión de identidades y accesos (IAM) tienen permisos bigquery.models.export:

    • bigquery.dataViewer
    • bigquery.dataOwner
    • bigquery.dataEditor
    • bigquery.admin
  • Para ejecutar una tarea de exportación, como mínimo debes tener los permisos bigquery.jobs.create. Los siguientes roles de gestión de identidades y accesos predefinidos tienen permisos de bigquery.jobs.create:

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

Permisos de Cloud Storage

  • Para escribir los datos en un segmento de Cloud Storage, debe tener los permisos storage.objects.create. Los siguientes roles de gestión de identidades y accesos predefinidos tienen permisos de storage.objects.create:

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

Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery ML, consulta el artículo sobre el control de acceso.

Mover datos de BigQuery entre ubicaciones

No puede cambiar la ubicación de un conjunto de datos después de crearlo, pero sí puede hacer una copia del conjunto de datos.

Política de cuotas

Para obtener información sobre las cuotas de los trabajos de exportación, consulta la sección Trabajos de exportación de la página Cuotas y límites.

Precios

No se cobra por exportar modelos de BigQuery ML, pero las exportaciones están sujetas a las cuotas y los límites de BigQuery. Para obtener más información sobre los precios de BigQuery, consulta la página Precios.

Una vez que se hayan exportado los datos, se te cobrará por almacenarlos en Cloud Storage. Para obtener más información sobre los precios de Cloud Storage, consulta la página Precios de Cloud Storage.

Siguientes pasos