Ajustar um modelo usando seus dados

Neste documento, mostramos como criar uma instância de ML do modelo remoto do BigQuery que faz referência a qualquer versão do modelo de base da linguagem natural da Vertex AItext-bison e configura o modelo para executar o ajuste supervisionado. Depois de criar o modelo remoto, use a função ML.EVALUATE para avaliar o modelo e confirmar se o desempenho é adequado para seu caso de uso. Em seguida, é possível usar o modelo com a função ML.GENERATE_TEXT para analisar o texto em uma tabela do BigQuery.

Permissões necessárias

  • Para criar uma conexão, você precisa da associação no seguinte papel do Identity and Access Management (IAM):

    • roles/bigquery.connectionAdmin
  • Para conceder permissões à conta de serviço da conexão, você precisa da seguinte permissão:

    • resourcemanager.projects.setIamPolicy
  • Para criar o modelo usando o BigQuery ML, você precisa das seguintes permissões do IAM:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Para executar a inferência, você precisa das seguintes permissões:

    • bigquery.tables.getData na tabela
    • bigquery.models.getData no modelo
    • bigquery.jobs.create

Antes de começar

  1. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  2. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  3. Ative as APIs BigQuery, BigQuery Connection,Vertex AI, and Compute Engine.

    Ative as APIs

Crie uma conexão

Crie uma Conexão de recursos do Cloud e tenha acesso à conta de serviço da conexão.

Selecione uma das seguintes opções:

Console

  1. Acessar a página do BigQuery.

    Acessar o BigQuery

  2. Para criar uma conexão, clique em Adicionar e em Conexões com fontes de dados externas.

  3. Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (Cloud Resource).

  4. No campo ID da conexão, insira um nome para a conexão.

  5. Clique em Criar conexão.

  6. Clique em Ir para conexão.

  7. No painel Informações da conexão, copie o ID da conta de serviço para uso em uma etapa posterior.

bq

  1. Em um ambiente de linha de comando, crie uma conexão:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID
    

    O parâmetro --project_id substitui o projeto padrão.

    Substitua:

    • REGION: sua região de conexão
    • PROJECT_ID: o ID do projeto do Google Cloud
    • CONNECTION_ID: um ID para sua conexão

    Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.

    Solução de problemas: se você receber o seguinte erro de conexão, atualize o SDK Google Cloud:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Recupere e copie o ID da conta de serviço para uso em uma etapa posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID
    

    O resultado será assim:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Anexe a seguinte seção ao seu arquivo main.tf.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Substitua:

  • CONNECTION_ID: um ID para sua conexão
  • PROJECT_ID: o ID do projeto do Google Cloud
  • REGION: sua região de conexão

Conceder acesso à conta de serviço da conexão

Conceda permissão à sua conta de serviço para acessar a Vertex AI. Deixar de conceder a permissão resulta em erro. Selecione uma destas opções:

Console

  1. Acesse a página IAM e administrador.

    Acessar IAM e administrador

  2. Clique em Conceder acesso.

  3. Em Novos principais, insira o ID da conta de serviço que você copiou anteriormente.

  4. Clique em Selecionar papel.

  5. Em Filtro, digite Vertex AI Service Agent e selecione esse papel.

  6. Clique em Salvar.

gcloud

Use o comando gcloud projects add-iam-policy-binding (em inglês).

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None

Substitua:

  • PROJECT_NUMBER: o número do projeto.
  • MEMBER: o ID da conta de serviço que você copiou anteriormente.

A conta de serviço associada à sua conexão é uma instância do Agente de serviço da delegação de conexão do BigQuery. Portanto, não há problema em atribuir um papel de agente de serviço a ela.

Conceder acesso à conta de serviço padrão do Compute Engine

Quando você ativa a API Compute Engine, a Conta de serviço padrão do Compute Engine recebe automaticamente o papel de Editor no projeto, a menos que você tenha desativado este comportamento para seu projeto. Se esse for o caso, conceda novamente o papel de Editor ao acesso à conta de serviço padrão do Compute Engine para que ele tenha permissões suficientes para criar e ajustar um modelo remoto.

Console

  1. Acesse a página IAM e administrador.

    Acessar IAM e administrador

  2. Clique em Conceder acesso.

  3. Em Novos principais, insira o ID da conta de serviço, que é PROJECT_NUMBER-compute@developer.gserviceaccount.com.

  4. Clique em Selecionar papel.

  5. Em Selecionar um papel, escolha Básico e selecione Editor.

  6. Clique em Salvar.

gcloud

Use o comando gcloud projects add-iam-policy-binding (em inglês).

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/editor' --condition=None

Substitua:

  • PROJECT_NUMBER: o número do projeto.
  • MEMBER: o ID da conta de serviço, que é PROJECT_NUMBER-compute@developer.gserviceaccount.com.

Criar um modelo com ajuste supervisionado

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte consulta para criar um modelo remoto:

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
    OPTIONS (
      ENDPOINT = 'ENDPOINT',
      MAX_ITERATIONS = MAX_ITERATIONS,
      EARLY_STOP = EARLY_STOP,
      LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER,
      ACCELERATOR_TYPE = 'ACCELERATOR_TYPE',
      DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD',
      DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION,
      DATA_SPLIT_COL = 'DATA_SPLIT_COL',
      EVALUATION_TASK = 'EVALUATION_TASK',
      PROMPT_COL = 'INPUT_PROMPT_COL',
      INPUT_LABEL_COLS = INPUT_LABEL_COLS)
    AS SELECT PROMPT_COLUMN, LABEL_COLUMN
    FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que o modelo será criado.
    • DATASET_ID: o ID do conjunto de dados para conter o modelo. Esse conjunto de dados precisa estar em uma região de upload de modelo e job de pipeline compatível.
    • MODEL_NAME: o nome do modelo
    • REGION: a região usada pela conexão.
    • CONNECTION_ID: o ID da conexão do BigQuery Essa conexão precisa estar no mesmo local que o conjunto de dados que você está usando.

      Quando você visualiza os detalhes da conexão no console do Google Cloud, esse é o valor na última seção do ID da conexão totalmente qualificado, mostrado em ID da conexão, por exemplo, projects/myproject/locations/connection_location/connections/myconnection

    • ENDPOINT: um valor STRING que especifica o nome do LLM de texto a ser usado. Nesse caso, é necessário que seja qualquer versão do modelo text-bison.
    • MAX_ITERATIONS: um valor INT64 que especifica o número de etapas a serem executadas para o ajuste supervisionado. O valor MAX_ITERATIONS precisa estar entre 1 e 2400. Normalmente, 100 etapas levam cerca de uma hora para serem concluídas. O valor padrão é 300.

      O valor MAX_ITERATIONS combinado com o valor ACCELERATOR_TYPE afeta o tamanho do lote usado no treinamento de modelo. Para mais orientações sobre como escolher o número de etapas de treinamento, consulte Configurações recomendadas.

      Confira mais informações em MAX_ITERATIONS.

    • EARLY_STOP: um valor BOOL que determina se o ajuste supervisionado será interrompido antes de concluir todas as etapas. Quando definido como TRUE, interrompe o ajuste supervisionado se o desempenho do modelo, medido pela precisão dos tokens previstos, não melhorar o suficiente entre as execuções de avaliação. Quando definido como FALSE, o ajuste supervisionado continua até que todas as etapas de ajuste sejam concluídas. O valor padrão é FALSE.
    • LEARNING_RATE_MULTIPLIER Um FLOAT64 multiplicador para aplicar à taxa de aprendizado recomendada. O valor padrão é 1.0.
    • ACCELERATOR_TYPE: um valor STRING que especifica o tipo de acelerador a ser usado para o ajuste supervisionado. As opções válidas são as seguintes:
      • GPU: usa GPUs A100 de 80 GB para ajuste supervisionado.
      • TPU: usa 64 núcleos do pod da TPU v3 para ajuste supervisionado. Se você escolher essa opção, acontecerá o seguinte:
        • Execute sua consulta na região europe-west4. Para mais informações sobre como alterar as opções de consulta, como o local, consulte Executar uma consulta interativa.
        • Os cálculos de ajuste supervisionados ocorrem na região europe-west4, porque é nela que os recursos de TPU estão localizados.

      O valor padrão é GPU. Seja qual for a opção usada, verifique se você tem cota suficiente.

    • DATA_SPLIT_METHOD: um valor STRING que especifica o método usado para dividir os dados de entrada em conjuntos de treinamento e avaliação. As opções válidas são:
      • AUTO_SPLIT: o BigQuery ML divide os dados automaticamente. A maneira como os dados são divididos varia de acordo com o número de linhas na tabela de entrada. Esse é o valor padrão.
      • RANDOM: os dados são escolhidos aleatoriamente antes de serem divididos em conjuntos. Para personalizar a divisão de dados, use essa opção com a opção DATA_SPLIT_EVAL_FRACTION.
      • CUSTOM: os dados são divididos usando a coluna fornecida na opção DATA_SPLIT_COL. O valor DATA_SPLIT_COL precisa ser o nome de uma coluna do tipo BOOL. Linhas com valor TRUE ou NULL são usadas como dados de avaliação e as linhas com valor FALSE como dados de treinamento.
      • SEQ: divide os dados usando a coluna fornecida na opção DATA_SPLIT_COL. O valor DATA_SPLIT_COL precisa ser o nome de uma coluna de um dos seguintes tipos:
        • NUMERIC
        • BIGNUMERIC
        • STRING
        • TIMESTAMP

        Os dados são classificados do menor para o maior com base na coluna especificada.

        As primeiras n linhas são usadas como dados de avaliação, em que n é o valor especificado para DATA_SPLIT_EVAL_FRACTION. As linhas restantes são usadas como dados de treinamento.

      • NO_SPLIT: sem divisão de dados; todos os dados de entrada são usados como dados de treinamento.

      Para mais informações sobre essas opções de divisão de dados, consulte DATA_SPLIT_METHOD.

    • DATA_SPLIT_EVAL_FRACTION: um valor FLOAT64 que especifica a fração dos dados a serem usados como dados de avaliação ao executar o ajuste supervisionado. Precisa ser um valor no intervalo [0, 1.0]. O valor padrão é 0.2.

      Use essa opção quando especificar RANDOM ou SEQ como o valor da opção DATA_SPLIT_METHOD. Para personalizar a divisão de dados, use a opção DATA_SPLIT_METHOD com a opção DATA_SPLIT_EVAL_FRACTION.

    • DATA_SPLIT_COL: um valor STRING que especifica o nome da coluna a ser usada para classificar os dados de entrada no conjunto de treinamento ou avaliação. Use quando especificar CUSTOM ou SEQ como o valor da opção DATA_SPLIT_METHOD.
    • EVALUATION_TASK: um valor STRING que especifica o tipo de tarefa que você quer ajustar o modelo para executar. As opções válidas são:
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED

      O valor padrão é UNSPECIFIED.

    • INPUT_PROMPT_COL: um valor STRING que contém o nome da coluna de solicitação na tabela de dados de treinamento a ser usada ao executar o ajuste supervisionado. O valor padrão é prompt.
    • INPUT_LABEL_COLS: um valor ARRAY<<STRING> que contém o nome da coluna de rótulos na tabela de dados de treinamento para usar no ajuste supervisionado. Só é possível especificar um elemento na matriz. O valor padrão é uma matriz vazia. Isso faz com que label seja o valor padrão do argumento LABEL_COLUMN.
    • PROMPT_COLUMN: a coluna na tabela de dados de treinamento que contém o comando para avaliar o conteúdo na coluna LABEL_COLUMN. Essa coluna precisa ser do tipo STRING ou ser convertida para STRING. Se você especificar um valor para a opção INPUT_PROMPT_COL, precisará especificar o mesmo valor para PROMPT_COLUMN. Caso contrário, esse valor precisará ser prompt. Se a tabela não tiver uma coluna prompt, use um alias para especificar uma coluna existente. Por exemplo, AS SELECT hint AS prompt, label FROM mydataset.mytable.
    • LABEL_COLUMN: a coluna na tabela de dados de treinamento que contém os exemplos para treinar o modelo. Essa coluna precisa ser do tipo STRING ou ser convertida para STRING. Se você especificar um valor para a opção INPUT_LABEL_COLS, precisará especificar o mesmo valor para LABEL_COLUMN. Caso contrário, esse valor precisará ser label. Se a tabela não tiver uma coluna label, use um alias para especificar uma coluna existente. Por exemplo, AS SELECT prompt, feature AS label FROM mydataset.mytable.
    • TABLE_PROJECT_ID: o ID do projeto que contém a tabela de dados de treinamento.
    • TABLE_DATASET: o nome do conjunto de dados que contém a tabela de dados de treinamento.
    • TABLE_NAME: o nome da tabela que contém os dados a serem usados para treinar o modelo.

Avaliar o modelo ajustado

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte consulta para avaliar o modelo ajustado:

    SELECT
    *
    FROM
    ML.EVALUATE(
      MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
      TABLE `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`,
      STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens,
        TEMPERATURE AS temperature, TOP_K AS top_k,
        TOP_P AS top_p));
    

    Substitua:

    • PROJECT_ID: o ID do projeto que contém o modelo.
    • DATASET_ID: o ID do conjunto de dados que contém o modelo.
    • MODEL_NAME: o nome do modelo
    • TABLE_PROJECT_ID: o ID do projeto que contém a tabela de dados de avaliação.
    • TABLE_DATASET: o nome do conjunto de dados que contém a tabela de dados de avaliação.
    • TABLE_NAME: o nome da tabela que contém os dados de avaliação.

      A tabela precisa ter uma coluna com um nome igual ao da coluna de comando fornecido durante o treinamento do modelo. É possível fornecer esse valor usando a opção prompt_col durante o treinamento do modelo. Se prompt_col não for especificado, será usada a coluna chamada prompt nos dados de treinamento. Um erro será retornado se não houver uma coluna chamada prompt.

      A tabela precisa ter uma coluna com um nome que corresponda ao nome da coluna de rótulo fornecido durante o treinamento do modelo. É possível fornecer esse valor usando a opção input_label_cols durante o treinamento do modelo. Se input_label_cols não for especificado, será usada a coluna chamada label nos dados de treinamento. Um erro será retornado se não houver uma coluna chamada label.

    • TASK_TYPE: um valor STRING que especifica o tipo de tarefa para avaliar o modelo. As opções válidas são:
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED
    • TOKENS: um valor INT64 que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo [1,1024]. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é 128.
    • TEMPERATURE: um valor FLOAT64 no intervalo [0.0,1.0] que controla o grau de aleatoriedade na seleção de token. O padrão é 0.

      Valores mais baixos para temperature são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos para temperature podem gerar resultados mais diversos ou criativos. Um valor de 0 para temperature é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.

    • TOP_K: um valor INT64 no intervalo [1,40] que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é 40.
    • TOP_P: um valor FLOAT64 no intervalo [0.0,1.0] ajuda a determinar quais tokens do pool determinado por TOP_K são selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é 0.95.

Gerar texto

Gere texto com a função ML.GENERATE_TEXT:

Coluna do comando

Gerar texto usando uma coluna da tabela para fornecer o comando.

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  TABLE PROJECT_ID.DATASET_ID.TABLE_NAME,
  STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
  TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Substitua:

  • PROJECT_ID: o ID do projeto.
  • DATASET_ID: o ID do conjunto de dados que contém o modelo.
  • MODEL_NAME: o nome do modelo
  • TABLE_NAME: o nome da tabela que contém o comando. Essa tabela precisa ter uma coluna com um nome que corresponda ao nome da coluna de atributo no LLM ajustado. É possível definir o nome da coluna de atributos no LLM usando a opção PROMPT_COL ao criar o modelo. Caso contrário, o nome da coluna de atributos no LLM será prompt por padrão, ou você pode usar um alias para usar uma coluna com nome diferente.
  • TOKENS: um valor INT64 que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo [1,1024]. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é 128.
  • TEMPERATURE: um valor FLOAT64 no intervalo [0.0,1.0] que controla o grau de aleatoriedade na seleção de token. O padrão é 0.

    Valores mais baixos para temperature são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos para temperature podem gerar resultados mais diversos ou criativos. Um valor de 0 para temperature é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.

  • TOP_K: um valor INT64 no intervalo [1,40] que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é 40.
  • TOP_P: um valor FLOAT64 no intervalo [0.0,1.0] ajuda a determinar quais tokens do pool determinado por TOP_K são selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é 0.95.
  • FLATTEN_JSON: um valor BOOL que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão é FALSE.
  • STOP_SEQUENCES: um valor ARRAY<STRING> que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.

O exemplo a seguir mostra uma solicitação com estas características:

  • Usa a coluna prompt da tabela prompts para a solicitação.
  • Ela retorna uma resposta curta e moderadamente provável:
  • Retorna o texto gerado e os atributos de segurança em colunas separadas.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      40 AS top_k, TRUE AS flatten_json_output));

Consulta do comando

Gerar texto usando uma consulta para fornecer o comando.

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  (PROMPT_QUERY),
  STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
  TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Substitua:

  • PROJECT_ID: o ID do projeto.
  • DATASET_ID: o ID do conjunto de dados que contém o modelo.
  • MODEL_NAME: o nome do modelo
  • PROMPT_QUERY: uma consulta que fornece os dados do comando.
  • TOKENS: um valor INT64 que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo [1,1024]. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é 128.
  • TEMPERATURE: um valor FLOAT64 no intervalo [0.0,1.0] que controla o grau de aleatoriedade na seleção de token. O padrão é 0.

    Valores mais baixos para temperature são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos para temperature podem gerar resultados mais diversos ou criativos. Um valor de 0 para temperature é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.

  • TOP_K: um valor INT64 no intervalo [1,40] que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é 40.
  • TOP_P: um valor FLOAT64 no intervalo [0.0,1.0] ajuda a determinar quais tokens do pool determinado por TOP_K são selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é 0.95.
  • FLATTEN_JSON: um valor BOOL que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão é FALSE.
  • STOP_SEQUENCES: um valor ARRAY<STRING> que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.

Exemplo 1

O exemplo a seguir mostra uma solicitação com estas características:

  • Solicita um resumo do texto na coluna body da tabela articles.
  • Retorna uma resposta moderadamente longa e mais provável.
  • Retorna o texto gerado e os atributos de segurança em colunas separadas.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(
      0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p,
      15 AS top_k, TRUE AS flatten_json_output));

Exemplo 2

O exemplo a seguir mostra uma solicitação com estas características:

  • Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
  • Ela retorna uma resposta curta e moderadamente provável:
  • Não retorna o texto gerado e os atributos de segurança em colunas separadas.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_tuned_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      30 AS top_k, FALSE AS flatten_json_output));