English · Español
Fase 06 — Python para ingeniería de IA¶
Requiere: 05 — Probabilidad y teoría de la información Enseña:
numpy·strides·broadcasting·views·vectorization·profilingSalta a cualquier capítulo desde el índice de referencia de fases.
Mapa del capítulo¶
Pre-escrita según
LYNX_CORTEX_ADDENDUM.md§A12. Esta entrada de fase existe antes de que Borja empiece su estudio. Los enunciados de teoría y de laboratorio son borradores estables; las soluciones se redactan justo a tiempo en la apertura de la fase.La capa Python+NumPy donde viven el 80% de los bugs futuros. No es un repaso de Python, es ingeniería numérica: strides, broadcasting, vectorización, perfilado, semilla. Cuando esto sea reflejo, el código del resto del currículo será limpio.
Objetivo¶
Interiorizar la semántica de referencias de Python y el modelo de memoria de NumPy con la profundidad suficiente para que Borja pueda predecir, a mano, shape, dtype y el wall-clock aproximado de cualquier expresión tensorial que escriba en las Fases 7–22. Esta fase es el sustrato de ingeniería para todo lo numérico que viene después. Ligera en matemáticas, intensa en medición y sorpresa.
Al cierre de la fase, Borja posee:
- Una utilidad
seed_everything(seed)que usa cada experimento posterior. - Una utilidad
get_logger(name)que emite logs JSON estructurados. - Tres pequeños experimentos que demuestran (no solo enuncian) las tres trampas que todo ingeniero de IA acaba encontrando: vistas compartidas, bugs de shape por broadcasting, sobrecoste del bucle Python.
Orden de lectura¶
theory/00-motivation.md— por qué esta fase no es negociable.theory/01-references-mutation-gil.md— semántica de referencias de Python, mitos del GIL y cómo muerden al código numérico.theory/02-strides-and-broadcasting.md— el modelo de memoria de NumPy formalizado: shape, strides, vistas frente a copias, reglas de broadcasting.theory/03-vectorization-and-profiling.md— el modelo de coste de Python+NumPy, con los cuatro profilers (cProfile,line_profiler,memory_profiler,py-spy) y cuándo cada uno se gana el sueldo.lab/00-environment-and-utilities.md— escribirseed_everythingyget_logger.lab/01-strides-and-views.md— producir bugs intencionales de aliasing por vistas; medir el coste de la transpuesta frente a la transpuesta contigua.lab/02-broadcasting-trap.md— reproducir el bug(N,) * (N,1) → (N,N)y arreglarlo.lab/03-vectorization-budget.md— medir el ratio de aceleración bucle-Python frente a NumPy a lo largo de varios tamaños.
solutions/ está vacío durante la pre-escritura — se rellena en la apertura de fase, una vez que son visibles las decisiones de API de la fase previa de Borja.
Definición de hecho (DoD)¶
Ver PHASE_06_PLAN.md §6. En resumen:
src/utils/seeding.pyysrc/utils/logging.pyexisten, pasanmypy --stricty tienen tests.- Tres directorios de experimento con
manifest.jsony el plot/notas que indica el laboratorio. /quiz 06≥ 70%: predecir shapes de broadcasting, explicarOWNDATA, identificar cuándonp.asarraycopia.
Lo que esta fase intencionalmente NO cubre¶
- Autograd. La Fase 7 lo construye desde cero sobre este sustrato de ingeniería.
- Tensores como nodos de grafo. Territorio de Fase ⅞.
- Pandas, polars, scikit-learn, scipy. Ninguno se importa en la ruta principal del currículo; si un caso límite los necesita, entran en la fase correspondiente.
- Extensiones C, Cython, Numba. Fuera de alcance. NumPy basta. (Triton en Fase 24, mucho más tarde.)
- Asyncio. No relevante hasta la pila de servicio de la Fase 33.
- Inmersión profunda en tipado.
mypy --strictestá activado; explicarTypeVaryProtocolqueda para cuando realmente los necesitemos (probablemente Fase 17+ con esquemas de configuración).
El alcance de la Fase 6 es el modelo de memoria y de coste de Python+NumPy, más las dos utilidades transversales (seeding, logging) que importa cada fase posterior. Nada más.
Lecturas recomendadas¶
Opcional — enriquece pero no es necesario para aprobar la fase.
- 📄 Array Programming with NumPy — Harris et al. · 2020. el diseño del array en el que vives durante 30 fases.