Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta seção aborda informações sobre o carregamento de dados na computação de GPU sem servidor especificamente para aplicativos ML e DL. Verifique o tutorial para saber mais sobre como carregar e transformar dados usando a API do Python do Spark.
Carregar dados de tabela
Use o Spark Connect para carregar dados de machine learning tabulares de tabelas Delta.
Para treinamento de único nó, você pode converter DataFrames do Apache Spark em DataFrames do pandas usando o método PySparktoPandas(), e, opcionalmente, converter em 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 código. Consulte Comparar o Spark Connect com o Spark Classic.
O Spark Connect dá suporte à maioria das APIs do PySpark, incluindo o Spark SQL, a API do Pandas no Spark, o Streaming Estruturado e o MLlib (baseado em DataFrame). Consulte a documentação de referência da API do PySpark para obter as APIs mais recentes com suporte.
Para outras limitações, consulte limitações de computação sem servidor.
Carregar dados no decorador @distributed
Ao usar a API de GPU sem servidor para treinamento distribuído, mova o código de carregamento de dados no decorador @distributed. O tamanho do conjunto de dados pode exceder o tamanho máximo permitido pelo pickle, assim, é recomendável gerar o conjunto de dados 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 /Volumes diretórios são hospedados no armazenamento remoto do Unity Catalog. Se o conjunto de dados estiver armazenado no Catálogo do Unity, a velocidade de carregamento de 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 /tmp diretório hospedado em discos SSD do NVMe (armazenamento super rápido).
Se o conjunto de dados for grande, também recomendamos as seguintes técnicas para paralelizar o treinamento e o carregamento de dados:
- Ao treinar várias épocas, atualize o conjunto de dados para armazenar arquivos em cache localmente no
/tmpdiretório antes de ler cada arquivo. Em épocas subsequentes, use a versão armazenada em cache. - Paralelize a obtenção de dados habilitando os processos na API do DataLoader do torch. Defina
num_workerscomo pelo menos 2. Por padrão, cada trabalhador 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 trabalhador pré-carrega).