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().
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:
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
/tmpantes 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_workerscom pelo menos 2. Por default, cada worker pré-busca dois itens de trabalho. Para melhorar o desempenho, aumentenum_workers(o que aumentará as leituras paralelas) ouprefetch_factor(o que aumentará o número de itens que cada worker pré-busca).