Carregar os dados com o Petastorm
Este artigo descreve como usar o Petastorm converter dados do Apache Spark para TensorFlow ou PyTorch. Ele também fornece um exemplo mostrando como usar Petastorm para preparar dados para ML.
Nota
O petastorm
pacote foi preterido. O Mosaic Streaming é o substituto recomendado para carregar grandes conjuntos de dados a partir do armazenamento em nuvem.
Petastorm é uma biblioteca de acesso a dados de código aberto. Ele permite treinamento de nó único ou distribuído e avaliação de modelos de aprendizagem profunda diretamente de conjuntos de dados no formato Apache Parquet e conjuntos de dados que já estão carregados como Apache Spark DataFrames. O Petastorm suporta estruturas populares de aprendizado de máquina (ML) baseadas em Python, como TensorFlow, PyTorch e PySpark. Para obter mais informações sobre o Petastorm, consulte a documentação da API do Petastorm.
Carregar dados do Spark DataFrames usando Petastorm
A API do conversor Petastorm Spark simplifica a conversão de dados do Spark para TensorFlow ou PyTorch. A entrada Spark DataFrame é primeiro materializada no formato Parquet e, em seguida, carregada como um tf.data.Dataset
ou torch.utils.data.DataLoader
.
Consulte a seção Spark Dataset Converter API na documentação da Petastorm API.
O fluxo de trabalho recomendado é:
- Use o Apache Spark para carregar e, opcionalmente, pré-processar dados.
- Use o método Petastorm
spark_dataset_converter
para converter dados de um Spark DataFrame em um conjunto de dados TensorFlow ou um DataLoader PyTorch. - Alimente dados em uma estrutura de DL para treinamento ou inferência.
Configurar diretório de cache
O conversor Petastorm Spark armazena em cache o DataFrame Spark de entrada no formato Parquet em um local de diretório de cache especificado pelo usuário. O diretório de cache deve ser um caminho DBFS começando com file:///dbfs/
, por exemplo, file:///dbfs/tmp/foo/
que se refere ao mesmo local dbfs:/tmp/foo/
que . Você pode configurar o diretório de cache de duas maneiras:
Na configuração do cluster Spark, adicione a linha:
petastorm.spark.converter.parentCacheDirUrl file:///dbfs/...
No seu bloco de notas, 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 em seu armazenamento de objetos.
O Databricks suporta treinamento DL em três cenários:
- Treinamento de nó único
- Ajuste distribuído de hiperparâmetros
- Preparação distribuída
Para obter exemplos de ponta a ponta, consulte os seguintes blocos de anotações:
- Simplifique a conversão de dados do Spark para o TensorFlow
- Simplifique a conversão de dados do Spark para o PyTorch
Carregue arquivos do Parquet diretamente usando Petastorm
Este método é menos preferido do que a API do conversor Petastorm Spark.
O fluxo de trabalho recomendado é:
- Use o Apache Spark para carregar e, opcionalmente, pré-processar dados.
- Salve dados no formato Parquet em um caminho DBFS que tenha uma montagem DBFS complementar.
- Carregue dados no formato Petastorm através do ponto de montagem DBFS.
- Use dados em uma estrutura de DL para treinamento ou inferência.
Consulte o bloco de anotações de exemplo para obter um exemplo de ponta a ponta.
Exemplos: Pré-processar dados e treinar modelos com TensorFlow ou PyTorch
Este bloco de anotações de exemplo demonstra o seguinte fluxo de trabalho no Databricks:
- Carregue dados usando o Spark.
- Converta o Spark DataFrame em um conjunto de dados TensorFlow usando 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ída.
- Alimente os dados em um modelo distribuído do TensorFlow para treinamento.
Simplifique a conversão de dados do notebook Spark para o TensorFlow
Este bloco de anotações de exemplo demonstra o seguinte fluxo de trabalho no Databricks:
- Carregue dados usando o Spark.
- Converta o Spark DataFrame em um DataLoader PyTorch usando 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ída.
- Alimente os dados em um modelo PyTorch distribuído para treinamento.
Simplifique a conversão de dados do notebook Spark para o PyTorch
Exemplo: Pré-processar dados e carregar arquivos Parquet com Petastorm
Este bloco de anotações de exemplo mostra o seguinte fluxo de trabalho no Databricks:
- Use o Spark para carregar e pré-processar dados.
- Salve dados usando o Parquet em
dbfs:/ml
. - Carregue dados usando Petastorm através do suporte
file:/dbfs/ml
FUSE otimizado. - Alimente dados em uma estrutura de aprendizado profundo para treinamento ou inferência.