Motor de Inferencia LLM Rápido Creado desde Cero

2024-12-15

Este artículo detalla el proceso del autor para construir un motor de inferencia LLM desde cero usando C++ y CUDA, sin depender de ninguna biblioteca. Este proceso permitió una inmersión profunda en toda la pila de inferencia LLM, desde los núcleos CUDA hasta la arquitectura del modelo, mostrando cómo las optimizaciones afectan la velocidad de inferencia. El objetivo era crear un programa capaz de cargar pesos de modelos de código abierto comunes y realizar inferencia de lote único en un único servidor CPU+GPU, mejorando iterativamente el rendimiento de tokens para superar a llama.cpp. El artículo describe meticulosamente los pasos de optimización tanto en la CPU como en la GPU, incluyendo multithreading, cuantificación de pesos, SIMD, fusión de núcleos y cuantificación de caché KV, analizando cuellos de botella y desafíos. El resultado final logra un rendimiento cercano al estado del arte para la inferencia LLM local.

Desarrollo inferencia LLM