Motor de Inferência LLM Rápido Construído do Zero

2024-12-15

Este artigo detalha a jornada do autor na construção de um motor de inferência LLM do zero usando C++ e CUDA, sem depender de nenhuma biblioteca. O processo proporcionou um mergulho profundo em toda a pilha de inferência LLM, de kernels CUDA à arquitetura do modelo, mostrando como as otimizações impactam a velocidade de inferência. O objetivo era criar um programa capaz de carregar pesos de modelos de código aberto comuns e realizar inferência de lote único em um único servidor CPU+GPU, melhorando iterativamente o throughput de tokens para superar o llama.cpp. O artigo descreve meticulosamente as etapas de otimização tanto na CPU quanto na GPU, incluindo multithreading, quantização de pesos, SIMD, fusão de kernels e quantização de cache KV, analisando gargalos e desafios. O resultado final alcança um desempenho próximo ao de ponta para inferência LLM local.

Desenvolvimento inferência LLM