llama.cpp es una biblioteca de software de código abierto que realiza inferencias en varios modelos de lenguaje grandes como Llama . [ 3 ] Se desarrolla en colaboración con el proyecto GGML , una biblioteca de tensores de propósito general . [ 4 ]
La biblioteca incluye herramientas de línea de comandos , [ 5 ] junto con un servidor con una interfaz web sencilla . [ 6 ] [ 7 ]
llama.cpp ha sido considerado como el estándar de facto como el núcleo de casi todas las herramientas de inferencia local, incluidas Ollama y LM Studio. [ 8 ]
Fondo
Hacia finales de septiembre de 2022, Georgi Gerganov comenzó a trabajar en la biblioteca GGML, una biblioteca en C que implementa álgebra tensorial . Gerganov desarrolló la biblioteca con la intención de lograr una gestión estricta de la memoria y el procesamiento multihilo. La creación de GGML se inspiró en el trabajo de Fabrice Bellard sobre LibNC. [ 9 ]
Antes de llama.cpp, Gerganov trabajó en una biblioteca similar llamada whisper.cpp que implementaba Whisper , un modelo de voz a texto de OpenAI . [ 10 ]
Desarrollo
llama.cpp comenzó su desarrollo en marzo de 2023 por Georgi Gerganov como una implementación del código de inferencia Llama en C/C++ puro sin dependencias. Esto mejoró el rendimiento en computadoras sin GPU u otro hardware dedicado, lo cual era un objetivo del proyecto. [ 3 ] [ 11 ] [ 12 ] llama.cpp ganó popularidad entre los usuarios que carecían de hardware especializado, ya que podía ejecutarse solo en una CPU . Si bien inicialmente se diseñó para CPU, posteriormente se agregó soporte para backend de GPU y NPU. [ 13 ] A partir de mayo de 2026, tiene más de 109.000 estrellas en GitHub. [ 14 ]
El 30 de abril de 2024 se presentó FlashAttention .
El 10 de abril de 2025 se presentó libmtmd, lo que revitalizó el apoyo a los modelos multimodales que anteriormente se encontraba estancado.
El 17 de diciembre de 2025, se introdujo la aceleración completa en dispositivos Android y ChromeOS a través de un nuevo enlace GUI [ 15 ] , que desbloquea el desarrollo de aplicaciones nativas más allá del enfoque anterior de compilación cruzada y ejecución de CLI [ 11 ] [ 16 ] [ 17 ] en un shell adb .
Arquitectura
llama.cpp admite múltiples plataformas de hardware, incluyendo x86 , ARM , Metal , BLAS , BLIS , zDNN , ZenDNN , SYCL , MUSA , CUDA , HIP , CANN , OpenCL , RPC y Vulkan (versión 1.2 o superior). [ 18 ] [ 19 ] [ 20 ] [ 21 ] Estos back-ends conforman la biblioteca de tensores GGML, utilizada por el código llama.cpp específico del modelo del front-end. [ 22 ] llama.cpp utiliza varias extensiones de CPU para la optimización:
- AVX , AVX2 , AVX-512 , AVX-VNNI y AMX para X86-64 .
- Neon , i8MM , SVE , SVE2 , SME y SME2 para AArch64 (ARM64).
- VXE2 (Vector Enhancement Facility 2) para S390x .
- El silicio de Apple es un objetivo importante para el proyecto. [ 14 ] [ 23 ]
llama.cpp admite una variedad de características destinadas a la inferencia en dispositivos periféricos, tales como:
- Cuantización del modelo por adelantado y cuantización de la caché kv sobre la marcha. [ 24 ]
- Decodificación especulativa . [ 7 ]
- Descarga parcial de capas del modelo a la RAM del sistema , lo que permite a los dispositivos cargar modelos que serían demasiado grandes para caber únicamente en la VRAM de la GPU .
Además, llama.cpp admite una variedad de características y API para la comunicación con el frontend, tales como:
formato de archivo GGUF
El formato de archivo GGUF ( GGML Universal File) [ 27 ] es un formato binario que almacena tanto tensores como metadatos en un solo archivo, y está diseñado para guardar y cargar rápidamente datos de modelos. [ 28 ] Fue introducido en agosto de 2023 por el proyecto llama.cpp para mantener mejor la compatibilidad con versiones anteriores a medida que se agregaba soporte para otras arquitecturas de modelos. [ 13 ] [ 29 ] Reemplazó formatos anteriores utilizados por el proyecto, como GGML, y generalmente se produce mediante la conversión de modelos desarrollados con una biblioteca de aprendizaje automático diferente, como PyTorch . [ 28 ]
Diseño
GGUF se centra en la cuantización, el acto de reducir la precisión en los pesos del modelo. Esto puede conducir a un menor uso de memoria y una mayor velocidad, aunque a costa de una menor precisión del modelo. [ 30 ] [ 29 ]
GGUF admite tipos enteros cuantizados de 2 bits a 8 bits, [ 31 ] formatos de datos de punto flotante comunes como float32 , float16 y bfloat16 , y cuantización de 1,58 bits. [ 5 ]
GGUF contiene la información necesaria para ejecutar un modelo de lenguaje tipo GPT, como el vocabulario del tokenizador, la longitud del contexto, la información del tensor y otros atributos. [ 32 ]
Estructura a nivel de byte (little-endian)
Bloque de metadatos
// ejemplo de metadatos general . arquitectura : 'llama' , general . nombre : 'LLaMA v2' , llama . longitud_contexto : 4096 , ... , general . tipo_archivo : 10 , // (normalmente indica el nivel de cuantización, aquí "MOSTLY_Q2_K") tokenizador . ggml . modelo : ' llama' , tokenizador . ggml . tokens : [ '<unk>' , ' <s>' , ' </s>' , ' ' , ' ' , ' ' , ' ' , '' , '' , ' ' , ' ' , '' , .Bloque de información de tensores
// Nombre del n-ésimo tensor : cadena GGUF , // ej.: "blk.0.ffn_gate.weight" n_dimensiones : UINT32 , // ej.: 2 dimensiones : UINT64 [], // ej.: [ 4096, 32000 ] tipo : UINT32 , // ej.: 10 (normalmente indica el nivel de cuantización, aquí "GGML_TYPE_Q2_K") desplazamiento : UINT64 // posición inicial dentro del bloque tensor_data, relativa al inicio del bloque // (n+1)-ésimo tensor ...Modelos
Llama.cpp admite muchos modelos de lenguaje grandes, incluidos Llama , Mistral , Gemma , DeepSeek , gpt-oss , Phi y Qwen . [ 34 ]
Véase también
Referencias
- ↑ "Versión inicial · ggerganov/llama.cpp@26c0846" . GitHub . Consultado el 15 de mayo de 2024 .
- ↑ "llama.cpp/LICENSE en master · ggerganov/llama.cpp" . GitHub .
- 1 2 Connatser, Matthew. "Cómo este ejecutor de chatbot LLM de código abierto alcanzó el máximo rendimiento en CPUs x86 y Arm" . theregister.com . Consultado el 15 de abril de 2024 .
- ^ Gerganov, Georgi (17 de mayo de 2024). "ggerganov/ggml" . GitHub .
- 1 2 Mann, Tobias (14 jul 2024). "Cariño, ¡encogí el LLM! Una guía para principiantes sobre la cuantización y cómo probarla" . theregister .
- ↑ Alden, Daroc. "LLM portátiles con llamafile [ LWN.net ] " . lwn.net . Consultado el 30 de julio de 2024 .
- 1 2 Mann, Tobias (15 de diciembre de 2024). "Introducción a la decodificación especulativa: códigos de trucos para LLM más rápidos" . theregister .
- ↑ Shariq Murtuza (25 de marzo de 2026). "Implicaciones forenses de la IA localizada: análisis de artefactos de Ollama, LM Studio y llama.cpp". arXiv : 2603.23996v1 [ cs.CR ].
- ↑ "Llevando Whisper y LLaMA a las masas con Georgi Gerganov (Entrevistas de Changelog #532)" . Changelog . 22 de marzo de 2023. Consultado el 28 de julio de 2024 .
- ↑ "ggerganov/whisper.cpp" . GitHub .
- 1 2 Edwards, Benj (13 de marzo de 2023). "Ahora puedes ejecutar un modelo de IA de nivel GPT-3 en tu computadora portátil, teléfono y Raspberry Pi" . arstechnica.com . Recuperado el 15 de abril de 2024 .
- ^ Wiest, Isabella Catharina ; Ferber, dique; Zhu, Jiefu; van Treeck, Marko; Meyer, Sonja K.; Juglan, Radhika; Carrero, Zunamys I.; Paech, Daniel; Kleesiek, Jens; Ebert, Matías P.; Truhn, Daniel; Kather, Jakob Nikolas (2024). "Modelos de lenguaje grande que preservan la privacidad para la recuperación estructurada de información médica" . npj Medicina digital . 7 (257): 257. doi : 10.1038/s41746-024-01233-2 . PMC 11415382 . PMID 39304709 .
- 1 2 Rajput, Saurabhsingh; Sharma, Tushar (4 de junio de 2024). "Benchmarking Emerging Deep Learning Quantization Methods for Energy Efficiency". 2024 IEEE 21st International Conference on Software Architecture Companion (ICSA-C) . pp. 238–242 . doi : 10.1109/ICSA-C63560.2024.00049 . ISBN 979-8-3503-6625-9.
- 1 2 "ggerganov/llama.cpp" . GitHub .
- ↑ "llama.cpp/docs/android.md en master" . ggml-org/llama.cpp . GitHub . Consultado el 20 de diciembre de 2025 .
- ↑ Hood, Stephen. "llamafile: acercando los LLM a la gente y a tu propio ordenador" . Mozilla Innovations . Consultado el 28 de julio de 2024 .
- ↑ "Democratizando la IA con modelos de lenguaje de código abierto" . lwn.net . Consultado el 28 de julio de 2024 .
- ↑ Gerganov, Georgi; Nguyen, Xuan Son; Slaren (13 de agosto de 2024). "Introducción a ggml" . Huggingface .
- ↑ Kluska, Piotr; Castell´o, Adri´an; Scheidegger, Florian; I. Malossi, A. Cristiano; Quintana-Ort´ı, Enrique (junio de 2024). "QAttn: Kernels de GPU eficientes para transformadores de visión de precisión mixta" (PDF) . Actas de los talleres de la Conferencia IEEE/CVF sobre Visión por Computadora y Reconocimiento de Patrones (CVPR) .
- ^ Jianyu, Zhang; Hengyu, Meng; Ying, Hu; Yu, Luo; Xiaoping, Duan; Corporation, Majumder Abhilash Intel (julio de 2024). "Ejecute LLM en GPU Intel usando llama.cpp" . El Universo Paralelo . No 57. Intel. págs. 34-37 .
- ↑ Bolz, Jeff (11-13 de febrero de 2025). "Aprendizaje automático en Vulkan con Cooperative Matrix 2" (PDF) . Cambridge, Reino Unido: The Khronos Group/Nvidia.
- ↑ Pounder, Les (25 de marzo de 2023). "Cómo crear tu propio servidor de chatbot de IA con Raspberry Pi 4" . tomshardware.com . Consultado el 16 de abril de 2024 .
- ↑ Larabel, Michael. "Llamafile 0.7 trae soporte para AVX-512: tiempos de evaluación de solicitudes 10 veces más rápidos para AMD Zen 4" . www.phoronix.com .
- ↑ Walkowiak, Bartosz; Walkowiak, Tomasz (2024). "Implementación de modelos de lenguaje dentro de una infraestructura diseñada para el procesamiento del lenguaje natural" (PDF) . Revista Internacional de Electrónica y Telecomunicaciones . 70 (1): 153–159 . doi : 10.24425/ijet.2024.149525 . Recuperado el 8 de mayo de 2024 .
- ↑ "GGUF por ggerganov · Solicitud de extracción n.° 2398 · ggerganov/llama.cpp" . GitHub .
- ↑ "ggml/docs/gguf.md en master · ggerganov/ggml" . GitHub .
- ↑ "ggerganov/llama.cpp/gguf-py/README.md" . GitHub . Consultado el 10 de noviembre de 2024 .
- 1 2 "GGUF" . huggingface.co . Consultado el 9 de mayo de 2024 .
- 1 2 Mucci, Tim (3 de julio de 2024). "GGUF versus GGML" . www.ibm.com . Recuperado el 26 de julio de 2024 .
- ↑ Labonne, Maxime (29 de noviembre de 2023). "Cuantificar modelos Llama con GGUF y llama.cpp" . Medium . Towards Data Science . Recuperado el 9 de mayo de 2024 .
- ↑ Cabezas, Darío; Fonseca Delgado, Rigoberto; Reyes-Chacón, Iván; Vizcaino-Imacaña, Paulina; Morocho-Cayamcela, Manuel (2024). "Integración de un Chatbot basado en LLaMa con generación de recuperación aumentada como herramienta educativa complementaria para estudiantes de secundaria y universitarios". Actas de la XIX Conferencia Internacional sobre Tecnologías de Software . págs. 395– 402. doi : 10.5220/0012763000003753 . ISBN 978-989-758-706-1.
- ^ Dong, Bo; Lin, junio; Yu, Zhentao; Xu, Zhenzhong; Luo, Yu; Chang, Hanwen; Shen, Haihao (julio de 2024). "Aceleración de modelos GGUF con transformadores" . El Universo Paralelo . No 57. Intel. págs. 28 a 33.
- ↑ "Especificación GGUF (ggml/docs/gguf.md en master · ggml-org/ggml)" .
- ↑ ggml-org/llama.cpp , ggml, 2026-04-19 , consultado el 2026-04-19
- Modelos de lenguaje a gran escala
- Inteligencia artificial de código abierto
- Software que utiliza la licencia MIT.
- Bibliotecas informáticas gratuitas
- Software libre programado en C++