Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
/tmpdiretó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_workerspara pelo menos 2. Por defeito, cada trabalhador precarrega dois itens de trabalho. Para melhorar o desempenho, aumentarnum_workers(o que aumentará as leituras paralelas) ouprefetch_factor(o que aumentará o número de itens que cada trabalhador pré-busca).