English · Español
Fase 25 — Interioridades de PyTorch¶
Requiere: 08 — Autograd tensorial desde cero · 24 — CUDA y Triton hands-on Enseña:
dispatcher·autograd-graph·torch-compile·custom-opsSalta a cualquier capítulo desde el índice de referencia de fases.
Mapa del capítulo¶
Pre-escrita según A12. La teoría y los enunciados del laboratorio son borradores estables. La fijación de versión de
torches la cuestión abierta crítica al abrir la fase.Esta es la fase donde se abre la caja negra. PyTorch presentado en Fase 24 como herramienta; aquí desmontamos los engranajes: el dispatcher (tabla de routing), el motor de autograd (captura de grafo + recorrido inverso),
torch.compile/ Inductor (captura + lowering + Triton/C++), y un survey detorch.distributed(DDP, FSDP, tensor/pipeline parallel) — todo aplicado alnn.Linear(64, 600)del LM head del grammar MiniGPT.
Objetivo¶
Coger el port a PyTorch de la Fase 17/24 — concretamente el nn.Linear(64, 600) del LM head sobre el vocabulario de gramática §A13 — y desmontar el comportamiento del framework alrededor de él. Al final de la fase, Borja podrá trazar un forward a través del dispatcher, recorrer el grafo de autograd a mano, registrar una operación personalizada con backward, leer la salida de Inductor de torch.compile y distinguir los principales patrones distribuidos sin implementarlos aún.
Esta es una fase con mucha teoría y experimentos prácticos, no un módulo nuevo. La Fase 26 (src/miniquant/) es la siguiente fase de módulo.
Orden de lectura¶
theory/00-motivation.md— por qué una fase separada para las interioridades del framework; el principio de "ninguna caja mágica" que cierra la introducción de la Fase 24.theory/01-dispatcher-and-aten.md— el dispatcher como una búsqueda en tabla; aten como biblioteca de kernels de backend; cómotorch.matmulse convierte en una llamada acuBLAS.theory/02-autograd-engine.md— captura de grafo en el forward, recorrido inverso en el backward, cadenagrad_fnrecorrida explícitamente paralinear(x, W, b).theory/03-compile-and-distributed.md— pipeline de captura detorch.compile(Dynamo → AOTAutograd → Inductor); survey de distributed (DDP/FSDP/TP/PP) — sólo conceptos.lab/00-dispatcher-trace.md— instrumentar una llamadalinear(x, W, b)y registrar cada decisión de dispatch.lab/01-autograd-by-hand.md— derivar gradientes parann.Linear(64, 600)a mano, casar con autograd de PyTorch a 1e-7.lab/02-custom-op.md— registrar el softmax de Triton de la Fase 24 comotorch.library.custom_opcon backward; verificar congradcheckytorch.compile.lab/03-compile-and-distributed.md— ejecutartorch.compilesobre grammar MiniGPT; volcar salida de Inductor; redactar el survey distribuido de 1 página.
Definition of Done¶
Ver PHASE_25_PLAN.md §6. Brevemente:
- Los gradientes derivados a mano para
nn.Linear(64, 600)coinciden con.backward()de PyTorch a 1e-7. - El softmax de Triton registrado como custom op pasa
gradchecky funciona bajotorch.compile. - Se identifica y se explica un kernel generado por Inductor del forward del grammar MiniGPT.
- README de 1 página de survey distribuido distingue DDP/FSDP/TP/PP.
Lo que esta fase intencionadamente NO cubre¶
- Implementación de entrenamiento distribuido. La Fase 35 construye DDP / FSDP de verdad.
- TorchScript. Captura de grafo heredada, reemplazada por
torch.compile. Mencionada en teoría 03 sólo como contexto histórico. - Scripting con JIT de ops personalizadas. Era de TorchScript; no es el camino moderno.
- Registro de kernels aten personalizados (C++ /
TORCH_LIBRARY). Mencionado; el laboratorio usa la APItorch.library.custom_opdel lado de Python. - CUDA Graphs. Fase 33 (serving).
- Exportación TensorRT, ONNX, OpenVINO. Fuera del alcance del currículo.
- Inmersión en
functorch/torch.func. Mencionado como la API de "transformación funcional"; la Fase 38 puede revisitarlo. - Cuantización. Fase 26.
- Librería
transformers. SegúnCLAUDE.md§0.4: no antes de la Fase 24, y no se usa aquí — usamos PyTorch puro.
El alcance de la Fase 25 es: un operador desmontado de cuatro formas (traza del dispatcher, autograd derivado a mano, registro de custom op, captura de compile). La sección distribuida es un survey, no una construcción.
Vista previa de la siguiente fase: docs/phase-26-quantization/ — src/miniquant/, cuantización de pesos int8 / int4, post-entrenamiento y entrenamiento consciente de cuantización. El grammar MiniGPT se cuantiza a int8 y se compara al nivel de precisión de predicción de prompts §A13.
Lecturas recomendadas¶
Opcional — enriquece pero no es necesario para aprobar la fase.
- 📄 PyTorch: An Imperative Style, High-Performance Deep Learning Library — Paszke et al. · 2019. las decisiones de diseño que ahora rastreas.
- ✍️ PyTorch internals — Edward Z. Yang · 2019. el dispatcher y el grafo de autograd, desmitificados.