Pré-processar dados com o MLTransform

Nesta página, explicamos por que e como usar o recurso MLTransform para preparar seus dados para o treinamento de modelos de machine learning (ML). Ao combinar várias transformações de processamento de dados em uma classe, o MLTransform simplifica o processo de aplicação de operações de processamento de dados de ML do Apache Beam no fluxo de trabalho.

Diagrama do fluxo de trabalho de ML do Dataflow com a etapa de processamento de dados destacada.

Figura 1. O fluxo de trabalho completo do Dataflow ML. Use MLTransform na etapa de pré-processamento do fluxo de trabalho.

Benefícios

A classe MLTransform oferece os seguintes benefícios:

  • Transforme seus dados sem escrever códigos complexos ou gerenciar bibliotecas.
  • Gere embeddings que podem ser usados para enviar dados a bancos de dados de vetores ou executar inferência.
  • Encadeie vários tipos de operações de processamento de maneira eficiente com uma só interface.

Suporte e limitações

A classe MLTransform tem as seguintes limitações:

  • Disponível para pipelines que usam as versões 2.53.0 e posteriores do SDK do Apache Beam para Python.
  • Os pipelines precisam usar janelas padrão.

Transformações de embedding de texto:

Transformações de processamento de dados que usam o TFT:

  • Compatíveis com Python 3.9, 3.10, 3.11.
  • Compatíveis com pipelines em lote.

Casos de uso

Os notebooks de exemplo demonstram como usar o MLTransform para casos de uso específicos.

Quero gerar embeddings de texto para meu LLM usando a Vertex AI
Use a classe MLTransform do Apache Beam com a API text-embeddings da Vertex AI para gerar embeddings de texto. Os embeddings de texto são uma maneira de representar o texto como vetores numéricos, o que é necessário para muitas tarefas de processamento de linguagem natural (PLN).
Quero gerar embeddings de texto para meu LLM usando a Hugging Face
Use a classe MLTransform do Apache Beam com modelos do Hugging Face Hub para gerar embeddings de texto. O framework SentenceTransformers da Hugging Face usa Python para gerar embeddings de sentenças, textos e imagens.
Quero computar o vocabulário de um conjunto de dados
Compute um vocabulário exclusivo de um conjunto de dados e depois mapeie cada palavra ou token com um índice distinto de números inteiros. Use essa transformação para transformar dados textuais em representações numéricas para tarefas de machine learning.
Quero dimensionar meus dados para treinar um modelo de ML
Dimensione os dados para usá-los no treinamento do seu modelo de ML. A classe MLTransform do Apache Beam inclui várias transformações de dimensionamento de dados.

Para conferir uma lista completa de transformações disponíveis, consulte Transformações na documentação do Apache Beam.

Usar o MLTransform

Para usar a classe MLTransform para pré-processar dados, inclua o seguinte código no seu pipeline:

  import apache_beam as beam
  from apache_beam.ml.transforms.base import MLTransform
  from apache_beam.ml.transforms.tft import TRANSFORM_NAME
  import tempfile

  data = [
      {
          DATA
      },
  ]

  artifact_location = gs://BUCKET_NAME
  TRANSFORM_FUNCTION_NAME = TRANSFORM_NAME(columns=['x'])

  with beam.Pipeline() as p:
    transformed_data = (
        p
        | beam.Create(data)
        | MLTransform(write_artifact_location=artifact_location).with_transform(
            TRANSFORM_FUNCTION_NAME)
        | beam.Map(print))

Substitua os seguintes valores:

  • TRANSFORM_NAME: o nome da transformação a ser usada
  • BCUKET_NAME: o nome do bucket do Cloud Storage.
  • DATA: os dados de entrada a serem transformados
  • TRANSFORM_FUNCTION_NAME: o nome que você atribui à função de transformação no seu código

A seguir