English · Español
Lab 02 — Walkthrough del selective-scan de Mamba (lab de lectura)¶
Objetivo: leer
mamba-minimalde punta a punta. Anotar la lógica del selective-scan. Escribir un resumen de 1 página conectando las matemáticas (theory/03) con el código.Tiempo estimado: 2–3 horas.
Prerrequisito:
theory/03-state-space-models.mdentendido. Fase 25 (interna de PyTorch) hecha. Borja sabe leer cómodamente una implementación de referencia de transformer.
Lo que produces¶
Un directorio experiments/36-mamba-walkthrough/ que contenga:
mamba-sha.txt— el SHA del repomamba-minimalleído.walkthrough.md— ~1 página de lectura anotada del núcleo del selective-scan (selective_scan_refo equivalente).state-update-diagram.mmd— diagrama mermaid de un paso del selective scan, anotado con shapes.grammar-tutor-applicability.md— veredicto corto: ¿ayudaría Mamba al tutor de gramática?
TODOs¶
Bloque A — clonar mamba-minimal¶
git clone https://github.com/johnma2006/mamba-minimal /tmp/mamba-minimal
cd /tmp/mamba-minimal
git rev-parse HEAD > /home/overdrive/claude/lynx-cortex/experiments/36-mamba-walkthrough/mamba-sha.txt
mamba-minimal es una reimplementación deliberadamente pedagógica (~300 LOC) — mucho más fácil de leer que el repo oficial de Mamba que usa kernels CUDA. Lee la versión educativa.
Bloque B — recorrer el archivo¶
El archivo interesante es model.py. Céntrate en estas funciones / clases:
MambaBlock— el bloque de construcción (análogo a un bloque transformer).selective_scan(oselective_scan_refsegún la versión) — la recurrencia núcleo.
En walkthrough.md, escribe anotaciones que cubran:
- El paso de discretización. ¿Dónde está en el código la transición continuo-a-discreto (computar \(\bar{A}, \bar{B}\) a partir de \(A, B, \Delta\))? Cita números de línea.
- La selectividad. ¿Qué líneas hacen \(B, C, \Delta\) dependientes del input? (En contraste con S4, donde son parámetros fijos.)
- La actualización de estado. Traza \(h_t = \bar{A}_t h_{t-1} + \bar{B}_t x_t\) — encuentra la(s) línea(s) correspondiente(s).
- La proyección de salida. ¿Dónde está \(y_t = C_t h_t\)?
- La convolución. Mamba usa una conv 1D como preprocesador. ¿Por qué? (Pista: da suavizado de corto alcance antes del SSM.)
Cada anotación: 2-3 frases + cita de línea. ~5-8 anotaciones en total.
Bloque C — el diagrama de shapes¶
Dibuja el diagrama mermaid para un paso del selective-scan:
flowchart LR
x[x_t : (B, D)] --> deltaP[Linear -> Δ_t : (B, D)]
x --> Bproj[Linear -> B_t : (B, N)]
x --> Cproj[Linear -> C_t : (B, N)]
A_param[A : (D, N) param] -.discretize.-> Abar[Ā_t : (B, D, N)]
deltaP --> Abar
Bproj --> Bbar[B̄_t : (B, D, N)]
deltaP --> Bbar
h_prev[h_{t-1} : (B, D, N)] --> update[h_t = Ā_t · h_{t-1} + B̄_t · x_t]
Abar --> update
Bbar --> update
update --> h_t[h_t : (B, D, N)]
h_t --> output[y_t = C_t · h_t : (B, D)]
Cproj --> output
Entrega como state-update-diagram.mmd. Anota el diagrama añadiendo una referencia "dónde en el código" al lado de cada caja (p. ej., "Δ projection: line 142").
Bloque D — la aplicabilidad al tutor de gramática¶
Escribe grammar-tutor-applicability.md (~200 palabras):
- ¿Ayudaría Mamba al tutor de gramática? (Spoiler de
theory/03: no.) - ¿Qué específicamente sobre la tarea del tutor de gramática hace a la attention estrictamente mejor que Mamba? (Respuesta: el acuerdo sujeto-verbo-tiempo requiere lookup preciso de un token pasado específico; Mamba comprime el pasado en un estado, la attention lee directamente.)
- ¿Cuándo cogerías Mamba? (Respuesta: contexto muy largo, donde la KV cache se vuelve inviable.)
- ¿Qué pasa con un enfoque híbrido (estilo Jamba)? ¿Podría ayudar una sola capa de attention + múltiples capas de Mamba? (Pista: probablemente no, a nuestro contexto máximo de 32 tokens. El cómputo de la attention a esta escala es despreciable.)
Restricciones¶
- Sin entrenamiento de Mamba. Este es un lab de lectura. Levantar inferencia de Mamba está bien si quieres sentir la velocidad; entrenar está fuera de alcance (y es lento en CPU).
- Sin copiar fuente. Cita rangos de líneas, no código completo. El walkthrough debe ser un resumen, no una transcripción.
- Solo diagramas mermaid. Sin PNGs de herramientas externas — mantenlo diff-able.
- Solo CPU, cero gasto en la nube.
Condiciones de parada¶
Has terminado cuando:
experiments/36-mamba-walkthrough/{mamba-sha.txt, walkthrough.md, state-update-diagram.mmd, grammar-tutor-applicability.md}existen todos.walkthrough.mdtiene ≥5 puntos anotados con citas de línea.- El diagrama mermaid está entregado y renderiza correctamente.
- La nota de aplicabilidad al tutor de gramática responde a las cuatro preguntas.
- Puedes explicar, de memoria, "qué hace a Mamba 'selectivo'" en una frase.
Pista de último recurso¶
Si mamba-minimal ha cambiado respecto a la versión contra la que se escribió este lab: pinea la versión con el SHA en el momento del clone. Si los nombres de función han cambiado (selective_scan vs selective_scan_ref, etc.), usa el que corresponda al archivo actual.
Si el paso de discretización (Bloque B punto 1) es opaco: la fórmula está en theory/03-state-space-models.md §"Discretization". Compara la matemática con el código línea a línea. El código está haciendo exactamente la matemática, en ops de PyTorch.
Cuándo consultar solutions/¶
Tras commitear. La solución vive en solutions/02-mamba-walkthrough-ref.md — escrita al abrir la fase con la versión actual de mamba-minimal pineada. La referencia es un conjunto de elecciones de anotación con rangos de línea; las elecciones de Borja pueden diferir — la comparación es "¿qué se me escapó?", no "¿coincidí exactamente?".
Siguiente lab: lab/03-speculative-survey.md.