Partilhar via


Carregar dados na computação de GPU Serverless

Esta secção cobre informações sobre o carregamento de dados em computação de GPU serverless, especificamente para aplicações de ML e DL. Consulte o tutorial para saber mais sobre como carregar e transformar dados usando a API Python do Spark.

Carregar dados tabulares

Use o Spark Connect para carregar dados de aprendizagem automática tabulares de tabelas Delta.

Para treino de nó único, pode converter Apache Spark DataFrames em pandas DataFrames usando o método PySparktoPandas(), e, opcionalmente, converter para o formato NumPy usando o método PySparkto_numpy().

Observação

O Spark Connect adia a análise e a resolução de nomes para o tempo de execução, o que pode alterar o comportamento do seu código. Consulte Comparar o Spark Connect com o Spark Classic.

O Spark Connect suporta a maioria das APIs PySpark, incluindo Spark SQL, Pandas API no Spark, Structured Streaming e MLlib (baseado em DataFrame). Consulte a documentação de referência da API PySpark para as APIs mais recentes suportadas.

Para outras limitações, consulte as limitações da computação sem servidor.

Carregue dados no decorador @distributed

Ao usar a API de GPU Serverless para treinamento distribuído, mova o código de carregamento de dados para dentro do decorador @distributed. O tamanho do conjunto de dados pode exceder o tamanho máximo permitido pelo pickle, por isso é recomendado criar o conjunto de dados dentro do decorador, como mostrado abaixo:

from serverless_gpu import distributed

# this may cause pickle error
dataset = get_dataset(file_path)
@distributed(gpus=8, remote=True)
def run_train():
  # good practice
  dataset = get_dataset(file_path)
  ....

Desempenho de carregamento de dados

/Workspace e /Volumes os diretórios são alojados em armazenamento remoto do Unity Catalog. Se o seu conjunto de dados estiver armazenado no Unity Catalog, a velocidade de carregamento dos dados é limitada pela largura de banda da rede disponível. Se estiveres a treinar várias épocas, recomenda-se primeiro copiar os dados localmente, especificamente para o /tmp diretório que está alojado em armazenamento super rápido (discos SSD NVMe).

Se o seu conjunto de dados for grande, também recomendamos as seguintes técnicas para paralelizar o treino e o carregamento de dados:

  • Ao treinar múltiplas épocas, atualize o seu conjunto de dados para ficheiros em cache localmente no /tmp diretório antes de ler cada ficheiro. Nas épocas seguintes, use a versão em cache.
  • Paralelize a obtenção de dados ativando os processos na API DataLoader do Torch. Definir num_workers para pelo menos 2. Por defeito, cada trabalhador precarrega dois itens de trabalho. Para melhorar o desempenho, aumentar num_workers (o que aumentará as leituras paralelas) ou prefetch_factor (o que aumentará o número de itens que cada trabalhador pré-busca).