Существующий конвейер pandas для CSV-файла размером 40 ГБ слишком медленно работает на CPU.
→Замените pandas на cuDF; большинство вызовов read/filter/groupby/join сохраняют тот же API и выполняются на GPU.
Почему: cuDF по замыслу повторяет API pandas, поэтому миграция в основном сводится к изменению импорта, а не к переписыванию кода.
Источник↗
Команда хочет ускорения на GPU без изменения существующего кода pandas.
→Загрузите ускоритель cudf.pandas (%load_ext cudf.pandas или python -m cudf.pandas); он выполняет операции на GPU и автоматически переключается на CPU.
Почему: Ускорение без изменения кода с прозрачным переключением на CPU обеспечивает работу неподдерживаемых операций.
Источник↗
Требуется самая быстрая загрузка большого аналитического набора данных в столбцовом формате на GPU.
→Сохраните в формате Parquet и прочитайте с помощью cudf.read_parquet; обрезка столбцов и предикатная фильтрация минимизируют передачу данных на устройство.
Почему: Столбцовый Parquet хорошо сопоставляется с cuDF на основе Arrow и читается намного быстрее, чем построчный CSV.
cuDF работает медленнее, чем pandas, для файла размером 50 МБ.
→Храните небольшие данные на CPU; накладные расходы на передачу данных между хостом и устройством и запуск ядер доминируют для объемов менее ~1–2 ГБ.
Почему: Ускорение GPU окупается в масштабе; для крошечных данных стоимость копирования превышает выигрыш в вычислениях.
Агрегировать миллиарды строк по ключу с использованием нескольких статистик.
→Используйте df.groupby(key).agg({...}) в cuDF; агрегации выполняются как параллельные ядра GPU.
Очистить и нормализовать текстовый столбец с высокой кардинальностью в масштабе GPU.
→Используйте аксессор .str в cuDF's (lower, strip, replace, contains, split); строковые операции ускоряются на GPU через libcudf.
Почему: cuDF имеет выделенный строковый уровень GPU, поэтому очистка текста не требует возврата к CPU.
Объединить два больших DataFrame на устройстве по общему ключу.
→Используйте cudf.merge / df.merge с ключом объединения; хеш-объединения выполняются на GPU.
Почему: Оба фрейма должны уже находиться на устройстве, чтобы избежать кругового обращения; смешивание pandas и cuDF приводит к копированию на хост.
Набор данных содержит пропущенные значения, которые нарушают последующее обучение cuML.
→Используйте cuDF fillna/dropna и явные приведения типов данных перед обучением; cuML ожидает чистые числовые массивы на устройстве.
Смешанные типы данных/типы object вызывают ошибки или раздувание памяти в cuDF.
→Рано приводите к компактным числовым или категориальным типам данных (int32/float32, category), чтобы уменьшить использование памяти GPU.
Почему: Преобразование к меньшему типу снижает нагрузку на память устройства, что является самым частым узким местом на одном GPU.
Требуется кодирование меток/one-hot кодирование для категориальных признаков перед обучением.
→Используйте категориальный тип данных cuDF с .cat.codes или препроцессорные кодировщики cuML, чтобы сохранить данные на устройстве.
Требуются математические операции с сырыми числовыми массивами, не предоставляемые API cuDF DataFrame.
→Преобразуйте через df.values или to_cupy() и работайте с CuPy (массивами GPU, совместимыми с NumPy), затем верните результаты.
Почему: cuDF и CuPy совместно используют память устройства через __cuda_array_interface__, поэтому преобразование выполняется без копирования.