Polars bietet Optionen für Datenverarbeitung über VRAM-Grenzen
In hochgradig anspruchsvollen Bereichen wie Quantitative Finanzanalyse, Algorithmisches Handeln und Betrugsdetektion müssen Datenverarbeitungsexperten häufig Hunderte von Gigabyte (GB) Daten verarbeiten, um schnell und fundierte Entscheidungen zu treffen. Polars, eine der am schnellsten wachsenden Datenverarbeitungsbibliotheken, unterstützt dies mit einem GPU-Engine, die von NVIDIA cuDF angetrieben wird. Diese GPU-Engine beschleunigt rechenintensive Abfragen, die in diesen Bereichen weit verbreitet sind. Ein häufiges Problem bei der Arbeit mit GPUs ist, dass das VRAM (das dedizierte Speicher der GPU) in der Regel kleiner als das System-RAM ist. Dies kann Probleme verursachen, wenn die GPU-Engine sehr große Datensätze verarbeiten soll. Dieser Beitrag untersucht zwei Optionen innerhalb der Polars GPU-Engine, um diese Einschränkung zu überwinden. Mit diesen Strategien können Sie Daten verarbeiten, die größer sind als das verfügbare VRAM, und dennoch von der GPU-Beschleunigung profitieren: Option 1: UVM für Flexibilität bei Einzel-GPUs Wenn die Größe Ihres Datensatzes das VRAM Ihrer GPU übersteigt, können Sie die NVIDIA Unified Virtual Memory (UVM) Technologie nutzen. UVM erstellt einen vereinheitlichten Speicherbereich zwischen dem System-RAM (Host-Speicher) und dem GPU-VRAM (Device-Speicher). Dies ermöglicht es der Polars GPU-Engine, Daten in das System-RAM zu verschieben, wenn das VRAM voll ist, was Out-of-Memory-Fehler verhindert und Ihnen die Möglichkeit gibt, mit Datensätzen zu arbeiten, die größer sind als das verfügbare VRAM. Wenn die GPU auf Daten zugreifen muss, die sich momentan im System-RAM befinden, werden diese Daten automatisch ins VRAM geladen. Diese Methode ist ideal, wenn Sie mit einer einzelnen GPU arbeiten und die Flexibilität benötigen, moderate Datensätze zu verarbeiten, die das VRAM überschreiten. Obwohl es eine nahtlose Erfahrung mit nahezu keinen Codeänderungen bietet, kann ein Leistungsverlust durch die Datenmigration zwischen System-RAM und VRAM entstehen. Mit intelligenten Konfigurationen mithilfe des RAPIDS Memory Manager (RMM), einer Bibliothek, die detaillierte Kontrolle über die GPU-Speicherallokation zur Verfügung stellt, kann dieser Leistungseinbuß erheblich reduziert werden. Mehr Informationen zu UVM, seiner Leistung und der Feinkonfiguration für Ihre spezifischen Anforderungen finden Sie im Artikel "Introducing UVM for Larger than VRAM Data on the Polars GPU Engine". Option 2: Streaming-Execution für TB-skalierte Leistung Für Nutzer, die mit Datensätzen arbeiten, die über einige hundert GB bis in Terabyte (TB) reichen, bietet die Polars GPU-Engine nun eine experimentelle Multi-GPU-Streaming-Execution-Konfiguration. Im Gegensatz zur standardmäßigen In-Memory-Verarbeitung, bei der Daten in einer einzigen Partition verarbeitet werden, führt der Streaming-Executor zu Datenpartitionierung und Parallelverarbeitungsfähigkeiten, die darauf ausgelegt sind, Workloads auf mehrere GPUs zu verteilen. Im Kern funktioniert dieser Streaming-Executor, indem er den von Polars erzeugten optimierten internen Darstellungsgraphen (IR-Graph) für die Batch-Verarbeitung umschreibt. Der resultierende Graph wird dann basierend auf der Datenmenge und der Anzahl der verfügbaren Worker partitioniert. Der Streaming-Executor verwendet ein aufgabenbasiertes Ausführungsmodell, bei dem jede Partition unabhängig verarbeitet wird und Aufgaben parallel durchgeführt werden können. Abbildung 1 zeigt einen Vergleich des vorherigen In-Memory-Executors und des neuen Streaming-Executors für die Polars GPU-Engine. Der Streaming-Executor unterstützt sowohl die Verarbeitung auf einer einzelnen GPU durch den Dask synchronen Scheduler als auch die Verarbeitung auf mehreren GPUs durch den Dask verteilten Scheduler. Es stehen verschiedene Parameter zur Verfügung, mit denen Sie Join-Strategien und Partitionsgrößen steuern können. In Tests hat das Team ausgezeichnete Leistungen beim PDS-H Benchmark bei einer Skalierung von 3 TB erzielt, indem alle 22 Abfragen innerhalb von Sekunden verarbeitet wurden. Schauen Sie sich das Beispiel-Notebook an und probieren Sie die Multi-GPU-Streaming-Verarbeitung mit Ihren Datensätzen aus. Mehr zum Funktionieren der Streaming-Verarbeitung in der Polars GPU-Engine unter der Haube erfahren Sie in der NVIDIA GTC Paris Session "Scaling DataFrames with Polars". Die richtige Wahl treffen Sowohl UVM als auch Multi-GPU-Streaming-Execution bieten leistungsstarke Methoden, um Datensätze zu verarbeiten, die größer sind als das VRAM Ihrer GPU. Die beste Wahl hängt von Ihren spezifischen Anforderungen ab. Um mehr über diese Konfigurationen zu erfahren, konsultieren Sie das Polars User Guide. Industriemeinungen und Unternehmensprofile Experten in der Branche loben die neuen Features der Polars GPU-Engine für ihre Flexibilität und Skalierbarkeit. Die Fähigkeit, Daten, die das VRAM überschreiten, effizient zu verarbeiten, wird als wichtiger Schritt zur Verbesserung der Datenverarbeitungsleistung in rechenintensiven Anwendungen angesehen. Polars entwickelt sich schnell zu einer führenden Bibliothek in der Datenverarbeitung, dank ihrer robusten Architektur und der Unterstützung fortschrittlicher Technologien wie NVIDIA cuDF.