¿Te imaginas correr tu código de Pandas hasta 17 veces más rápido sin tocar una sola línea? Esa es la promesa de la ciencia de datos acelerada por GPU con librerías como cuDF y cuML, ideal para estudiantes y analistas que ya trabajan con Python y quieren dar el siguiente salto sin aprender CUDA desde cero.
Antes de meternos en la magia, vale la pena entender el punto de partida. Se tomó un archivo de tipo Parquet con tickets de estacionamiento de Nueva York y operaciones típicas como encontrar la infracción más común por patente o contar cuántas infracciones ocurren por county. Nada raro, código de Pandas de todos los días.
¿Por qué pedirle a la IA que optimice tu código no siempre funciona?
El experimento arrancó corriendo ese script en una notebook de Google Colab gratis, usando CPU. Tardó alrededor de 17 a 18 segundos [00:52].
Después vino la tentación: pedirle a la IA que lo hiciera más rápido. En el primer intento solo cambió los tipos de datos y bajó de 17 a 11 segundos. En el segundo intento, pidiendo operaciones vectorizadas, ganó un par de segundos más, pero agregó una operación extra al final y complicó la lectura del código [02:38].
El balance fue honesto: se ganaron unos segundos, pero se perdió cerca de una hora hablando con la IA y quemando tokens, terminando con un código más difícil de leer. La lección es clara: acelerar sin entender lo que pasa rara vez vale la pena.
¿Sirve pedirle a la IA que acelere mi código sin estudiarlo? No siempre. En el ejemplo real, la IA solo logró ganar unos pocos segundos y dejó un código más complejo y difícil de mantener. Sin entender qué corre en CPU o GPU, es difícil tomar buenas decisiones.
¿Qué son cuDF y cuML y cómo aceleran tu código en GPU?
Aquí viene lo interesante. Puedes acelerar el mismo código inicial de Pandas usando una GPU sin modificar ni una línea. La clave está en dos librerías:
- cuDF: es la versión en GPU equivalente a la API de Pandas.
- cuML: es el equivalente en GPU para tareas de machine learning con Scikit-learn.
¿Y de dónde sacas una GPU si no tienes una en el bolsillo? Plataformas como Google Colab y Kaggle ofrecen acceso gratuito a GPU por un tiempo determinado, y además ya vienen con cuDF y cuML instalados [05:00]. No tienes que instalar nada nuevo.
Para activarlo en un script, en lugar de correrlo con python script.py, agregas un flag antes:
bash
python -m cudf.pandas script.py
Con eso, el código que tardaba 17.9 segundos pasó a correr en aproximadamente un segundo: un speed up de 17 veces más rápido [05:38].
¿Cómo funciona esa aceleración que parece magia negra?
No es magia. Los ingenieros que trabajan en cuDF escribieron código que interpreta cada operación de Pandas y se pregunta: ¿existe la versión equivalente en cuDF? Si existe, la corre en GPU; si no, la corre en CPU.
Hay soporte de aproximadamente el 98% de la API de Pandas, así que casi cualquier código tuyo podrá correr en GPU sin cambios [06:20].
Si trabajas en Jupyter Notebooks, activas la extensión de cuDF Pandas al inicio del notebook, antes de todos los imports. Tu código se ve igual, pero las operaciones corren en GPU. Con cuML pasa lo mismo: si tu estimador, como un Random Forest, es compatible, se ejecuta en GPU. Ese ejemplo de Scikit-learn corrió 19 veces más rápido sin cambiar el código [06:55].
¿Cómo saber qué parte de tu código corre en GPU y cuál en CPU?
No todos los códigos son tan limpios como los ejemplos de demostración. Por eso es clave entender qué se acelera y qué no. Tanto cuDF Pandas como cuML Accel incluyen profilers que te muestran exactamente eso.
Hay dos formas de perfilar:
- Profiler general: te dice todas las operaciones que corrieron en GPU. En el ejemplo, operaciones como group by, sort y count values mostraron llamadas en GPU y cero en CPU.
- Line profiler: te muestra línea por línea qué porcentaje corrió en cada procesador. En el ejemplo de Scikit-learn, las líneas 36 y 38 corrieron 99% en GPU, mientras que el total quedó entre 50 y 60% en GPU [09:20].
Con esa información puedes decidir si necesitas otras herramientas para acelerar aún más.
¿Qué es un profiler en GPU? Es una herramienta que mide qué operaciones de tu código corren en GPU y cuáles en CPU, incluso línea por línea. Te ayuda a saber dónde se va el tiempo antes de invertir esfuerzo en optimizar.
¿Cuándo vale la pena usar GPU en lugar de CPU?
La CPU y la GPU están diseñadas para trabajos distintos, y entender esa diferencia te ahorra frustraciones.
- La CPU tiene menos cores, pero más especializados. Hace muchas tareas diferentes con baja latencia.
- La GPU tiene muchos cores más simples que ejecutan la misma tarea sobre grandes volúmenes de datos en paralelo, logrando un alto caudal de procesamiento.
Para que la GPU valga la pena, tu problema debe cumplir ciertas condiciones. Primero, tu código necesita ser suficientemente paralelo: la fracción paralela determina el máximo de aceleración posible. Si todo debe ejecutarse en un orden estricto, tarea tras tarea, la GPU no ayuda.
Segundo, hay que distinguir si tu problema está limitado por operaciones de tipo IO o por capacidad de cómputo. Los datos se leen en CPU y hay que copiarlos a la GPU antes de trabajar. Si copias ida y vuelta muchas veces, esa transferencia puede arruinar la aceleración. El cómputo debe compensar el costo de mover los datos [12:40].
¿Por dónde empezar en el ecosistema de librerías de NVIDIA?
El ecosistema de NVIDIA, con más de 900 librerías optimizadas, hace que la computación acelerada sea más simple. Ya no necesitas escribir kernels ni C++ para aprovechar la GPU.
Según tu nivel, hay distintos puntos de entrada:
- Si recién arrancas, usa las librerías de Zero Code Changes Acceleration como cuDF Pandas y cuML Accel, gratis con una GPU.
- Si quieres más control, explora PyTorch, TensorFlow o la API directa de cuDF y cuML.
- Si necesitas bajo nivel, están CuPy (el equivalente de NumPy en GPU) o Numba CUDA.
Dentro de CUDA X hay librerías especializadas para cada tarea: cuVS para búsqueda de vectores, cuGraph para grafos, cuOpt para optimización de decisiones. Todas son open source, con documentación y tutoriales.
La idea central para llevarte: empezar con GPU es fácil si ya vives en el mundo de Pandas y Scikit-learn, pero entender por qué tu código es lento te vuelve mejor analista y, de paso, mejor prompter con IA. Si ese código va a producción en una empresa, entender qué lo acelera deja de ser opcional.
¿Ya probaste correr tu código de Pandas en Colab con cuDF? Cuéntame qué speed up obtuviste.