Ferrox: un motor de inferencia en Rust que rivaliza con llama.cpp

Fuentes: Ferrox: Building a Rust Inference Engine That Matches llama.cpp

Ferrox, un motor de inferencia escrito íntegramente en Rust, ejecuta modelos de lenguaje abiertos en local —tanto densos como Mixture-of-Experts— sobre CPU, Apple Metal o CUDA, sin recurrir a enlaces con llama.cpp ni con ggml. Cada kernel, cargador y mecanismo de planificación se ha implementado desde cero, con el objetivo declarado de comprender la inferencia a un nivel más profundo y de comparar el rendimiento con una referencia sólida y conocida.

En la práctica, Ferrox carga archivos GGUF, el mismo formato cuantizado que emplea llama.cpp, y ofrece dos formas de uso: una CLI con banderas compatibles con llama.cpp y un servidor que habla la API de chat-completions de OpenAI, lo que permite conectar cualquier cliente preparado para ChatGPT sin cambios. Los pesos se mapean en memoria directamente desde disco y la descuantización se fusiona con el producto escalar, reduciendo el consumo de RAM —un modelo de 8B puede correr en un portátil con pocos gigabytes en lugar de treinta.

El artículo detalla los comandos para compilar, descargar modelos de Hugging Face y lanzar la CLI o el servidor, e incluye una tabla de modelos recomendados, desde TinyLlama 1.1B hasta Llama 3.1 8B en cuantización Q4_K_M. La sección de rendimiento presenta una metodología de benchmarking reproducible, con resultados en un Apple M2 Pro: en Llama-3.1-8B Q4_K_M sobre Metal, Ferrox alcanza 28,3 tok/s frente a 27,6 de llama.cpp (paridad o ligera ventaja); en modelos pequeños como Qwen2.5-0.5B y SmolLM2-135M, Ferrox supera a llama.cpp por un margen notable. Las ganancias se atribuyen a la fusión de dequantización en el matmul y a kernels Metal específicos por arquitectura, adaptados a peculiaridades como la normalización QK de Qwen, la atención sliding-window de Gemma-3 o las proyecciones fusionadas de Phi-3. El artículo concluye con instrucciones para regenerar las mediciones y mantener compromisos falsificables.