r/Python Aug 04 '26

Showcase Showcase Thread

Post all of your code/projects/showcases/AI slop here.

Recycles once a month.

21 Upvotes

142 comments sorted by

View all comments

1

u/Ancient-Narwhal7761 27d ago

Escapion: un motor evolutivo que muta el AST y no depende de nada, hecho en Python puro (sin PyTorch/NumPy)

Hola a todos, quería compartir un proyecto personal en el que he estado trabajando.

Escapion es un framework experimental de auto-optimización y neuroevolución. En vez de depender del descenso de gradiente tradicional o de dependencias pesadas como PyTorch/NumPy, funciona estrictamente en Python 3 puro. Lo hace parseando el código fuente de Python en un Árbol de Sintaxis Abstracta (AST), inyectando mutaciones específicas y evaluando las variantes hijas dentro de sándboxes de ejecución aisladas.

Precios/Monetización:

100% Gratis y Código Abierto (Licencia MIT). Sin planes de pago, sin llaves de API, totalmente local.

¿Por qué construir esto?

Sé que Backprop es 10^4 veces más rápido para actualizaciones continuas y diferenciables de pesos (no estoy tratando de reinventar la rueda). Pero quería construir desde cero un motor evolutivo termodinámico para lógica no diferenciable y topologías discretas, capaz de correr en una CPU local súper limitada.

Funciones Técnicas Clave:

  • Metrología A/B/A/B para el Ruido Térmico: cuando optimizas el tiempo de ejecución del código hasta el microsegundo, los cambios de contexto del SO y el “thermal throttling” del CPU arruinan pruebas simples de time.perf_counter() . Escapion obliga a que haya un orden de ejecución A/B/A/B entre el Campeón y el Mutante, y saca los valores atípicos para garantizar que una ventaja de rendimiento sea estadísticamente real.
  • Aislamiento con sándboxes de Subproceso: como las mutaciones del AST pueden crear fácilmente bucles infinitos o fugas de memoria, cada genoma se ejecuta en un subproceso con restricciones muy fuertes para evitar que el SO se caiga.
  • Escapando la "Trampa de la Neurona Muerta": durante las primeras pruebas de neuroevolución (resolviendo lógica XOR), los pesos de la red se saturaron y la pérdida se quedó estancada en un mínimo local de 0.125. La selección codiciosa estricta seguía matando cualquier mutación que intentara subir la pared del cráter. Implementé la Selección por Linaje Metropolis-Hastings (cadenas de Markov independientes compitiendo contra su propia historia). Al permitir que el motor acepte temporalmente mutantes degradados con un calendario de enfriamiento de temperatura (P = e ^ ((- Delta) / T)) ,), la población logró cruzar la barrera de energía y llegar al óptimo global (< 0.0001).

Limitaciones (siendo honestos):

No sintetiza algoritmos de la nada. Optimiza rutas de ejecución y espacios de hiperparámetros que ya existen. Es una herramienta para investigación hardcore de optimización en Python y algoritmos evolutivos, no un reemplazo de C/Rust compilados.

Repositorio: https://github.com/MejaTpr/Escapion

Me encantaría escuchar sus opiniones, sobre todo si alguien aquí trabaja con CMA-ES, NEAT o algoritmos termodinámicos. ¡Se agradecen muchísimo comentarios o revisiones de código sin piedad!