Guía paso a paso del curso
Audiencia: ingenieros que quieren primitivas inspiradas en la física —consenso, enrutamiento, muestreo, riesgo, termodinámica— como oráculos AIMarket listos para invocar. Idioma de labs:
COURSE_LANG=en|ru|es|fr|zh· UI eni18n/· esta guía en español. English · Русский · Français · 中文
Comprobación con el ecosistema actual
Antes de invocar un servicio real, usa la búsqueda del Hub y revisa el identificador, la fuente y el precio anunciado. Guarda la entrada exacta del laboratorio reproducible. Distingue el resultado de la verificación del algoritmo de un recibo firmado de la ejecución real. Una búsqueda vacía significa que la consulta no devolvió coincidencias en ese momento.
Por qué este curso
La mayoría de los cursos de «IA» se quedan en los prompts. Este enseña cómputo determinista inspirado en la física que puedes verificar, certificar y facturar: el tipo de primitiva que está debajo de un agente, no encima. Cada módulo envuelve un oráculo AIMarket real:
- Murmuration — consenso de enjambre robusto que sobrevive a los valores atípicos.
- Colony — rutas TSP que vienen con un certificado admisible de brecha de optimalidad.
- Turing — muestreo de ruido azul para conjuntos de puntos uniformes pero irregulares.
- Ablation — riesgo sistémico modelado como una cascada en un modelo de arena auto-organizado-crítico.
- Landauer — un umbral termodinámico (kT·ln2) sobre el coste energético del cómputo irreversible.
Cada lab es reproducible (con semilla, sin LLM por defecto) e imprime un bloque Trace que puedes inspeccionar. Al final podrás invocar cualquiera de los cinco oráculos, leer su salida y obtener un certificado del curso.
Índice
- Elige tu track
- Instalación (10 min)
- M1 — Consenso Murmuration
- M2 — Certificado TSP de Colony
- M3 — Ruido azul de Turing
- M4 — Riesgo de cascada Ablation
- M5 — Auditoría termodinámica Landauer (avanzado)
- Traza en cada lab
- Ejercicios y certificado
- Puente: del curso a AIMarket
- Lista de autocomprobación
- Problemas frecuentes
Elige tu track
| Track | Módulos | Tiempo | NumPy | LLM |
|---|---|---|---|---|
| Básico | M1 → M2 → M3 → M4 | ~2 h | Sí ([oracles]) |
No |
| Avanzado | Básico + M5 | +45 min | Sí | No |
Todos los labs son deterministas — en este curso no hay LLM. La «inteligencia» está en la física: estadística robusta, cotas combinatorias, criticidad, termodinámica. Lee la sección Traza tras cada lab — cada script imprime un bloque Trace.
Instalación (10 min)
Paso 1 — Clonar e instalar
git clone https://github.com/alexar76/aimarket-courses.git
cd aimarket-courses/physics-inspired-computing-course
pip install -e ".[oracles,dev]"
El extra [oracles] instala NumPy (la única dependencia en tiempo de ejecución); [dev] añade pytest. Se requiere Python 3.11+.
¿Dentro del monorepo aicom? Puedes omitir los wheels de oráculos — los labs resuelven
murmuration,colony,turing,ablationylandauerdirectamente desdeoracles/oracles/*víacourselib/oracle_paths.py. Fuera del monorepo,[oracles]es lo que hace funcionar los imports.
Paso 2 — Verificar los tests
pytest -q
Esperado: todos los tests pasan (paridad i18n entre en/ru/es/fr/zh, puentes de oráculos, certificado, ejercicios).
Paso 3 — Elegir idioma (opcional)
export COURSE_LANG=es # o ru, por defecto en
python labs/lab01_murmuration_consensus.py
COURSE_LANG cambia las cadenas impresas de cada lab (títulos, conceptos, etiquetas) vía courselib/i18n.py. Los números, los nombres de los oráculos y los tipos de evento de la traza no cambian — solo se localiza el texto. Los valores desconocidos recurren al inglés y nunca rompen el lab.
Paso 4 — Alternativa en Colab
- Abre el sitio del curso → Open in Colab en cualquier lab.
- Ejecuta la celda de setup (clone +
pip install -e ".[oracles,dev]"). - Si lo necesitas, define
os.environ["COURSE_LANG"] = "es"en la celda de setup. - Ejecuta la celda del lab.
M1 — Consenso Murmuration
Concepto: consenso robusto DeGroot y agregación Tukey-biweight sobre estimaciones ruidosas de agentes.
Lab: labs/lab01_murmuration_consensus.py · Oráculo: Murmuration · ~15 min · track: básico
Pasos
- Lee el docstring al inicio del lab (sectores: inteligencia de enjambre, estadística robusta).
- Ejecuta:
python labs/lab01_murmuration_consensus.py - El lab alimenta seis estimaciones —cinco cerca de
2.0más un atípico extremo50.0— al oráculo e imprimemedian,trimmed_mean,biweight, el valorconvergedy el número de iteraciones DeGroot, y al final un bloqueTrace. - Observa que
biweight≈ 2.0 aunque la media bruta sería ~10 — el atípico se resiste, no se promedia. - Revisa
courselib/physics.py::murmuration_aggregateymurmuration.consensus.aggregate.
Qué demuestra
Un único sensor defectuoso (o un agente malicioso) no puede arrastrar el consenso. El estimador biweight reduce el peso de los puntos lejanos, así que el enjambre coincide en la verdad, no en el ruido.
Autocomprobación
- [ ] Explicas por qué
biweight< media para esta entrada - [ ] Ves por qué el lab es determinista (sin LLM, datos con semilla)
M2 — Certificado TSP de Colony
Concepto: ruta vecino más cercano + 2-opt con una cota admisible de brecha de optimalidad.
Lab: labs/lab02_colony_tsp.py · Oráculo: Colony · ~20 min · requiere M1
Pasos
- Ejecuta:
python labs/lab02_colony_tsp.py - El lab resuelve una ruta de 6 ciudades e imprime
tour(orden de visita),length,lower_bound(un piso demostrable sobre la longitud óptima) ygapen porcentaje — cuánto podría alejarse la ruta del óptimo. - Lee el bloque
Trace— el eventotspregistralengthygap. - La idea clave: siempre
length ≥ lower_bound, así quegapes un certificado. Entregas la ruta junto con una garantía de su calidad.
Qué demuestra
No necesitas el óptimo exacto para actuar — un gap pequeño (digamos < 5%) suele ser una respuesta lo bastante buena con un número adjunto. Así se vuelven responsables las heurísticas.
Autocomprobación
- [ ] Lees el
gapy dices «esta ruta es como mucho un X% peor que el óptimo» - [ ] Entiendes por qué
lengthnunca está por debajo delower_bound
M3 — Ruido azul de Turing
Concepto: muestreo por mejor candidato (Mitchell) para conjuntos de puntos uniformes pero irregulares.
Lab: labs/lab03_turing_bluenoise.py · Oráculo: Turing · ~20 min · requiere M1
Pasos
- Ejecuta:
python labs/lab03_turing_bluenoise.py - El lab pide 64 puntos (
candidates=12,seed=2026) e imprimecount,min_distance(la menor separación entre dos puntos cualesquiera),seedy suseed_source, y unsamplede 3 coordenadas. - Compáralo con una dispersión aleatoria uniforme: el ruido azul maximiza la distancia mínima, así que no hay grumos ni huecos.
- Re-ejecuta con otra
seed(editando el lab) — la disposición cambia peromin_distancesigue alta.
Qué demuestra
El muestreo de ruido azul supera al aleatorio ingenuo para Monte Carlo, dithering y colocación procedural: cobertura uniforme sin estructura visible.
Autocomprobación
- [ ] Explicas por qué el objetivo es una
min_distancealta - [ ] Ves que
seedhace reproducible la muestra
M4 — Riesgo de cascada Ablation
Concepto: modelo de arena abeliano con auto-organización crítica — tamaños de avalancha con ley de potencias y riesgo de cola.
Lab: labs/lab04_ablation_cascade.py · Oráculo: Ablation · ~20 min · requiere M1
Pasos
- Ejecuta:
python labs/lab04_ablation_cascade.py - El lab construye un pequeño grafo de exposición dirigido (
demo_exposure_graph()— bancos A→D más un sumidero), suelta 1200 granos e imprimetau(el exponente de ley de potencias de la distribución de tamaños de avalancha),max_avalanche(la mayor cascada observada),cvar95(el VaR condicional al 95% — tamaño esperado del peor 5% de cascadas) ytopple_total. - Lee el bloque
Trace— el eventocascaderegistratauymax_avalanche. - La intuición: en un sistema crítico, pequeñas perturbaciones a veces desencadenan cascadas a nivel de todo el sistema.
tauycvar95cuantifican esa cola.
Qué demuestra
El comportamiento promedio oculta el peligro. Una cola pesada (gobernada por tau) significa que cascadas raras pero enormes dominan el riesgo — justo el modo de fallo de las redes financieras o de infraestructura interconectadas.
Autocomprobación
- [ ] Explicas por qué el tamaño medio de avalancha subestima el riesgo
- [ ] Sabes qué mide
cvar95frente a un simple promedio
M5 — Auditoría termodinámica Landauer (avanzado)
Concepto: el umbral de energía de borrado de bit kT·ln2 sobre un DAG de operaciones.
Lab: labs/lab05_landauer_audit.py · Oráculo: Landauer · ~30 min · track: avanzado
Pasos
- Ejecuta:
python labs/lab05_landauer_audit.py - El lab audita un pequeño circuito irreversible (
demo_circuit_ops()— dos entradas, una puerta AND, una salida) atemperature_k=300.0e imprimeirreversible_bits(bits destruidos por la lógica),energy_floor_j(el umbral de Landauer en julios, kT·ln2 por bit borrado),efficiencyycircuit_commitment— un hash que fija el circuito auditado. - Lee el bloque
Trace— el eventolandauerregistrabitsyfloor_j. - La física: borrar un bit a temperatura T cuesta al menos kT·ln2 julios. Una puerta AND destruye información (dos entradas → una salida), así que tiene un umbral no nulo.
Qué demuestra
Hay una cota inferior dura, dependiente de la temperatura, sobre la energía que todo cómputo irreversible debe disipar. La auditoría convierte esa ley física en un número atribuible a un circuito, y el circuit_commitment hace la auditoría a prueba de manipulaciones.
Autocomprobación
- [ ] Nombras el umbral kT·ln2 y qué significa cada término
- [ ] Entiendes por qué la puerta AND tiene
irreversible_bits ≥ 1
Traza en cada lab
Concepto: cada lab registra una Trace para que su comportamiento sea inspeccionable, no magia.
Cubierto en: los cinco labs · ~5 min tras cada lab
Cada script construye una courselib.trace.Trace y llama a trace.log(kind, **fields). El lab imprime cuántos events registró; el kind (consensus, tsp, bluenoise, cascade, landauer) indica qué primitiva física se ejecutó y los campos capturan las cifras principales.
Pasos (tras cada lab)
- Desplázate hasta la línea
trace/eventsal final de la salida. - Mapea el
kindy los campos al bloque de resultado que acabas de leer. - Trata la traza como el «log de test unitario» del lab — en producción se convierten en recibos de facturación y registros de auditoría.
Autocomprobación
- [ ] Emparejas cada evento de la traza con un resultado impreso
- [ ] Ves la traza como el puente de la salida del lab a un recibo verificable
Ejercicios y certificado
Tras los labs, ejecuta las comprobaciones DIY:
python labs/run_exercises.py
Esto corre los ejercicios de los cinco módulos (m1–m5) e imprime un ✓/✗ por módulo. Mientras iteras, ejecuta de uno en uno:
python labs/run_exercises.py --module m4
Cada ejercicio comprueba la propiedad que enseña el lab — p. ej. m1 verifica que biweight resiste un atípico, m2 que length ≥ lower_bound, m4 que tau > 0.5.
Cuando los cinco pasen, genera tu certificado:
python labs/run_exercises.py --certificate "Tu Nombre" --lang es
Esto escribe certificate.html (usa --lang en o --lang ru para otra localización). Ábrelo en un navegador y Print → Save as PDF. El ID de credencial es un hash de nombre + fecha, así que es estable y verificable. Pasa --skip-check solo si quieres el HTML sin re-ejecutar los ejercicios.
Puente: del curso a AIMarket
Los cinco oráculos que invocaste localmente son los mismos paquetes que se sirven en vivo en el ecosistema AIMarket. Para pasar de «ejecuté el lab» a «invoqué un oráculo alojado»:
| Curso (lab local) | AIMarket (oráculo alojado) |
|---|---|
M1 murmuration_aggregate |
Oráculo Murmuration — capability de consenso |
M2 colony_tsp |
Oráculo Colony — enrutamiento + certificado |
M3 turing_bluenoise |
Oráculo Turing — capability de muestreo |
M4 ablation_cascade |
Oráculo Ablation — capability de riesgo sistémico |
M5 landauer_audit |
Oráculo Landauer — auditoría termodinámica |
Trace del lab |
Recibo de invoke + provenance alojado |
El circuit_commitment (M5) y el certificado gap (M2) son justo el tipo de salida verificable que permite a un comprador confiar en la respuesta de un oráculo sin volver a calcularla.
Lista de autocomprobación
Tras el track básico deberías poder:
- [ ] Ejecutar lab01–lab04 en local y en Colab
- [ ] Explicar el consenso robusto (M1) y por qué se resiste el atípico
- [ ] Leer un certificado
gapde TSP (M2) como garantía de calidad - [ ] Decir por qué el ruido azul (M3) supera al aleatorio uniforme en cobertura
- [ ] Describir qué capturan
tau/cvar95sobre el riesgo de cascada (M4) - [ ] Leer un bloque
Tracey emparejar cada evento con un resultado
Tras el track avanzado añade:
- [ ] Ejecutar lab05 y enunciar el umbral kT·ln2 con palabras
- [ ] Pasar los cinco ejercicios y generar un certificado
Problemas frecuentes
| Problema | Solución |
|---|---|
ModuleNotFoundError: courselib |
Ejecuta desde la raíz del repo; los labs anteponen el directorio padre a sys.path |
ImportError: Oracle package '…' not installed |
Ejecuta pip install -e ".[oracles]", o ejecuta desde el monorepo aicom para que oracles/oracles/* se resuelva |
ModuleNotFoundError: numpy |
El extra [oracles] instala NumPy — repite pip install -e ".[oracles,dev]" |
| Error de versión de Python | El curso requiere Python 3.11+ |
| Cadenas vacías / en inglés con otro idioma | Define COURSE_LANG; comprueba que la clave exista en i18n/ru.json / i18n/es.json |
| Fallo de paridad i18n en pytest | Añade la clave que falta a los tres archivos i18n/en.json, ru.json, es.json |
| El certificado no se genera | Primero deben pasar los ejercicios; ejecuta python labs/run_exercises.py, o pasa --skip-check |
| Colab ejecuta código viejo | Re-ejecuta la celda de setup; fija la rama main |
Regenerar sitio y notebooks
Tras editar labs o i18n/:
python3 scripts/build_course_assets.py
Las guías en docs/ se mantienen a mano — actualiza EN primero, luego refleja las versiones RU/ES.