von John Spencer, Milan Stefanovic, Bruce Fontaine und Tejas Sundaresan
GPUs sind in der Regel der teuerste Teil jedes Trainingslaufs, und die meisten Teams schaffen es nicht, sie konstant auszulasten. Der Engpass liegt meistens nicht beim Modell. Es geht darum, Daten von ihrem Speicherort schnell genug zur GPU zu bringen – und jede Sekunde, in der diese Chips untätig warten, verschwenden Sie sowohl Zeit als auch Geld.
Heute veröffentlichen wir das Unity Catalog Dataset (UCDataset) in der Beta-Version auf AI Runtime. UCDataset ist ein nativer PyTorch-Dateneinleser, der Unity Catalog-Tabellen direkt an jede GPU in Ihrem Trainingsauftrag streamt, ganz ohne Exporte, Kopien und eigenen Code für den Einleser.
Bei simulierten Produktionsworkloads hat UCDataset die Trainingszeit im Vergleich zum Lesen einer exportierten Parquet-Kopie derselben Daten um das 10-Fache verkürzt.

Die meisten Trainingsdaten für Ihre Modelle befinden sich bereits in Unity Catalog-Tabellen. Um sie in einen verteilten Trainingsauftrag zu bringen, müssen Sie einen von drei Workarounds wählen, von denen jeder Sie Zeit und Geld kostet:

Dann ist da noch der Einleser selbst. Jede GPU und jeder Worker benötigt einen eigenen, ausbalancierten Ausschnitt der Daten. Teams verbringen Zeit damit, dies manuell aufzubauen, und ein versteckter Fehler kann dazu führen, dass das Modell auf duplizierten oder übersprungenen Zeilen trainiert, ohne dass es jemand merkt.
Das Ergebnis: Teure GPUs bleiben untätig, das Training dauert länger als nötig, und ML-Engineers warten Daten-Pipelines, anstatt Modelle zu verbessern.
UCDataset macht Unity Catalog-Tabellen zu einer erstklassigen Datenquelle für das verteilte PyTorch-Training. Sie beschreiben, was gelesen werden soll (eine Tabelle, die benötigten Spalten und einen Zeilenfilter), und UCDataset streamt trainingsfertige Batches an jede GPU. Zu den Vorteilen gehören:

Wir haben UCDataset anhand einer simulierten Produktionsworkload gebenchmarkt. Dabei wurde eine 300 GB große Feature-Tabelle über 8 NVIDIA H100-GPUs gestreamt, um ein Empfehlungsmodell zu trainieren. Im Vergleich zum direkten Laden der Daten aus Parquet sahen wir eine durchschnittliche Verzehnfachung der Trainingsgeschwindigkeit.
Anwendung:
Nehmen wir an, ein Team speichert Benutzer- und Artikel-Features mit einem Klick-Label in einer Tabelle namens main.recsys.ctr_features. Jeden Tag treffen neue Impressionen in der Tabelle ein. Sie möchten ein Click-Through-Rate-Modell auf 16 GPUs über zwei Nodes hinweg direkt aus der Tabelle trainieren.
1. Beschreiben Sie, was gelesen werden soll, und erstellen Sie den Loader. Wählen Sie in train.py die Tabelle aus, behalten Sie die gelabelten Trainingszeilen bei und wählen Sie nur die Spalten aus, die das Modell benötigt. Der Filter wird beim Lesen der Dateien der Tabelle angewendet, sodass Zeilen, die nicht übereinstimmen, niemals Ihren Trainingscode erreichen. UCDataset liefert bereits ganze Batches, verpacken Sie es also in einen Standard-PyTorch-DataLoader mit batch_size=None.
2. Trainieren und starten auf zwei Nodes. Trainieren Sie mit einer standardmäßigen PyTorch-DDP-Schleife. UCDataset weist jeder der 16 GPUs ihren eigenen Anteil an den passenden Zeilen zu, sodass kein Sampler- oder Sharding-Code geschrieben werden muss. Beschreiben Sie den Auftrag in workload.yaml, wodurch train.py mit torchrun auf jedem Node gestartet wird, und führen Sie ihn mit der AI Runtime CLI aus:
Um auf mehr GPUs zu trainieren, ändern Sie num_accelerators in workload.yaml. Der Trainingscode bleibt unverändert. Das vollständige train.py und workload.yaml mit einer Mustertabelle zum Ausprobieren finden Sie im AI Runtime-Kochbuch: Click-Through-Rate-Modell auf einer Unity Catalog-Tabelle.

Installieren Sie das Paket von PyPI. Führen Sie in einem Notebook %pip install databricks-uc-dataset aus.
UCDataset ist in der Beta-Version auf AI Runtime verfügbar. So probieren Sie es aus:
Für unstrukturierte Daten, die in Unity Catalog-Volumes gespeichert sind, verwenden Sie UCVolumeDataset, um Dateien mit lokalem Caching zu streamen. Während UCDataset strukturierte Tabellen verarbeitet, erweitern wir es auch zur Unterstützung des multimodalen Trainings über den FILE-Typ – so können Sie direkt aus einer Tabelle heraus mit Bildern, Audio und Dokumenten trainieren. Die Beta-Version liest Delta-Tabellen im Unity Catalog.
UCDataset (Unity Catalog Dataset) ist ein nativer Dateneinleser, der Unity Catalog-Tabellen direkt an die GPUs in einem Trainingsauftrag streamt. Es ist in der Beta-Version auf Databricks AI Runtime verfügbar. Sie wählen eine Tabelle und die benötigten Spalten aus, und UCDataset liefert trainingsfertige Batches ohne Exportvorgang oder eigenen Loader-Code.
UCDataset hält GPUs ausgelastet, indem es die Datendateien einer Tabelle direkt aus dem Cloud-Speicher liest, ohne dass eine exportierte Kopie dazwischengeschaltet ist. Es teilt die passenden Zeilen gleichmäßig auf jede GPU und jeden Daten-Loader-Worker auf, sodass jede GPU nur ihren eigenen Anteil liest.
Nein. UCDataset liest die Live-Tabelle im Unity Catalog, sodass kein Exportschritt und keine zweite Kopie erforderlich ist, die gespeichert oder synchron gehalten werden muss. Es wendet Ihren Filter und die Löschvektoren der Tabelle beim Lesen an, und jeder neue Lauf übernimmt automatisch die Zeilen, die seit dem letzten Lauf hinzugefügt wurden.
Ja. Auf AI Runtime lesen Trainingsaufträge Daten als die Identität, die sie ausführt, und die Unity Catalog-Berechtigungen für die Tabelle gelten. Da der Auftrag die geschützte Tabelle direkt liest, gibt es keine exportierte Kopie, die separat gesichert werden müsste. In der Beta-Version kann UCDataset keine Tabellen lesen, die Zeilenfilter oder Spaltenmasken haben.
UCDataset liest im Unity Catalog registrierte Delta-Tabellen, einschließlich Tabellen mit Löschvektoren.
(Dieser Blogbeitrag wurde mit KI-gestützten Tools übersetzt.) Originalbeitrag
Ankündigungen, Unity Catalog, Data Science und ML und KI-Forschung
Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.