Share via


Carregar dados usando Petastorm

Este artigo descreve como usar o Petastorm para converter dados do Apache Spark em TensorFlow ou PyTorch. Ele também fornece um exemplo mostrando como usar o Petastorm para preparar dados para ml.

O Petastorm é uma biblioteca de acesso a dados de código aberto. Ela permite o treinamento de nó único ou distribuído e a avaliação de modelos de aprendizado profundo diretamente em conjuntos de dados no formato Apache Parquet e em conjuntos de dados que já estão carregados como DataFrames do Spark Apache. O Petastorm dá suporte a estruturas populares de ML (aprendizado de máquina) baseadas em Python, como o TensorFlow, o PyTorch e o PySpark. Para obter mais informações sobre o Petastorm, confira a documentação da API do Petastorm.

Carregar dados de DataFrames do Spark usando o Petastorm

A API do conversor do Spark do Petastorm simplifica a conversão de dados do Spark para o TensorFlow ou o PyTorch. O DataFrame de entrada do Spark é primeiro materializado no formato Parquet e depois carregado como um tf.data.Dataset ou um torch.utils.data.DataLoader. Confira a seção API do Conversor de Conjunto de Dados do Spark na documentação da API do Petastorm.

O fluxo de trabalho recomendado é:

  1. Usar o Apache Spark para carregar e, opcionalmente, processar previamente os dados.
  2. Usar o método spark_dataset_converter do Petastorm para converter dados de um DataFrame do Spark em um conjunto de dados do TensorFlow ou em um DataLoader do PyTorch.
  3. Alimentar os dados em uma estrutura de DL para treinamento ou inferência.

Configurar o diretório de cache

O conversor do Spark do Petastorm armazena em cache o DataFrame de entrada do Spark no formato Parquet em um local do diretório de cache especificado pelo usuário. O diretório de cache precisa ser um caminho do DBFS que comece com file:///dbfs/, por exemplo, file:///dbfs/tmp/foo/, que se refere ao mesmo local que dbfs:/tmp/foo/. Você pode configurar o diretório de cache de duas maneiras:

  • Na configuração do Spark do cluster, adicione a linha: petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...

  • No seu notebook, chame spark.conf.set():

    from petastorm.spark import SparkDatasetConverter, make_spark_converter
    
    spark.conf.set(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF, 'file:///dbfs/...')
    

Você pode excluir explicitamente o cache depois de usá-lo chamando converter.delete() ou gerenciar o cache implicitamente configurando as regras de ciclo de vida no armazenamento de objetos.

O Databricks dá suporte ao treinamento de DL em três cenários:

  • Treinamento de nó único
  • Ajuste de hiperparâmetro distribuído
  • Treinamento distribuído

Para ver exemplos completos, confira os seguintes notebooks:

Carregar arquivos Parquet diretamente usando o Petastorm

Esse método é menos preferencial do que a API do conversor do Spark do Petastorm.

O fluxo de trabalho recomendado é:

  1. Usar o Apache Spark para carregar e, opcionalmente, processar previamente os dados.
  2. Salve os dados no formato Parquet em um caminho do DBFS que tenha uma montagem do DBFS complementar.
  3. Carregue dados no formato Petastorm por meio do ponto de montagem do DBFS.
  4. Use dados em uma estrutura de DL para treinamento ou inferência.

Confira o exemplo de notebook para ver um exemplo completo.

Exemplos: Pré-processar dados e treinar modelos com TensorFlow ou PyTorch

Este notebook de exemplo demonstra o seguinte fluxo de trabalho no Databricks:

  1. Carregue dados usando o Spark.
  2. Converta o DataFrame do Spark em um Conjunto de Dados do TensorFlow usando o Petastorm.
  3. Alimente os dados em um modelo tensorflow de nó único para treinamento.
  4. Alimente os dados em uma função de ajuste de hiperparâmetro distribuído.
  5. Alimente os dados em um modelo do TensorFlow distribuído para treinamento.

Simplificar a conversão de dados do Spark para o notebook do TensorFlow

Obter notebook

Este notebook de exemplo demonstra o seguinte fluxo de trabalho no Databricks:

  1. Carregue dados usando o Spark.
  2. Converta o DataFrame do Spark em um DataLoader do PyTorch usando o Petastorm.
  3. Alimente os dados em um modelo PyTorch de nó único para treinamento.
  4. Alimente os dados em uma função de ajuste de hiperparâmetro distribuído.
  5. Alimente os dados em um modelo PyTorch distribuído para treinamento.

Simplificar a conversão de dados do Spark para o notebook do PyTorch

Obter notebook

Exemplo: pré-processar dados e carregar arquivos Parquet com Petastorm

Este notebook de exemplo mostra o seguinte fluxo de trabalho no Databricks:

  1. Use o Spark para localizar, carregar e pré-processar dados.
  2. Salve dados usando Parquet em dbfs:/ml.
  3. Carregue dados usando o Petastorm por meio da montagem otimizada do FUSE file:/dbfs/ml.
  4. Alimentar os dados em uma estrutura de aprendizado profundo para treinamento ou inferência.

Usar o Spark e o Petastorm para preparar dados para o notebook de aprendizado profundo

Obter notebook