Esta serie, titulada 'Pérdida, muerte, robots', se propone recorrer todo el código de PyTorch capa por capa hasta que cada línea del día a día deje de ser opaca. La entrada actual, 'El mapa', actúa como índice general: presenta las doce partes que conformarán el recorrido —tensor, autograd, uso diario, visionado, maquinaria interna, extensión del framework, compilador, kernels y hardware, entrenamiento distribuido, despliegue, y trabajo sobre el propio PyTorch— y sitúa al lector en los ocho niveles que separan el teclado del chip.
El artículo detalla, piso a piso, qué ocurre al ejecutar torch.randn. En primer lugar se muestra que lo que Python ve es apenas un fichero de 49 KB cuya única función es cargar bibliotecas compartidas: libtorch_cpu.dylib, de 206,5 MB, y libtorch_python.dylib, de 28,5 MB. Esos 235 MB de código compilado contienen el grueso del framework. En segundo lugar se explica la frontera entre Python y C++: la llamada aterriza en funciones generadas durante la compilación, como THPVariable_randn, que no aparecen en el repositorio fuente. Cruzar esa frontera tiene un coste fijo cercano a medio microsegundo por operación, suficiente para limitar a unos 1,9 millones las operaciones por segundo que Python puede emitir.
Debajo de esa frontera se encuentra el dispatcher, el enrutador que decide qué código se ejecuta y en qué orden para cada operación, incluyendo capas como el cálculo automático de gradientes. En el fondo de la pila se elige un kernel concreto entre los 3.677 nombres de operación registrados, con variantes por dispositivo y tipo de dato. El texto anuncia que cada medición se acompaña de un script reproducible y que los números proceden de un Apple M3 Max con torch 2.11.0, dejando para las siguientes partes el desarrollo completo de cada idea.
