Instrução CREATE MODEL para modelos somente de transformação

Este documento descreve a instrução CREATE MODEL para criar modelos somente de transformação no BigQuery. Os modelos somente de transformação usam a cláusula TRANSFORM para aplicar funções de pré-processamento a dados de entrada e retornar os dados pré-processados. Os modelos somente de transformação separam o pré-processamento de dados do treinamento de modelos, o que facilita a captura e a reutilização de um conjunto de regras de pré-processamento de dados.

É possível usar um modelo somente de transformação com a função ML.TRANSFORM para fornecer dados pré-processados a outros modelos:

  • É possível usá-lo na instrução de consulta ao criar outro modelo, usando os dados transformados como os dados de treinamento para esse modelo.
  • É possível usá-lo no argumento query statement da função ML.PREDICT a fim de fornecer dados para previsão que são processadas da maneira esperada pelo modelo de destino.

Para transformações de atributos em lote, é melhor usar modelos somente de transformação, porque você pode processar grandes quantidades de dados em um curto período. Para transformações de atributos on-line, é melhor usar o Vertex AI Feature Store, porque ele fornece respostas com baixa latência.

Também é possível usar um modelo somente de transformação com a função ML.FEATURE_INFO para retornar informações sobre as transformações de atributos no modelo.

Para informações sobre as funções e instruções SQL com suporte em cada tipo de modelo, consulte Jornada do usuário completa de cada modelo.

Sintaxe de CREATE MODEL

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL} model_name
TRANSFORM (select_list)
OPTIONS(MODEL_TYPE = 'TRANSFORM_ONLY')
AS query_statement

CREATE MODEL

Cria e treina um modelo novo no conjunto de dados especificado. Se o nome do modelo existir, CREATE MODEL retornará um erro.

CREATE MODEL IF NOT EXISTS

Cria e treina um novo modelo somente quando ele não existe no conjunto de dados especificado.

CREATE OR REPLACE MODEL

Cria e treina um modelo e substitui um modelo atual com o mesmo nome no conjunto de dados especificado.

model_name

O nome do modelo que você está criando ou substituindo. O nome do modelo precisa ser exclusivo no conjunto de dados: nenhum outro modelo ou tabela pode ter o mesmo nome. O nome do modelo precisa seguir as mesmas regras de nomenclatura de uma tabela do BigQuery. Um nome de modelo pode:

  • conter até 1.024 caracteres;
  • conter letras (maiúsculas e minúsculas), números e sublinhados;

model_name não diferencia maiúsculas de minúsculas.

Se você não tiver um projeto padrão configurado, use o ID do projeto como prefixo no nome do modelo no seguinte formato, incluindo acentos graves:

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

Por exemplo, "myproject.mydataset.mymodel".

select_list

É possível passar colunas de query_statement pelo treinamento de modelo sem transformação usando ** EXCEPT() ou listando os nomes das colunas diretamente.

Nem todas as colunas de query_statement precisam aparecer na cláusula TRANSFORM, então é possível descartar colunas que aparecem em query_statement omitindo-as da cláusula TRANSFORM.

É possível transformar entradas de query_statement usando expressões em select_list. select_list é semelhante a uma instrução SELECT normal. select_list suporta a seguinte sintaxe:

  • *
  • * EXCEPT()
  • * REPLACE()
  • expression
  • expression.*

Em select_list, não pode constar o seguinte:

  • Funções de agregação.
  • Funções de análise que não são do BigQuery ML. Para mais informações sobre as funções com suporte, consulte Pré-processamento manual de recursos.
  • UDFs.
  • Subconsultas.
  • Colunas anônimas. Por exemplo, a + b as c é permitido, mas a + b não é.

As colunas de saída de select_list podem ser de qualquer tipo de dados com suporte no BigQuery.

Se presentes, as seguintes colunas precisam aparecer em select_list sem transformação:

  • label
  • data_split_col
  • kmeans_init_col
  • instance_weight_col

Se essas colunas forem retornadas por query_statement, será necessário referenciá-las em select_list pelo nome fora de qualquer expressão ou usando *. Não é possível usar aliases com essas colunas.

MODEL_TYPE

Sintaxe

MODEL_TYPE = 'TRANSFORM_ONLY'

Descrição

Especifique o tipo de modelo. Esta opção é obrigatória.

query_statement

A consulta do GoogleSQL que contém os dados a serem pré-processados. As estatísticas calculadas ao transformar esses dados são aplicadas aos dados de entrada de qualquer função com que você usa o modelo.

Exemplos

Os exemplos a seguir mostram como criar e usar modelos somente de transformação.

Exemplo 1

No exemplo a seguir, você cria um modelo chamado mymodel em mydataset no projeto padrão. O modelo transforma várias colunas da tabela pública do BigQuery bigquery-public-data.ml_datasets.penguins:

CREATE MODEL `mydataset.transform_model`
  TRANSFORM(
    species,
    island,
    ML.MAX_ABS_SCALER(culmen_length_mm) OVER () AS culmen_length_mm,
    ML.MAX_ABS_SCALER(culmen_depth_mm) OVER () AS culmen_depth_mm,
    ML.MAX_ABS_SCALER(flipper_length_mm) OVER () AS flipper_length_mm,
    sex,
    body_mass_g)
  OPTIONS (
    model_type = 'transform_only')
AS (
  SELECT *
  FROM `bigquery-public-data.ml_datasets.penguins`
);

Exemplo 2

No exemplo a seguir, você cria um modelo chamado mymodel em mydataset no projeto padrão. O modelo é treinado com dados pré-processados usando um modelo somente de transformação:

CREATE MODEL `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE = 'LINEAR_REG',
    MAX_ITERATIONS = 5,
    INPUT_LABEL_COLS = ['body_mass_g'] ) AS
SELECT
  *
FROM
  ML.TRANSFORM(
    MODEL `mydataset.transform_model`,
    TABLE `bigquery-public-data.ml_datasets.penguins`)
WHERE body_mass_g IS NOT NULL;