IA HAT+ y AI Camera
Este proyecto nace de la intención de montar en mi centro una herramienta de IA de uso local que no dependa (y no envíe) datos a internet. Spoiler: No sale bien.
IA HAT+
Qué es
imagen
xxx
Enlaces de interés
xxx
Características principales
xxx
Versiones
xxx
AI Camera
Qué es
imagen
xxx
Enlaces de interés
xxx
Características principales
xxx
Versiones
xxx
Proyectos
Enumeración de los diferentes proyectos probados
Creación de un LLM de uso local sin dependencia de internet
Como ya se adelantó anteriormente, la idea
Algún proyecto con la cámara
xxx
---------------- Reordenar lo de abajo
Raspberry nos presenta lo que llama un "sombrero" para su Raspberry Pi 5. Se trata de una placa que se conecta a la Raspberry Pi con un hardware específico que dota a la Raspebrry Pi de capacidad de trabajo real con IA.
Toda la documentación de esta placa podemos encontrarla en:
- https://www.raspberrypi.com/products/ai-hat/
- https://www.raspberrypi.com/documentation/accessories/ai-hat-plus.html
- https://pip-assets.raspberrypi.com/categories/1081-raspberry-pi-ai-hat/documents/RP-008133-DS-1-raspberry-pi-ai-hat-plus-product-brief.pdf?disposition=inline
- La nueva versión está en https://www.raspberrypi.com/products/ai-hat-plus-2/
Raspberry Pi completa este "lote IA" con una cámara especialmente enfocada a IA. Toda la documentación podemos encontrarla en https://www.raspberrypi.com/documentation/accessories/ai-camera.html
Para la elaboración de estos materiales voy a trabajar con:
- Raspberry Pi 5 de 16 GB de RAM
- Cargador oficial de Raspberry Pi 5
- Tarjeta microSD oficial de 128 GB (en previsión de descarga de modelo IA de gran tamaño)
- Raspberry Pi IA HAT+ en su versión de 26 TOPs
-
el término TOPs es una unidad de medida que se utiliza para cuantificar el rendimiento de los procesadores diseñados para ejecutar tareas de IA. Sus siglas significan Tera Operations Per Second (Billones de operaciones por segundo)
- No nos ha sido posible encontrar en el mercado la versión AI HAT+2 (40 TOPs y memoria dedicada). Probablemente llevándose el desarrollo de esta práctica a ese hardware si que sería exitosa la parte de montar una IA local.
-
- Raspberry Pi IA Camera
Todo ensablado queda como se ve en la siguiente imagen:
(TO DO)
Comenzamos:
- Con Raspberry Pi imager cargo en la SD la imagen del sistema operativo para la raspberry pi 5
- Actualizamos sistema y borramos paquetes innecesarios
- Ejecutamos en terminal
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt clean
- Ejecutamos en terminal
- Instalamos Ollama
- Nos va a permitir gestionar modelos de lenguaje
- Web de Ollama con información https://ollama.com/
- Ejecutamos en terminal
curl -fsSL https://ollama.com/install.sh | sh - Tras instalarlo merece la pena fijarse en 3 líneas que arroja el instalador:
The Ollama API is now available at 127.0.0.1:11434Nos indica dónde ha montado por defecto un servidor al cual lanzarle peticionesInstall complete. Run "ollama" from the command line.Nos indica cual es el comando que deberamos usar para trabajar con OllamaWARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.Aquí ya nos advierte de que el funcionamiento de Ollama no va a ser óptimo
- Descargamos un modelo para trabajar con él
- Enumero los que en este momento (abril de 2026) corren en el hw con el que contamos:
- llama3.2:3b (rápido y ligero)
- mistral:7b (más capaz, mas lento)
- phi3:mini (muy eficiente para su tamaño)
- gemma2:2b (excelente relación calidad/velocidad)
- Instalamos 1 de ellos. Los demás se haría de modo análogo
- Ejecutamos en el terminal
ollama pull phi3:mini
- Ejecutamos en el terminal
- Enumero los que en este momento (abril de 2026) corren en el hw con el que contamos:
- Lo probamos a través de una llamada al API REST (documentación del endpoint que vamos a usar https://docs.ollama.com/api/generate )
- Escribimos en el terminal:
curl http://127.0.0.1:11434/api/generate -d '{ "model": "phi3:mini", "prompt": "Explica qué es una raspberry pi", "stream": false }'- Y esperamos por aproximadamete 4 minutos para ver el resultado. Luego con este modelo, no es funcional
- Vamos a descargar otro modelo mas ligero y repetir la consulta para ese modelo:
ollama pull llama3.2:3bcurl http://127.0.0.1:11434/api/generate -d '{ "model": "llama3.2:3b", "prompt": "Explica qué es una raspberry pi", "stream": false }'en esta ocasión la respuesta se ha demorado 2 minutos lo cual sigue haciendo, bajo mi punto de vista, al modelo poco eficiente como sustituto de las IAs comerciales.
- Vamos a preparar una interfaz web para quienes no quieran usar el terminal.
- Uaremos docker, si no lo tienes instalado, tines que instalarlo:
- Consulta la documentación en web oficial para hacerlo. Yo te dejo a continuación lo que en la fecha actual he hecho yo para instalarlo
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)-
# Add Docker's official GPG key: sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: sudo tee /etc/apt/sources.list.d/docker.sources <<EOF Types: deb URIs: https://download.docker.com/linux/debian Suites: $(. /etc/os-release && echo "$VERSION_CODENAME") Components: stable Architectures: $(dpkg --print-architecture) Signed-By: /etc/apt/keyrings/docker.asc EOF sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo systemctl status dockersudo groupadd dockerquizás te diga que ya existesudo usermod -aG docker $USERsudo groupadd dockersudo systemctl enable containerd.service- Reiniciamos
- Ahora ejecutaremos en el terminal
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -e OLLAMA_BASE_URL=http://host.docker.internal:11434 ghcr.io/open-webui/open-webui:main - Si ahora accedemos en el navegador a http://localhost:3000 tendremos acceso a una interface web para interactuar con la IA que hemos preparado
- Uaremos docker, si no lo tienes instalado, tines que instalarlo:
En las llamadas a curl hemos utilizado 3 parámetros:
- model: Obligatorio. Nombre del modelo a usar.
- promt: Obligatorio. Texto de entrada.
- stream:
truedevuelve tokens uno a uno,falseespera respuesta completa
Puede resultar interesante conocer estos otros:
- system: Define el comportamiento/personalidad del modelo
- options
- temperature: valores entre 0.0 y 1.0. Recomendado 0.7. Determinista y precio 0.0. Creativo y variado 1.0
- top_p: diversidad del vocabulario. Recomendado 0.9
- top_k: limita el número de tokens candidatos en cada paso
- num_predict: máximo de tokens a generar en la respuesta (-1: sin límite)
- num_ctx: tamaño de la ventana de contexto (memoria del modelo). Cuanto mas alto mas conversación recuerda pero uso mas RAM.
- repeat_penalty: penaliza repetir las mismas palabras (Sin penalización 1.0. Penalización alta 1.3)
- seed: fija la semilla aleatoria. Útil para reproducir exactamente la misma respuesta
- format: formato de salida. "jason" obliga al modelo a responder en un JSON válido
- keep_alive: tiempo que el modelo permanece cargado en RAM tras la llamada (5 minutos 5m. Descarga inmediata 0) Mas permanencia, mas consumo de RAM.
Aquí un ejemplo completo:
{
"model": "llama3.2:3b",
"prompt": "Explica qué es una Raspberry Pi",
"stream": false,
"system": "Eres un asistente experto en electrónica",
"options": {
"temperature": 0.7,
"top_p": 0.9,
"top_k": 40,
"num_predict": 512,
"num_ctx": 2048,
"repeat_penalty": 1.1,
"seed": 42
},
"format": "json",
"keep_alive": "5m"
}
La documentación completa de la API la tenemos disponible en https://docs.ollama.com/api/introduction Además de /api/generate puede resultarte interesante probar /api/chat
