Ejecutar TinyLlama en una placa de $10 con PicoLM – Una guía completa
Ejecutar TinyLlama en una placa de $10 con PicoLM – Una guía completa
La IA embarcada ya no es un lujo reservado para GPU o servidores en la nube. PicoLM, un motor de inferencia ligero y solo en C, te permite ejecutar un modelo completo de 1 billón de parámetros en un dispositivo de 256 MB como el Raspberry Pi Zero 2W o el LicheeRV Nano. Este tutorial recorre cada paso:
- ¿Por qué PicoLM? | TinyLlama 1.1B en formato GGUF, cero dependencias, binario <80 KB, RAM de ejecución ~45 MB.
- Requisitos de hardware – Raspberry Pi 5 (4‑núcleos), Pi 4, Pi 3 B+ o Pi Zero 2W; o una placa RISC‑V como LicheeRV.
- Construir e instalar – instalación de una línea para Pi/Linux y compilación completa de código fuente para Windows.
- Descargar el modelo – un solo archivo de 638 MB; mapea la memoria de pesos, sin copia RAM.
- Ejecutar una prueba rápida – ver el flujo de la solicitud‑respuesta.
- Rendimiento – gráficos de tokens‑por‑segundo, uso de RAM, y cómo ajustar los hilos.
- Integrar con PicoClaw – el asistente ultra ligero en Go que canaliza las solicitudes y lee la salida JSON.
- Opciones avanzadas – restricciones de gramática JSON, persistencia de caché KV, precisión mixta, uso offline sin GPU.
- FAQ y solución de problemas – errores comunes y consejos de depuración.
- Próximos pasos – extensión a Llama‑2, otros modelos LLaMA, añadir herramientas personalizadas.
1. ¿Por qué PicoLM?
| Característica | Beneficio |
|---|---|
| Implementación pura en C | No dependencias externas, detección automática de SIMD en tiempo de compilación |
| GGUF nativo | Lee pesos Q4_K_M directamente |
| Flash Attention | Memoria O(seq) |
| Cache KV en FP16 | Reduce el tamaño de la caché de 88 MB a 44 MB |
| JSON con restricciones de gramática | Llamadas a herramientas fiables en modelos pequeños |
| Cross‑compilación para RISC‑V | Ejecuta en el LicheeRV Nano |
| Binario pequeño (~80 KB) | Despliega en cualquier lugar |
Resultado – TinyLlama 1.1B corre en una placa ~ $10 con 256 MB de RAM y 45 MB de memoria de ejecución.
2. Requisitos de hardware
| Placa | RAM | Costo | Notas |
|---|---|---|---|
| Raspberry Pi 5 4‑núcleos | 2 GB+ | $60 | Mayor rendimiento |
| Raspberry Pi 4 4‑núcleos | 1 GB | $35 | Buen equilibrio |
| Raspberry Pi 3 B+ | 512 MB | $25 | Todavía funciona |
| Raspberry Pi Zero 2W | 512 MB | $15 | Ultra‑barato |
| LicheeRV Nano | 512 MB | $10 | RISC‑V, SIMD similar a NEON |
Deberás contar con una tarjeta SD de al menos 1 GB para el modelo y el tiempo de ejecución.
3. Construir e instalar
Instalador de una línea (Pi/Linux)
curl -sSL https://raw.githubusercontent.com/RightNow-AI/picolm/main/install.sh | bash
Este script:
1. Detecta tu arquitectura (ARM64, ARMv7, x86‑64).
2. Instala gcc, make y curl si faltan.
3. Compila PicoLM con las banderas SIMD óptimas.
4. Descarga el modelo TinyLlama 1.1B Q4_K_M.
5. Añade picolm a tu $PATH.
Compilación completa (multiplataforma)
git clone https://github.com/rightnow-ai/picolm.git
cd picolm/picolm
# Detecta automáticamente la CPU para construcción local
make native
# O cross‑compilación para Raspberry Pi desde un host x86
make cross-pi
# Compilación para RISC‑V
make riscv
Windows (MSVC)
cd picolm
build.bat
picolm.exe model.gguf -p \"Hello\" -n 20
4. Descargar el modelo
El objetivo por defecto make model trae TinyLlama 1.1B Chat (Q4_K_M) – 638 MB.
cd /opt/picolm
make model
Si prefieres otro GGUF, colócalo bajo ~/.picolm/models/ y actualiza la configuración más tarde.
5. Prueba rápida
./picolm /opt/picolm/models/tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf -p \"Explain gravity in one sentence\" -n 30
Deberías ver una explicación corta y coherente. El tamaño del binario es de ~80 KB y el programa consume <45 MB de RAM.
6. Benchmarks de rendimiento
| Dispositivo | Costo | Tokens/s | RAM | Notas |
|---|---|---|---|---|
| Pi 5 4‑núcleos | $60 | ~10 | 45 MB | NEON de 4‑núcleos |
| Pi 4 4‑núcleos | $35 | ~8 | 45 MB | NEON |
| Pi 3 B+ | $25 | ~4 | 45 MB | NEON |
| Pi Zero 2W | $15 | ~2 | 45 MB | ARMv7 |
| LicheeRV Nano | $10 | ~1 | 45 MB | SIMD RISC‑V |
Tip: Usa la bandera
-jpara aumentar el número de hilos (máx. 8 en Pi 5). En RISC‑V estás limitado al rendimiento de un solo hilo.
7. Integrar con PicoClaw
PicoClaw es un asistente ligero en Go que lanza PicoLM como subproceso. Configúralo para usar el binario compilado:
{
\"agents\": {
\"defaults\": {\"provider\": \"picolm\", \"model\": \"picolm-local\"}
},
\"providers\": {
\"picolm\": {
\"binary\": \"~/.picolm/bin/picolm\",
\"model\": \"~/.picolm/models/tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf\",
\"max_tokens\": 256,
\"threads\": 4,
\"template\": \"chatml\"
}
}
}
Ejecutar:
picoclaw agent -m \"What is photosynthesis?\"
PicoClaw gestiona el protocolo, manteniendo el dispositivo sin conexión y mostrando la respuesta al instante.
8. Opciones avanzadas
| Bandera | Propósito |
|---|---|
--json |
Fuerza salida JSON gramáticamente válida (esencial para llamadas a herramientas). |
--cache file.kvc |
Persiste caché KV; omite relleno previo en prompts repetidos. |
-t <float> |
Temperatura; poner 0 para salida greedy. |
-k <float> |
Muestreo top‑p. |
-s <int> |
Semilla RNG. |
-c <int> |
Sobrescribe longitud de contexto (p.ej., 512 para dispositivos restringidos). |
Ejemplo de prueba JSON
./picolm /opt/picolm/models/tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf --json -p \"Return JSON with name and age\" -n 40 -t 0.3
Recibirás algo como {"name":"Alice","age":30}.
9. FAQ & solución de problemas
Q: Mi Pi se bloquea después de unos segundos.
A: La tarjeta SD podría ser lenta; prueba una tarjeta UHS‑I de alta velocidad y activa caché de escritura (ddrescue).
Q: Obtengo un error “Out‑of‑memory”.
A: Reduce -j o la longitud de contexto. En el Pi Zero, mantén el contexto en 512.
Q: Cuánto ocupa el modelo? A: 638 MB para TinyLlama 1.1B Q4_K_M. Otros modelos varían (Llama‑2 7B = 4.1 GB).
Q: ¿Se puede correr Llama‑2 7B? A: Sí, si tu dispositivo dispone de ~1.4 GB de RAM de ejecución para la caché KV. El Pi 4 con 4 GB funcionará, solo más lento.
10. Próximos pasos
- Agregar herramientas personalizadas: PicoClaw puede llamar a binarios externos (por ej., solicitantes web) e insertar respuestas en JSON.
- Soporte para más modelos: Cualquier arquitectura LLaMA‑GGUF funciona; descárgala de Hugging Face y actualiza la configuración.
- Mejorar velocidad: Núcleos AVX2 o AVX‑512 para CPUs de escritorio, decodificación especulativa, o kernels SIMD más grandes.
- Empaquetado Edge AI: Empaqueta PicoLM en una imagen de aplicación para Raspberry Pi OS o Alpine Linux.
Conclusión
PicoLM demuestra que un LLM de 1 billón de parámetros puede correr en una placa de $10 con 256 MB de RAM sin GPU, nube ni acceso a Internet. Con una instalación de 2 minutos, un binario de 80 KB y una huella de RAM de 45 MB, es la opción local más barata que encontrarás. Ya seas un aficionado a IoT, un defensor de la privacidad o un desarrollador que empuja los límites de la inferencia en el borde, PicoLM te ofrece una solución LLM totalmente offline, de código abierto y altamente optimizada.