Pular para o conteúdo principal

Carregar dados em computeGPU sem servidor

Esta seção aborda informações sobre o carregamento de dados em compute GPU serverless , especificamente para aplicações de aprendizado ML e aprendizado profundo (DL). Confira o tutorial para saber mais sobre como carregar e transformar dados usando a API Spark Python .

Carregar dados tabulares

Utilize Spark Connect para carregar dados tabulares machine learning a partir de tabelasDelta.

Para treinamento de nó único, você pode converter DataFrames Apache Spark em DataFrames Pandas usando o métodoPySpark toPandas() e, opcionalmente, converter para o formato NumPy usando o métodoPySpark to_numpy().

nota

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

Spark Connect é compatível com a maioria APIs PySpark , incluindo Spark SQL, Pandas API on Spark, transmissão estruturada e MLlib (baseada em DataFrame). Consulte a documentação de referência da API PySpark para obter informações sobre as APIs suportadas mais recentes.

Para outras limitações, consulte Limitações compute sem servidor.

Carregar dados dentro do decorador @distributed

Ao usar a APIde GPU sem servidor para treinamento distribuído, mova o código de carregamento de dados para dentro do decorador @distributed . O tamanho dataset pode exceder o tamanho máximo permitido pelo pickle, portanto, recomenda-se gerar o dataset dentro do decorador, conforme mostrado abaixo:

Python
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 os diretórios /Volumes estão hospedados no armazenamento remoto Unity Catalog . Se o seu dataset estiver armazenado no Unity Catalog, a velocidade de carregamento dos dados será limitada pela largura de banda de rede disponível. Se você estiver treinando várias épocas, é recomendável primeiro copiar os dados localmente, especificamente para o diretório /tmp que está hospedado em armazenamento super rápido (discos SSD NVMe).

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

  • Ao treinar várias épocas, atualize seu dataset para armazenar em cache os arquivos localmente no diretório /tmp antes de ler cada arquivo. Nas épocas subsequentes, utilize a versão em cache.
  • Paralelize a busca de dados habilitando o worker na API DataLoader do PyTorch . Defina num_workers com pelo menos 2. Por default, cada worker pré-busca dois itens de trabalho. Para melhorar o desempenho, aumente num_workers (o que aumentará as leituras paralelas) ou prefetch_factor (o que aumentará o número de itens que cada worker pré-busca).