En esta cuarta entrega de la serie de ejecución de LLMs en local, hablamos sobre cómo ejecutarlos con Llamafile, una herramienta alternativa a Ollama y LM Studio. Veremos cómo funciona y el paso a paso para su implementación.

¿Quieres ponerte al día con los posts anteriores de la serie?

¿Qué es Llamafile?

Llamafile es una herramienta que transforma los LLMs en un único fichero ejecutable, el cual agrupa los pesos del modelo con una versión especial de la librería llama.cpp. Este fichero se puede ejecutar en la mayoría de ordenadores sin instalar dependencias adicionales, además de incluir un servidor de inferencia que proporciona un API de interacción con el modelo. Todo esto se logra al combinar la librería llama.cpp con el proyecto Cosmopolitan Libc (un proyecto que permite compilar y ejecutar programas en C en un gran número de plataformas y arquitecturas).

Algunos llamafiles de modelos que podemos encontrar son:

Model Tamaño Licencia Llamafile
LLaMA 3.2 1B Instruct Q4_K_M 1.12 GB LLAMA 3.2 Mozilla/Llama-3.2-1B-Instruct-Q4_K_M-llamafile
Gemma 3 1B Instruct Q4_K_M 1.11 GB Gemma 3 Mozilla/gemma-3-1b-it-Q4_K_M-llamafile
Mistral-7B-Instruct v0.3 Q2_K 3.03 GB Apache 2.0 Mozilla/Mistral-7B-Instruct-v0.3-Q2_K-llamafile

*Pincha en cada celda de "licencia" y "llamafile" para ver los enlaces.

Se pueden encontrar más llamafile aquí y aquí.

Plataformas soportadas

Debido a la versatilidad de ejecución proporcionada por el proyecto Cosmopolitan Libc, actualmente Llamafile se puede ejecutar en las siguientes plataformas:

En el caso de las GPUs, pueden ser necesarias configuraciones adicionales como instalar el SDK CUDA de Nvidia o el SDK ROCm HIP de AMD. En el caso de que no se identifiquen correctamente las GPUs, llamafile configurará el uso de la CPU por defecto.

Ejecución

En este artículo ejecutaremos los llamafiles en el sistema operativo Ubuntu. Para ello, se deberán ejecutar los siguientes pasos para poder activar el llamafile de un modelo:

  1. Descargar el fichero llamafile del modelo correspondiente. Por ejemplo, Mozilla/Llama-3.2-1B-Instruct-llamafile.
  2. Dar los permisos de ejecución necesarios al fichero descargado con el comando:
chmod +x Llama-3.2-1B-Instruct-Q4_K_M.llamafile
  1. Ejecutar el fichero con el comando:
./Llama-3.2-1B-Instruct-Q4_K_M.llamafile
simonrodriguez@simonrodriguez:~/llamafile$ chmod +x Llama-3.2-1B-Instruct-Q4_K_M.llamafile simonrodriguez@simonrodriguez:~/llamafile$ •/Llama-3.2-1B-Instruct-Q4_K_M.Ilamafile LLAMAFILE software: llamafile 0.9.2 model: Llama-3.2-1B-Instruct-Q4_K_M.gguf compute: 11th Gen Intel Core i7-1185G7 @ 3.00GHz (tigerlake) server: http://127.0.0.1:8080/ A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions. >>> Hola, ¿que me puedes decir de llamafile? ¡Hola! Me alegra poder ayudarte. Llamafile es un servicio de inteligencia artificial que se enfoca en la creación y gestión de docume ntos de texto. Es un modelo de lenguaje natural que utiliza técnicas de procesamiento de lenguaje natural (NLP) para analizar y gener ar texto. Llamafile se basa en un conjunto de datos de texto amplio, que incluye una variedad de títulos, artículos, correos electrónicos y otr os tipos de documentos. Utiliza este conocimiento para generar texto similar al de un humano, lo que significa que puede crear docume ntos de texto de manera autónoma.
  1. Cuando se termine de interactuar con el modelo, simplemente hacer Control+C.

Además, el propio llamafile proporciona una interfaz de usuario en formato chat para interactuar con el modelo (http://localhost:8080).

Pantalla que aparece cuando entras en localhost:8080 si tienes localhost:8080 ejecutado

API

Aunque la ejecución directa nos permite interactuar con los modelos, puesto que estamos revisando estas herramientas desde el punto de vista del equipo de desarrollo, también es necesario un API con el que poder integrar las aplicaciones. Llamafile expone, entre otros, los siguientes endpoints:

simonrodriguez@simonrodriguez:~$ curl https://www.paradigmadigital.com/health ("slots_idle":1,"slots_processing": 0, "status": "ok") simonrodriguez@simonrodriguez:~$
simonrodriguez@simonrodriguez:~$ curl -X POST https://www.paradigmadigital.com/completion \ -H "'Content-Type: application/json"
simonrodriguez@simonrodriguez:~$ curl -X POST https://www.paradigmadigital.com/tokenize
simonrodriguez@simonrodriguez:~$ curl -X POST https://www.paradigmadigital.com/detokenize \ -H "Content-Type: application/json" \ - d '{ "tokens": [71,8083,29386, 26860, 60045, 50018, 2727, 409, 12366, 30] {"content": "hola ¿Que puedes decirme de Paris?"}simonrodriguez@simonrodriguez:~$
simonrodriguez@simonrodriguez:~$ curl -X POST https://www.paradigmadigital.com/v1/chat/completions \ -H "'Content-Type: application/json"

En este enlace se pueden consultar todos los parámetros posibles de los distintos endpoints.

Integración con modelos ya descargados

Como sucede en Ollama y LM Studio, Llamafile también puede manejar modelos externos mientras estén guardados en el formato GGUF. Aunque a nivel general esta afirmación se considere válida, es cierto que en ocasiones puede ser necesario realizar algunos ajustes dependiendo de la aplicación desde la que se hayan descargado dichos modelos.

Para poder ejecutar los ficheros GGUF sí que será necesario compilar llamafile en el pc. La instalación de llamafile implica estos pasos (en este caso, en el sistema operativo Ubuntu):

  1. Descargar el código del repositorio de git.
  2. En la carpeta en donde se descargó el código, ejecutar los comandos (es posible que se necesite instalar versiones actualizadas de los comandos make, wget y unzip):
make -j8
sudo make install PREFIX=/usr/local

Una vez se tiene llamafile instalado en el sistema, ya se pueden ejecutar los modelos desde ficheros en formato GGUF que pueden haber sido descargados previamente desde otras aplicaciones como LM Studio u Ollama.

LM Studio

Con los modelos de LM Studio guardados habitualmente en ~/.cache/lm-studio/models o ~/.lm-studio/models, se puede ejecutar llamafile simplemente con el siguiente comando:

llamafile -m llama-3.2-1b-instruct-q4_k_m.gguf
simonrodriguez@simonrodriguez:~/.Imstudio/models/hugging-quants/Llama-3.2-1B-Instruct-Q4_K_M-GGUF$ Is llama-3.2-1b-instruct-q4_k_m.gguf simonrodriguez@simonrodriguez:~/.Imstudio/models/hugging-quants/Llama-3.2-1B-Instruct-Q4_K_M-GGUF$ llamafile -m llama-3.2-1b-instruct-q4_k_m.gguf LLAMAFILE software: llamafile 0.9.3 model: llama-3.2-1b-instruct-q4_k_m.gguf compute: 11th Gen Intel Core i7-1185G7 @ 3.00GHz (tigerlake) server: http://127.0.0.1:8080/ A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions. >>> hola, ¿Que puedes decirme de Madrid? ¡Hola! Madrid es una ciudad vibrante y llena de historia en España. Ubicada en la península de la Mancha, es una de las ciudades más visitadas del país. La ciudad tiene una rica cultura y arquitectura, con más de 2.000 edificios históricos, incluyendo la Almudena, la Catedral de San Miguel y la Mezquita de la Almudena.

Ollama

Cuando se descarga un modelo en Ollama, sus metadatos se guardan en un fichero (manifest) en el directorio correspondiente, normalmente en ~/.ollama/models/manifests/registry.ollama.ai/library/.

Si abrimos ese fichero podremos ver las propiedades en estilo JSON. Dentro de layers, la propiedad digest (cuyo valor de mediaType termine en .model) es la que debemos tener en cuenta.

marcado el apartado "digest" dentro de "layers" en el json

Este valor de digest se usa como nombre de fichero en la carpeta de blobs (~/.ollama/models/blobs). Es con este fichero de la carpeta blobs con el que se puede ejecutar el llamafile para el modelo correspondiente. Un ejemplo de ejecución sería:

llamafile -m sha256-74701a8c35f6c8d9a4b91f3f3497643001d63e0c7a84e085bed452548fa88d45
simonrodriguez@simonrodriguez:/usr/share/ollama/.ollama/models/blobs$ ls sha256-74701a8c35f6c8d9a4b91f3f3497643001d63e0c7a84e085bed452548fa88d sha256-74701a8c35f6c8d9a4b91f3f3497643001d63e0c7a84e085bed452548fa88d45 simonrodriguez@simonrodriguez:/usr/share/ollama/.ollama/models/blobs$ llamafile -m sha256-74701a8c35f6c8d9a4b91f3f3497643001d63e0c7a84e085bed4 52548fa88d45 LLAMAFILE software: llamafile 0.9.3 model: sha256-74701a8c35f6c8d9a4b91f3f3497643001d63e0c7a84e085bed452548fa88d45 compute: 11th Gen Intel Core i7-1185G7 @ 3.00GHz (tigerlake) server: http://127.0.0.1:8080/ A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the huma n's questions. >>> Hola, ¿que puedes decirme de Barcelona? ¡Hola! Barcelona es una ciudad hermosa y vibrante ubicada en la costa del Mediterráneo, en el País Vasco, España. Es famosa por su arquitectur a gótica y renacentista, sus hermosas calles empedradas y sus playas de ensueño. La ciudad es un destino popular para turistas de todo el mundo, y por supuesto, también es un lugar muy atractivo para los amantes de la cultu ra y la historia. Algunas de las atracciones más destacadas de Barcelona incluyen la Sagrada Familia, el Parque Güell, el Barrio Gótico y la p laya de Barceloneta.

Conclusiones

En este post hemos visto otra alternativa a Ollama y LM Studio: Llamafile. Esta herramienta maneja un concepto un poco diferente, en el cual la ejecución de cada modelo viene dado por un ejecutable diferente, con la ventaja de que no se necesita instalar ningún software adicional.

En el siguiente post nos encontraremos con un viejo conocido en el mundo del desarrollo que también se suma a la moda de ejecución de LLMs. ¡Te leo en comentarios!

Referencias

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete