Un pipeline existente de pandas en un CSV de 40 GB es demasiado lento en la CPU.
→Reemplace pandas por cuDF; la mayoría de las llamadas de lectura/filtro/agrupación/unión mantienen la misma API y se ejecutan en la GPU.
Por qué: cuDF emula la API de pandas por diseño, por lo que la migración es principalmente un cambio de importación en lugar de una reescritura.
Referencia↗
El equipo desea aceleraciones de GPU sin tocar el código existente de pandas.
→Cargue el acelerador cudf.pandas (%load_ext cudf.pandas o python -m cudf.pandas); ejecuta operaciones en la GPU y recurre a la CPU automáticamente.
Por qué: La aceleración sin cambios en el código con un respaldo transparente a la CPU mantiene las operaciones no admitidas funcionando.
Referencia↗
Necesita la carga columnar más rápida de un gran conjunto de datos analíticos en la GPU.
→Almacene como Parquet y lea con cudf.read_parquet; la poda de columnas y el predicate pushdown minimizan la transferencia de dispositivos.
Por qué: Parquet columnar se asigna limpiamente a cuDF basado en Arrow y se lee mucho más rápido que CSV orientado a filas.
cuDF es más lento que pandas en un archivo de 50 MB.
→Mantenga los datos pequeños en la CPU; la transferencia de host a dispositivo y la sobrecarga de lanzamiento de kernels dominan por debajo de ~1–2 GB.
Por qué: La aceleración de GPU vale la pena a escala; para datos pequeños, el costo de copia excede la ganancia computacional.
Agregue miles de millones de filas por clave con múltiples estadísticas.
→Use df.groupby(key).agg({...}) en cuDF; las agregaciones se ejecutan como kernels de GPU paralelos.
Limpie y normalice una columna de texto de alta cardinalidad a escala de GPU.
→Utilice el accesor .str de cuDF (lower, strip, replace, contains, split); las operaciones de cadenas se aceleran con la GPU a través de libcudf.
Por qué: cuDF tiene una capa de cadenas de GPU dedicada, por lo que la limpieza de texto no necesita recurrir a la CPU.
Una dos grandes DataFrames de dispositivos en una clave compartida.
→Use cudf.merge / df.merge con la clave de unión; las uniones hash se ejecutan en la GPU.
Por qué: Ambos marcos deben estar ya en el dispositivo para evitar un viaje de ida y vuelta; mezclar pandas y cuDF fuerza una copia del host.
El conjunto de datos tiene valores faltantes que interrumpen el entrenamiento posterior de cuML.
→Use cuDF fillna/dropna y conversiones de dtype explícitas antes del ajuste; cuML espera arreglos numéricos de dispositivos limpios.
Los dtypes mixtos/de objeto causan errores o hinchazón de memoria en cuDF.
→Convierta a dtypes numéricos o categóricos compactos (int32/float32, category) temprano para reducir el consumo de memoria de la GPU.
Por qué: La reducción de tipo (downcasting) reduce la presión de la memoria del dispositivo, el cuello de botella más común en una sola GPU.
Necesita codificación label/one-hot para características categóricas antes del entrenamiento.
→Use el dtype categórico de cuDF con .cat.codes o los codificadores de preprocesamiento de cuML para mantener los datos en el dispositivo.
Necesita operaciones matemáticas con arrays numéricos en bruto no expuestas por la API de cuDF DataFrame.
→Convierta a través de df.values o to_cupy() y opere con CuPy (arrays de GPU compatibles con NumPy), luego devuelva los resultados.
Por qué: cuDF y CuPy comparten memoria de dispositivo a través de la __cuda_array_interface__, por lo que la conversión es de copia cero.