Sobre el proyecto

edge-llm-bench es un banco de pruebas neutral y reproducible para motores LLM locales que se ejecutan en dispositivos reales, diseñado para funcionar de forma continua en lugar de como campañas de medición puntuales. Está orientado a hardware macOS, iOS y Android. Los motores cubiertos incluyen LiteRT-LM, llama.cpp, MLX, Apple Core AI y Cactus, con cada versión fijada registrada en environment.lock.json. Los dispositivos referenciados incluyen Mac Studio (M4 Max), iPhone 17 Pro, Pixel 8a y Galaxy S26. Todos los resultados comparten un único esquema (schema/result.v1.json), una única capa de acumulación y un único formato de clasificación. El repositorio incluye el pipeline, cada registro de captura sin procesar y veredictos de regresión legibles por máquina, pero deliberadamente no publica clasificaciones entre runtimes. Los usuarios generan su propia clasificación localmente a partir de los datos sin procesar incluidos usando build_summary.py y render_leaderboard.py, produciendo un LEADERBOARD.md ignorado por git. Los comandos principales incluyen release-watch (compara versiones upstream con las versiones fijadas), matrix (ejecuta un archivo de celdas de configuraciones de benchmark) y regress (compara una versión de motor con una línea base). Añadir un modelo es una sola línea en un archivo de celdas. Cada ejecución emite JSON de esquema v1 por registro más su registro de consola sin procesar en results/raw/. Los CSV derivados se encuentran en results/summary/, y los veredictos de regresión persisten como JSON en results/regression-reports/. La CI mantiene estos consistentes. Las rutas de configuración difieren según la plataforma. El carril de Mac usa Homebrew, un script de arranque para motores vendorizados y una compilación de CLI. El carril de Android usa binarios de motor precompilados de la página de releases, evitando compilaciones con bazel/NDK. El carril de iPhone requiere firma de Xcode y permisos de memoria solo por GUI, lo que lo convierte en la configuración más pesada. Los mecanismos de equidad y honestidad son una característica central. Cada fila registra su receta, incluida la cuantización y la versión fijada del motor, porque un número más rápido bajo una receta diferente representa un perfil de despliegue diferente. Una amplia dispersión entre intentos hace que una celda se marque como UNRELIABLE en lugar de puntuarse. Las ejecuciones fallidas, los bloqueos y los OOM permanecen en la tabla con sus motivos. Los deltas entre sesiones se normalizan mediante anclas de sesión. Los presupuestos o modos que no coinciden se niegan a puntuar. Las capturas de Mac y iPhone se ponen en cuarentena automáticamente y se reintentan una vez cuando una ejecución comienza en caliente o muestra una amplia dispersión. La cobertura se rastrea como measured (existen capturas almacenadas), wired (compila en la versión fijada pero aún no hay capturas) o n/a con un motivo declarado. LiteRT-LM se mide en los cuatro dispositivos; llama.cpp se mide en dispositivos Android; MLX y Core AI son solo para Apple; Cactus no tiene rama para Mac y el soporte para Android está planificado. Las brechas divulgadas incluyen que el NPU de LiteRT en Android es solo Early Access, que llama.cpp en Android usa el binario oficial de release para CPU y que Android v1 carece de un régimen en caliente y de medición de TTFT. Una tarea de resistencia (endurance-chat-30m) mide el comportamiento sostenido en lugar de la velocidad de un solo turno: un proceso de motor, una conversación con caché KV acumulativa, un script fijo de 12 prompts y un límite nativo de 256 tokens por turno. Cada turno registra la tasa de decodificación, la ocupación de KV, la memoria, el estado térmico y la degeneración. Un bloqueo en el turno 37 conserva los turnos 1-36 como evidencia. Las sesiones derivan cuatro veredictos: decaimiento de decodificación, pendiente de memoria, inicio de degeneración y finalización. Existen carriles para Mac y Android (Galaxy S26), actualmente solo LiteRT-LM. El repositorio incluye una línea base semilla de una ejecución de regresión de LiteRT-LM v0.15.0 a v0.16.0 del 2026-08-17 en Pixel 8a y Mac Studio M4 Max. Fue extraída de apple-silicon-llm-bench, que sigue siendo el archivo de mediciones. Licenciado bajo MIT.