INVESTIGACIÓN
¡Increíble pero cierto! Large Language Model en local sobre Raspberry Pi
Los nuevos avances en distillación y cuantización, unidos a técnicas sofisticadas de entrenamiento, han democratizado de forma increíble la tecnología de los LLM. Con unos 200 euros de inversión podemos hacer self-hosting de modelos state of the art.
Parece que ha pasado mucho tiempo, pero solo dos años y medio atrás todos quedamos cautivados por la llegada de ChatGPT, el primer chatbot basado en un Large Language Model que se hizo gratuitamente accesible a escala planetaria.
Por primera vez en la historia, el término Inteligencia Artificial se asoció inequívocamente con algo artificial que asumía comportamientos humanos.
Desde el principio quedó claro que detrás de esta nueva maravilla había inversiones colosales y que la ejecución de este software tan potente requería instalaciones con dimensiones de hangares aeronáuticos para alojar los servidores correspondientes.
El tiempo ha pasado deprisa y la IA generativa ha entrado a formar parte de nuestras costumbres. Productos como ChatGPT, Claude y Gemini son hoy compañeros de trabajo, estudio y tiempo libre, como lo son las redes sociales, los buscadores de Internet y los sitios de comercio electrónico.
También Meta, ex Facebook, tras el sustancial fracaso del Metaverso —anticipación de un futuro que nunca llegó y del que ya nadie habla— lanzó en febrero de 2023 su LLM, llamado Llama, sacudiendo el escenario del mercado al elegir hacer el modelo open source.
Hace menos de dos años fantaseábamos con escenarios futuros en los que modelos open source como Llama estarían comúnmente instalados en los entornos on premise de nuestros clientes o en nubes privadas, sin tener que enviar datos a proveedores externos como OpenAI, Google o Anthropic.
En realidad Meta acababa de lanzar otra importante revolución que en muy poco tiempo daría la vuelta al escenario, en un contexto de mercado ya maduro y sin el clamor de los focos mediáticos.
En el momento en que escribimos este artículo, el self hosting de los LLM no solo es posible, sino que no requiere para nada inversiones exigentes.
Como demostraremos enseguida, la virtuosa convergencia de una serie de tendencias tecnológicas ha hecho posible desarrollar aplicaciones de tipo agéntico —es decir, cuyo comportamiento está gobernado por la IA— utilizando infraestructuras convencionales, apenas potenciadas por el uso de las modernas GPU de bajo consumo.
Si además nuestro ámbito de interés se limita a la investigación y desarrollo, el hardware necesario puede ser realmente económico.
¿Cómo de económico?
Si queremos exagerar de verdad, podemos intentar desafiar las capacidades de los más recientes LLM que aprovechan técnicas avanzadas y sofisticadas de distillación, cuantización y reasoning para mantenerse muy ligeros.
Empecemos pues por la inversión.
He aquí nuestra lista de la compra, con su correspondiente recibo del pedido que hicimos en la web de nuestros amigos de Melopero, por un total de 222,19 euros, IVA incluido.
Si queréis replicar nuestro experimento, esto es lo que necesitaréis:
- una placa Raspberry Pi 5, posiblemente el nuevo modelo de 16 GB de RAM, porque los LLM viven en la RAM y no se llaman LARGE por casualidad;
- una unidad de almacenamiento masivo rápida y de gran capacidad, como una SSD de 512 GB con su correspondiente kit de conexión;
- el cooler oficial de la Raspberry Pi 5, porque los LLM acostumbran a hacer sumas y restas a velocidad vertiginosa, calentando mucho la CPU;
- una buena fuente de alimentación USB-C, tipo la oficial de 45 W, porque si os ponéis a experimentar con la IA es legítimo sospechar que no sois precisamente fans de Greta;
- un monitor HDMI, que seguramente ya tendréis;
- un teclado de PC, que seguramente ya tendréis;
- un ratón de PC, que seguramente ya tendréis.
Una vez recibido el hardware, podemos empezar a montar el kit.
Lo primero que hay que instalar es el cooler. La operación es bastante intuitiva incluso sin recurrir a las instrucciones oficiales del sitio Raspberry Pi. La única dificultad es la conexión del conector de alimentación y control.
Una vez montado el cooler, pasamos a montar el kit Pi SSD, fijando el extensor de los contactos GPIO y los separadores.
En este caso las instrucciones oficiales del sitio Raspberry Pi son recomendables, también porque explican cómo manejar el delicado conector PCI.
La Raspberry Pi 5 permite la instalación del sistema operativo en modo over the network, así que no hace falta tener una SD con la imagen precargada —como estamos acostumbrados a hacer desde los tiempos de la Raspberry Pi 1—, basta con conectar la placa a una toma LAN mediante un cable Ethernet, conectar monitor, ratón y teclado, y entonces arrancar la placa enchufando el conector de alimentación USB-C.
El firmware de la placa detectará la ausencia de device de boot y lanzará la descarga del software oficial de “image writer” que permitirá descargar la imagen del sistema operativo a la SSD, creando automáticamente la partición de boot.
Una vez descargada y arrancada la utilidad Image Writer, conviene configurar desde el principio el sistema operativo introduciendo zona horaria, distribución de teclado y credenciales para la conexión Wi-Fi, de manera que nos ahorramos la configuración posterior tras el primer boot.
En nuestro caso también activamos el protocolo SSH para poder conectarnos desde un PC y reseteamos la contraseña del usuario por defecto pi al valor raspberry, sin personalizar el valor por defecto, considerando que la usaremos como un juguete: la probabilidad de olvidar la contraseña nos ha parecido más preocupante que la protección frente a improbables ataques de hackers rusos.
Una vez completada la instalación del S.O. —obviamente habremos elegido el oficial de 64 bits—, podemos hacer login (desde el escritorio o desde un terminal remoto) y proceder con la instalación de Ollama.
¿Qué es Ollama?
Ollama es un software open source que permite hacer correr y utilizar en local los modelos LLM disponibles en régimen open source.
De hecho, aunque desde repositorios como Hugging Face es posible descargar los modelos, de la descarga a la posibilidad de invocar sus funciones de inferencia —quizá mediante una API REST— hay un trecho.
Teóricamente deberíamos escribir bastante software para configurar la estructura de la red neuronal que se inicializará con los parámetros del modelo descargado y para orquestar la funcionalidad de inferencia.
Ollama ya es todo esto. Lo instalamos y con suma facilidad descargamos los LLM desde su repositorio oficial y los hacemos correr exponiendo unas API listas para usar, en estilo OpenAI.
Para instalar esta pequeña maravilla basta con abrir un terminal y teclear:
curl -fsSL https://ollama.com/install.sh | sh
El procedimiento de instalación creará un servicio systemd que arrancará el servidor en cada reinicio de la Raspberry Pi.
Para usar Ollama desde la línea de comandos se utiliza el cliente ollama.
Con el comando ollama run nombre-modelo es posible ejecutar un modelo en local. Si el modelo no está ya presente en local, será descargado automáticamente antes de ser ejecutado.
En el sitio de Ollama, obviamente, están todas las instrucciones —pero sobre todo está la página de consulta del catálogo de modelos ya listos.
A estas alturas podemos empezar a experimentar.
Nuestra sugerencia es probar a usar los modelos más recientes de tipo reasoning, con un número de parámetros no superior a 8B (8 mil millones) y con cuantización a 4 u 8 bits.
¡El efecto sorpresa está asegurado!
Trabajar en línea de comandos ya da satisfacciones, pero estamos acostumbrados a las interfaces web tipo chatbot como ChatGPT.
Por suerte, en el mundo de los LLM open source existe también una versión open source de esta célebre interfaz, así que continuamos nuestro experimento instalando Open WebUI.
Para hacerlo, tendréis que crear y activar un entorno virtual Python con comandos del tipo:
python3 -m venv openwebui-env
source openwebui-env/bin/activate
y luego instalarlo con el comando:
pip install open-webui
Para lanzar el servidor Open WebUI el comando es:
open-webui serve
Por defecto, el servidor será accesible en http://ip-de-la-raspberry:8080 desde el navegador de cualquier PC conectado a la misma LAN que la placa Raspberry.
Llegados aquí, la experiencia será al estilo ChatGPT: en el menú de la pantalla podréis elegir el modelo de una lista que mostrará todos los modelos descargados en local por Ollama.
En la captura que mostramos arriba podéis ver un fragmento de una de nuestras conversaciones con el reciente modelo Qwen3 lanzado por Alibaba, en la versión de 1,7 mil millones de parámetros, cuantizado a 4 bits.
Pese a su pequeño —es un decir— tamaño, resuelve brillantemente problemas de lógica, geometría y álgebra, con prestaciones que se acercan a las de los más afamados modelos state of the art de gran tamaño.
Ahora se abriría una discusión interesante sobre las oportunidades que ofrece este nuevo escenario tecnológico, pero el tema es amplio y lo dejamos para un artículo posterior.
Por ahora limitémonos a observar lo siguiente:
- hemos gastado 222,19 euros, que descontado el IVA equivale a una “inversión” de unos 182 euros;
- el cooler oficial de la Raspberry Pi 5 gira a toda velocidad y al acercarse a la placa se percibe la emisión de aire tibio, pero al final estamos consumiendo no más de 45 W/h, lo que nos reconcilia un poco con Greta;
- conseguimos generar inferencia con resultados de auténtico interés práctico, de forma fluida, con velocidades de varias decenas de tokens por segundo;
- no estamos enviando por ahí nuestros preciosos y reservadísimos prompts, ya que incluso podríamos desconectar la conexión a Internet para convencernos, si hiciera falta, de que todo ocurre en la privacidad de nuestra LAN.
Bienvenidos al fantástico mundo del self hosting.