Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tej sekcji opisano informacje na temat ładowania danych na bezserwerowych obliczeniach procesora GPU przeznaczonych specjalnie dla aplikacji ML i DL. Zapoznaj się z samouczkiem , aby dowiedzieć się więcej na temat ładowania i przekształcania danych przy użyciu interfejsu API języka Python platformy Spark.
Ładowanie danych tabelarycznych
Użyj programu Spark Connect, aby załadować tabelaryczne dane uczenia maszynowego z tabel delta.
W przypadku trenowania pojedynczego węzła można przekonwertować ramki danych Apache Spark na ramki danych Pandas przy użyciu metody PySparktoPandas(), a następnie opcjonalnie przekonwertować na format NumPy przy użyciu metody PySparkto_numpy().
Uwaga / Notatka
Spark Connect odracza analizę i rozpoznawanie nazw do czasu kompilacji, co może wpłynąć na sposób działania twojego kodu. Zobacz Porównanie programu Spark Connect z modelem klasycznym platformy Spark.
Narzędzie Spark Connect obsługuje większość interfejsów API PySpark, w tym Spark SQL, interfejs API Pandas na platformie Spark, uporządkowane przesyłanie strumieniowe oraz bibliotekę MLlib (opartą na ramkach danych). Aby uzyskać najnowsze obsługiwane interfejsy API, zobacz dokumentację interfejsu API PySpark .
Aby uzyskać informacje o innych ograniczeniach, zobacz Ograniczenia obliczeniowe bezserwerowe.
Ładowanie danych wewnątrz dekoratora @distributed
Podczas korzystania z Serverless GPU API do rozproszonego trenowania, umieść kod ładowania danych wewnątrz dekoratora @distributed. Rozmiar zestawu danych może przekraczać maksymalny rozmiar dozwolony przez pickle, dlatego zaleca się wygenerować zestaw danych wewnątrz dekoratora, co przedstawiono poniżej.
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)
....
Wydajność ładowania danych
/Workspace i /Volumes katalogi są hostowane na zdalnym magazynie Unity Catalog. Jeśli zestaw danych jest przechowywany w Unity Catalog, szybkość ładowania danych jest ograniczona przez dostępną szerokość pasma sieci. Jeśli trenujesz wiele epok, zaleca się najpierw skopiowanie danych lokalnie, szczególnie do katalogu /tmp hostowanego na bardzo szybkiej pamięci (dyski SSD NVMe).
Jeśli zestaw danych jest duży, zalecamy również następujące techniki równoległego trenowania i ładowania danych:
- Podczas trenowania wielu epok zaktualizuj zestaw danych, aby buforować pliki lokalnie w
/tmpkatalogu przed odczytaniem każdego pliku. W kolejnych epokach użyj buforowanej wersji. - Równoległe pobieranie danych przez włączenie procesów roboczych w interfejsie API modułu DataLoader . Ustaw
num_workerswartość co najmniej 2. Domyślnie każdy pracownik pobiera dwa elementy robocze. Aby zwiększyć wydajność, zwiększnum_workers(co zwiększy równoległe odczyty) lubprefetch_factor(co zwiększy liczbę obiektów, które są wstępnie pobierane przez poszczególne procesy robocze).