Partilhar via


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 o Petastorm para preparar dados para ML.

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 é:

  1. Use o Apache Spark para carregar e, opcionalmente, pré-processar dados.
  2. 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.
  3. 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:

Carregue arquivos Parquet diretamente usando Petastorm

Este método é menos preferido do que a API do conversor Petastorm Spark.

O fluxo de trabalho recomendado é:

  1. Use o Apache Spark para carregar e, opcionalmente, pré-processar dados.
  2. Salve dados no formato Parquet em um caminho DBFS que tenha uma montagem DBFS complementar.
  3. Carregue dados no formato Petastorm através do ponto de montagem DBFS.
  4. 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:

  1. Carregue dados usando o Spark.
  2. Converta o Spark DataFrame em um conjunto de dados TensorFlow usando 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ída.
  5. Alimente os dados em um modelo distribuído do TensorFlow para treinamento.

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

Obter o bloco de notas

Este bloco de anotações de exemplo demonstra o seguinte fluxo de trabalho no Databricks:

  1. Carregue dados usando o Spark.
  2. Converta o Spark DataFrame em um DataLoader PyTorch usando 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ída.
  5. Alimente os dados em um modelo PyTorch distribuído para treinamento.

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

Obter o bloco de notas

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:

  1. Use o Spark para carregar e pré-processar dados.
  2. Salve dados usando o Parquet em dbfs:/ml.
  3. Carregue dados usando Petastorm através do suporte file:/dbfs/mlFUSE otimizado.
  4. Alimente dados em uma estrutura de aprendizado profundo para treinamento ou inferência.

Use o Spark e o Petastorm para preparar dados para o bloco de anotações de aprendizado profundo

Obter o bloco de notas