Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette section couvre les informations sur le chargement de données sur une architecture de calcul GPU serverless, spécifiquement pour des applications de ML et DL. Consultez le tutoriel pour en savoir plus sur la façon de charger et de transformer des données à l’aide de l’API Python Spark.
Charger les données tabulaires
Utilisez Spark Connect pour charger des données De Machine Learning tabulaires à partir de tables Delta.
Pour l’entraînement à nœud unique, vous pouvez convertir des DataFrames Apache Spark en dataFrames pandas à l’aide de la méthode toPandas(), puis éventuellement convertir en format NumPy à l’aide de la méthodeto_numpy() PySpark.
Note
Spark Connect reporte l’analyse et la résolution de noms au temps d’exécution, ce qui peut modifier le comportement de votre code. Consultez Comparer Spark Connect à Spark Classic.
Spark Connect prend en charge la plupart des API PySpark, notamment Spark SQL, l’API Pandas sur Spark, Structured Streaming et MLlib (dataFrame). Consultez la documentation de référence de l’API PySpark pour connaître les dernières API prises en charge.
Pour d’autres limitations, consultez les limitations de calcul serverless.
Charger des données à l’intérieur du @distributed décorateur
Lorsque vous utilisez l’API GPU serverless pour l’entraînement distribué, déplacez le code de chargement des données à l’intérieur du décorateur @distributed . La taille du jeu de données peut dépasser la taille maximale autorisée par pickle. Il est donc recommandé de générer le jeu de données à l’intérieur du décorateur, comme indiqué ci-dessous :
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)
....
Performances de chargement des données
/Workspace et /Volumes répertoires sont hébergés sur le stockage distant de Unity Catalog. Si votre jeu de données est stocké dans le catalogue Unity, la vitesse de chargement des données est limitée par la bande passante réseau disponible. Si vous entraînez plusieurs époques, il est recommandé de d’abord copier les données localement, en particulier dans le /tmp répertoire hébergé sur un stockage super rapide (disques SSD NVMe).
Si votre jeu de données est volumineux, nous vous recommandons également les techniques suivantes pour paralléliser l’entraînement et le chargement des données :
- Lors de l’entraînement sur plusieurs epochs, mettez à jour votre jeu de données pour mettre en cache les fichiers localement dans le répertoire
/tmpavant de lire chaque fichier. Dans les époques suivantes, utilisez la version mise en cache. - Activez les processus de travail dans l'API torch DataLoader pour paralléliser l’extraction de données. Défini
num_workerssur au moins 2. Par défaut, chaque travailleur prérécupère deux éléments de travail. Pour améliorer les performances, augmenteznum_workers(ce qui augmentera les lectures parallèles) ouprefetch_factor(ce qui augmentera le nombre d'éléments que chaque travailleur prérécupère).