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 é:
- Usar o Apache Spark para carregar e, opcionalmente, processar previamente os dados.
- 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. - 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:
- Simplificar a conversão de dados do Spark para o TensorFlow
- Simplificar a conversão de dados do Spark para o PyTorch
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 é:
- Usar o Apache Spark para carregar e, opcionalmente, processar previamente os dados.
- Salve os dados no formato Parquet em um caminho do DBFS que tenha uma montagem do DBFS complementar.
- Carregue dados no formato Petastorm por meio do ponto de montagem do DBFS.
- 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:
- Carregue dados usando o Spark.
- Converta o DataFrame do Spark em um Conjunto de Dados do TensorFlow usando o Petastorm.
- Alimente os dados em um modelo tensorflow de nó único para treinamento.
- Alimente os dados em uma função de ajuste de hiperparâmetro distribuído.
- 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
Este notebook de exemplo demonstra o seguinte fluxo de trabalho no Databricks:
- Carregue dados usando o Spark.
- Converta o DataFrame do Spark em um DataLoader do PyTorch usando o Petastorm.
- Alimente os dados em um modelo PyTorch de nó único para treinamento.
- Alimente os dados em uma função de ajuste de hiperparâmetro distribuído.
- Alimente os dados em um modelo PyTorch distribuído para treinamento.
Simplificar a conversão de dados do Spark para o notebook do PyTorch
Exemplo: pré-processar dados e carregar arquivos Parquet com Petastorm
Este notebook de exemplo mostra o seguinte fluxo de trabalho no Databricks:
- Use o Spark para localizar, carregar e pré-processar dados.
- Salve dados usando Parquet em
dbfs:/ml
. - Carregue dados usando o Petastorm por meio da montagem otimizada do FUSE
file:/dbfs/ml
. - Alimentar os dados em uma estrutura de aprendizado profundo para treinamento ou inferência.