Como exportar modelos

Visão geral

Nesta página, você aprenderá como exportar modelos do BigQuery ML. É possível exportar modelos do BigQuery ML para o Cloud Storage e usá-los para realizar previsões on-line ou editá-los no Python. Há três maneiras de exportar modelos:

Os seguintes tipos de modelo podem ser exportados:

  • KMEANS
  • LINEAR_REG
  • LOGISTIC_REG
  • MATRIX_FACTORIZATION
  • TENSORFLOW (modelos importados do TensorFlow)

Exportar formatos de modelos e amostras

A tabela a seguir mostra os formatos finais de exportação para cada tipo de modelo do BigQuery ML, bem como uma amostra dos arquivos que são gravados no bucket do Cloud Storage.

Tipo de modelo Formato do modelo para exportação Amostra de arquivos exportados
KMEANS SavedModel do TensorFlow (TF 1.15 ou superior) gcs_bucket/
  assets/
    f1.txt
    f2.txt
  saved_model.pb
  variables/
    variables.data-00-of-01
    variables.index
LINEAR_REGRESSOR
LOGISTIC_REG
MATRIX_FACTORIZATION
TENSORFLOW (importado) SavedModel do TensorFlow Exatamente os mesmos arquivos que estavam presentes ao importar o modelo

Limitações

  • Não será possível exportar modelos se qualquer um dos recursos a seguir for usado durante o treinamento:
    • Se os tipos de recurso ARRAY, TIMESTAMP ou GEOGRAPHY estiverem presentes nos dados de entrada.
    • Se a cláusula TRANSFORM do BigQuery ML for usada na engenharia de atributos.

Como exportar modelos do BigQuery ML

Para exportar um modelo:

Console

  1. Abra a IU da Web do BigQuery no Console do Cloud.
    Acesse o Console do Cloud

  2. No painel de navegação, na seção Recursos, expanda seu projeto e selecione um conjunto de dados. Localize e clique no modelo que você quer exportar.

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

    Exportar modelo

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

    • Em Selecionar local do Cloud Storage, procure o local do bucket ou da pasta em que você quer exportar o modelo.
    • Clique em Exportar para finalizar a operação.

Para verificar o andamento, procure o job de Exportação no Histórico de jobs, na parte superior do painel de navegação.

CLI

Use o comando bq extractcom a sinalização --model.

(Opcional) Forneça a sinalização --location e defina o valor como seu local.

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

Em que:

  • location é o nome do local. A sinalização --location é opcional. Por exemplo, se você estiver usando o BigQuery na região de Tóquio, defina o valor da sinalização como asia-northeast1. Defina um valor padrão para a unidade usando o arquivo .bigqueryr.
  • project_id é o ID do projeto;
  • dataset é o nome do conjunto de dados de origem;
  • model é o modelo que você está exportando;
  • bucket é o nome do bucket do Cloud Storage para onde os dados estão sendo exportados. O conjunto de dados do BigQuery e o bucket do Cloud Storage precisam estar no mesmo local;
  • model_folder é o nome da pasta em que os arquivos do modelo exportado serão gravados.

Exemplos:

O comando a seguir exporta mydataset.mymodel no formato SavedModel do TensorFlow para um bucket do Cloud Storage chamado mymodel_folder.

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

API

Para exportar um modelo, crie um job extract e preencha a configuração dele.

(Opcional) Especifique seu local na propriedade location na seção jobReference do recurso job.

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

  2. Especifique o modelo de origem usando o objeto de configuração sourceModel, que contém os IDs do projeto, do conjunto de dados e do modelo.

  3. É necessário que a propriedade destination URI(s) seja totalmente qualificada, no formato gs://bucket/model_folder.

  4. Para verificar o status do job, chame jobs.get(job_id) usando o ID de job retornado na solicitação inicial.

    • Se status.state = DONE aparecer, o job foi concluído com sucesso.
    • Se a propriedade status.errorResult aparecer, isso indica que houve falha na solicitação, e o objeto incluirá informações que descrevem o erro.
    • Se status.errorResult não aparecer, o job foi concluído com sucesso, mesmo se tiver ocorrido erros não fatais. Tais erros são listados na propriedade status.errors do objeto do job retornado.

Observações sobre a API:

  • Como prática recomendada, gere um ID exclusivo e transmita-o como jobReference.jobId ao chamar jobs.insert para criar um job. Essa abordagem é mais resistente a falhas de rede porque o cliente pode pesquisar ou tentar novamente com o ID do job conhecido.

  • Chamar jobs.insert em um determinado ID de job é idempotente, ou seja, mesmo que você repita o processo inúmeras vezes com o mesmo ID, somente uma das operações, no máximo, será bem-sucedida.

Implantação do modelo

É possível implantar o modelo exportado no Google Cloud AI Platform e localmente.

Implantação no AI Platform

Formato do modelo para exportação Implantação
SavedModel do TensorFlow Implantar um SavedModel do Tensorflow (versão de ambiente de execução 1.15 ou superior)

Implantação local

Formato do modelo para exportação Implantação
SavedModel do TensorFlow O SavedModel é um formato padrão que pode ser implantado no contêiner Docker do Tensorflow Serving.

Também é possível aproveitar a execução local da previsão on-line do AI Platform.

Formato de saída da previsão

Nesta seção, você verá o formato de saída da previsão para cada tipo de modelo exportado. Todos os tipos de modelo exportado são compatíveis com a previsão em lote, podendo processar várias linhas de entrada por vez. Por exemplo, há duas linhas de entrada em cada um dos exemplos de formato de saída a seguir.

KMEANS

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

+-----------------+
| PREDICTED_LABEL |
+-----------------+
| FLOAT           |
+-----------------+
        

+-----------------+
| PREDICTED_LABEL |
+-----------------+
| [1.8]           |
+-----------------+
| [2.46]          |
+-----------------+
       

LOGISTIC_REG

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

Observação: no momento, é possível usar apenas um usuário de entrada e gerar os 50 principais pares (predicted_rating, predicted_item) classificados por predicted_rating em ordem decrescente.

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

Permissões necessárias

Para exportar um modelo do BigQuery ML para o Cloud Storage, você precisa ter permissões para acessar o modelo, executar jobs de exportação e gravar os dados no bucket do Cloud Storage.

Permissões do BigQuery

  • Para exportar modelos, é necessário ter, no mínimo, as permissões bigquery.models.export. Os papéis predefinidos do Cloud IAM a seguir incluem permissões bigquery.models.export:

    • bigquery.dataViewer
    • bigquery.dataOwner
    • bigquery.dataEditor
    • bigquery.admin
  • Para executar um job de exportação, é necessário ter, no mínimo, as permissões bigquery.jobs.create. Os papéis predefinidos do Cloud IAM a seguir incluem permissões bigquery.jobs.create:

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

Permissões do Cloud Storage

  • Para gravar dados em um bucket do Cloud Storage, é necessário ter permissões storage.objects.create. Os papéis predefinidos do Cloud IAM a seguir incluem permissões storage.objects.create:

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

Para mais informações sobre papéis e permissões do IAM no BigQuery ML, consulte Controle de acesso. Para saber mais sobre os papéis no nível do conjunto de dados, consulte Papéis primários para conjuntos de dados na documentação do BigQuery.

Considerações sobre o local

Ao escolher um local para os dados, leve em consideração os seguintes itens:

  • Defina os buckets do Cloud Storage que receberão os dados exportados.
    • Ao exportar dados, o bucket regional ou multirregional do Cloud Storage precisa estar no mesmo local que o conjunto de dados do BigQuery. Por exemplo, se o conjunto de dados do BigQuery ML estiver no local multirregional UE, o bucket do Cloud Storage que contém os dados a serem exportados precisará estar em um local regional ou multirregional na UE.
    • Se o conjunto de dados estiver em um local regional, seu bucket do Cloud Storage precisará ser um bucket regional no mesmo local. Por exemplo, se o conjunto de dados estiver na região de Tóquio, seu intervalo do Cloud Storage precisará ser um intervalo regional em Tóquio.
    • Exceção: se o seu conjunto de dados estiver no local multirregional dos EUA, será possível exportar dados para um intervalo do Cloud Storage em qualquer local regional ou multirregional.
  • Desenvolver um plano de gerenciamento de dados.
    • Se você escolher um recurso de armazenamento regional, como um conjunto de dados do BigQuery ML ou um bucket do Cloud Storage, será necessário desenvolver um plano para gerenciar geograficamente seus dados.

Para mais informações sobre locais do Cloud Storage, consulte Locais de intervalos na documentação do Cloud Storage.

Como mover dados do BigQuery entre locais

Não é permitido alterar o local de um conjunto de dados após a criação, mas é possível fazer uma cópia dele.

Política de cotas

Consulte Jobs de exportação na página "Cotas e limites" para mais informações sobre as cotas para esse tipo de job.

Preços

Não há cobrança pela exportação de modelos do BigQuery ML. No entanto, as exportações estão sujeitas a cotas e limites do BigQuery. Consulte a página de preços do BigQuery para mais informações.

Depois que os dados forem exportados, você será cobrado pelo armazenamento deles no Cloud Storage. Consulte a página de preços do Cloud Storage para mais informações.

A seguir