Bestehende pandas-Pipeline auf einer 40 GB großen CSV-Datei ist auf der CPU zu langsam.
→Ersetzen Sie pandas durch cuDF; die meisten Lese-/Filter-/Gruppierungs-/Join-Aufrufe behalten dieselbe API bei und laufen auf der GPU.
Warum: cuDF spiegelt die pandas-API im Design wider, sodass die Migration hauptsächlich eine Änderung des Imports und keine Neuschreibung ist.
Referenz↗
Das Team möchte GPU-Beschleunigungen, ohne den bestehenden pandas-Code zu ändern.
→Laden Sie den cudf.pandas-Beschleuniger (%load_ext cudf.pandas oder python -m cudf.pandas); er führt Operationen auf der GPU aus und greift automatisch auf die CPU zurück.
Warum: Die Beschleunigung ohne Codeänderung mit transparentem CPU-Fallback sorgt dafür, dass nicht unterstützte Operationen weiterhin funktionieren.
Referenz↗
Benötigt den schnellsten spaltenorientierten Ladevorgang eines großen Analyse-Datasets auf der GPU.
→Als Parquet speichern und mit cudf.read_parquet lesen; Spaltenbeschneidung und Prädikat-Pushdown minimieren die Geräteübertragung.
Warum: Spaltenorientiertes Parquet lässt sich sauber auf Arrow-gestütztes cuDF abbilden und liest weitaus schneller als zeilenorientierte CSV-Dateien.
cuDF ist bei einer 50 MB großen Datei langsamer als pandas.
→Halten Sie kleine Daten auf der CPU; Host-zu-Gerät-Übertragung und Kernel-Start-Overhead dominieren unter ~1–2 GB.
Warum: GPU-Beschleunigung zahlt sich im großen Maßstab aus; bei winzigen Daten übersteigen die Kopierkosten den Rechengewinn.
Aggregieren Sie Milliarden von Zeilen nach Schlüssel mit mehreren Statistiken.
→Verwenden Sie df.groupby(key).agg({...}) in cuDF; Aggregationen laufen als parallele GPU-Kernel.
Bereinigen und normalisieren Sie eine Textspalte mit hoher Kardinalität im GPU-Maßstab.
→Verwenden Sie den .str-Accessor von cuDF (lower, strip, replace, contains, split); Zeichenkettenoperationen werden über libcudf auf der GPU beschleunigt.
Warum: cuDF verfügt über eine dedizierte GPU-Zeichenkettenebene, sodass die Textbereinigung nicht auf die CPU zurückfallen muss.
Verknüpfen Sie zwei große Geräte-DataFrames über einen gemeinsamen Schlüssel.
→Verwenden Sie cudf.merge / df.merge mit dem Join-Schlüssel; Hash-Joins werden auf der GPU ausgeführt.
Warum: Beide Frames müssen sich bereits auf dem Gerät befinden, um einen Roundtrip zu vermeiden; das Mischen von pandas und cuDF erzwingt eine Host-Kopie.
Das Dataset enthält fehlende Werte, die das nachfolgende cuML-Training stören.
→Verwenden Sie cuDF fillna/dropna und explizite dtype-Umwandlungen vor dem Fitten; cuML erwartet saubere numerische Geräte-Arrays.
Gemischte/Objekt-Dtypes verursachen Fehler oder Speicheraufblähungen in cuDF.
→Frühzeitig in kompakte numerische oder kategoriale Dtypes (int32/float32, category) umwandeln, um den GPU-Speicherbedarf zu reduzieren.
Warum: Downcasting reduziert den Gerätespeicherdruck, den häufigsten Engpass bei einer einzelnen GPU.
Benötigt Label-/One-Hot-Encoding für kategoriale Merkmale vor dem Training.
→Verwenden Sie cuDF categorical dtype mit .cat.codes oder cuML Vorverarbeitungs-Encodern, um Daten auf dem Gerät zu halten.
Benötigt reine numerische Array-Mathematik, die nicht durch die cuDF DataFrame API exponiert wird.
→Konvertieren Sie über df.values oder to_cupy() und arbeiten Sie mit CuPy (NumPy-kompatible GPU-Arrays), dann bringen Sie die Ergebnisse zurück.
Warum: cuDF und CuPy teilen den Gerätespeicher über die __cuda_array_interface__, sodass die Konvertierung eine Nullkopie ist.