The CREATE MODEL statement for importing TensorFlow Lite models

This document describes the CREATE MODEL statement for importing TensorFlow Lite models into BigQuery.

For information about the supported SQL statements and functions for each model type, see End-to-end user journey for each model.

CREATE MODEL syntax

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
model_name
OPTIONS(MODEL_TYPE = 'TENSORFLOW_LITE', MODEL_PATH = string_value
  [, KMS_KEY_NAME = string_value ]
);

CREATE MODEL

Creates and trains a new model in the specified dataset. If the model name exists, CREATE MODEL returns an error.

CREATE MODEL IF NOT EXISTS

Creates and trains a new model only if the model doesn't exist in the specified dataset.

CREATE OR REPLACE MODEL

Creates and trains a model and replaces an existing model with the same name in the specified dataset.

model_name

The name of the model you're creating or replacing. The model name must be unique in the dataset: no other model or table can have the same name. The model name must follow the same naming rules as a BigQuery table. A model name can:

  • Contain up to 1,024 characters
  • Contain letters (upper or lower case), numbers, and underscores

model_name is not case-sensitive.

If you don't have a default project configured, then you must prepend the project ID to the model name in the following format, including backticks:

`[PROJECT_ID].[DATASET].[MODEL]`

For example, `myproject.mydataset.mymodel`.

MODEL_TYPE

Syntax

MODEL_TYPE = 'TENSORFLOW_LITE'

Description

Specifies the model type. This option is required.

MODEL_PATH

Syntax

MODEL_PATH = string_value

Description

Specifies the Cloud Storage URI of the TensorFlow Lite model to import. This option is required.

Arguments

A STRING value specifying the URI of a Cloud Storage bucket that contains the model to import.

BigQuery ML imports the model from Cloud Storage by using the credentials of the user who runs the CREATE MODEL statement.

Example

MODEL_PATH = 'gs://bucket/path/to/tflite_model/*'

KMS_KEY_NAME

Syntax

KMS_KEY_NAME = string_value

Description

The Cloud Key Management Service customer-managed encryption key (CMEK) to use to encrypt the model.

Arguments

A STRING value containing the fully-qualified name of the CMEK. For example,

'projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key'

Supported data types for input and output columns

BigQuery ML converts some TensorFlow Lite model input and output columns to BigQuery ML types, and some TensorFlow Lite types aren't supported. Supported data types for input and output columns include the following:

TensorFlow Lite types Supported BigQuery type
UINT8, UINT16, UINT32, UINT64, INT8, INT16, INT32, INT64 Supported INT64
FLOAT16, FLOAT32, FLOAT64 Supported FLOAT64
COMPLEX64, COMPLEX128 Unsupported N/a
BOOL Supported BOOL
STRING Supported STRING
RESOURCE Unsupported N/a
VARIANT Unsupported N/a

Limitations

Imported TensorFlow Lite models have the following limitations:

  • The TensorFlow Lite model must exist before you can import it into BigQuery.
  • Models must be stored in Cloud Storage.
  • TensorFlow Lite models must be in .tflite format.
  • You can only use TensorFlow Lite models with the ML.PREDICT function.
  • Models are limited to 450 MB in size.
  • Only TensorFlow core operations and TensorFlow Text operations are supported in BigQuery ML.
  • SentencePiece operators are not supported.
  • Sparse tensors are not supported.
  • You can only use an imported TensorFlow Lite model with an object table when you use capacity-based pricing through reservations. On-demand pricing isn't supported.

Example

The following example imports a TensorFlow Lite model into BigQuery as a BigQuery ML model. The example assumes that there is an existing TensorFlow Lite model located at gs://bucket/path/to/tflite_model/*.

CREATE MODEL `project_id.mydataset.mymodel`
 OPTIONS(MODEL_TYPE='TENSORFLOW_LITE',
         MODEL_PATH="gs://bucket/path/to/tflite_model/*")