- En distributed-llama v0.12.2, al ejecutar el modelo
deepseek_r1_distill_llama_8b_q40en 4 Raspberry Pi 5 de 8 GB, tanto la velocidad de evaluación como la de generación resultaron superiores a las de una configuración de 2 unidades - La configuración de 2 unidades registró Evaluation 7.70 tok/s y Prediction 3.54 tok/s, mientras que la de 4 unidades registró Evaluation 11.68 tok/s y Prediction 6.43 tok/s
- El log de Prediction de la configuración de 4 unidades muestra aproximadamente 155.60 ms por token, frente a unos 282.22 ms por token en la configuración de 2 unidades, lo que evidencia la diferencia de velocidad de procesamiento al aumentar la cantidad de nodos con el mismo modelo
- Otro usuario compartió resultados en v0.12.7 con 8 nodos, LAN de 2.5G y una configuración basada en CPUs Intel antiguas: Evaluation 33.64 tok/s y Prediction 16.63 tok/s
- En un caso donde el proceso se terminaba por falta de memoria en 2 Raspberry Pi 5 de 8 GB, se respondió que era necesario reducir el tamaño del contexto con
--max-seq-len 4096
Resultados de ejecución en una configuración con Raspberry Pi 5 de 8 GB
- El modelo probado fue
deepseek_r1_distill_llama_8b_q40, y la versión de distributed-llama fue la 0.12.2 - La comparación fue entre configuraciones de 2 x Raspberry Pi 5 8GB y 4 x Raspberry Pi 5 8GB
| Configuración | Evaluation | Prediction |
|---|---|---|
| 2 x Raspberry Pi 5 8GB | 7.70 tok/s | 3.54 tok/s |
| 4 x Raspberry Pi 5 8GB | 11.68 tok/s | 6.43 tok/s |
Cifras del log de la configuración de 2 unidades
- La configuración de 2 x Raspberry Pi 5 8GB registró las siguientes cifras en Evaluation
nBatches: 32nTokens: 19tokens/s: 7.70129.89 ms/tok
- En Prediction registró las siguientes cifras
nTokens: 77tokens/s: 3.54282.22 ms/tok
- Al finalizar la ejecución, el log mostró Network is closed
Cifras del log de la configuración de 4 unidades
- La configuración de 4 x Raspberry Pi 5 8GB registró las siguientes cifras en Evaluation
nBatches: 32nTokens: 19tokens/s: 11.6885.63 ms/tok
- En Prediction registró las siguientes cifras
nTokens: 77tokens/s: 6.43155.60 ms/tok
- En el log se muestra repetidamente, durante la generación de tokens, envío de
864 kBy recepción de1191 kB
Resultados de otro usuario con 8 nodos
- Un usuario compartió resultados usando 8 nodos en distributed-llama v0.12.7
- En su mayoría, CPUs Intel antiguas en configuraciones de 4 o 6 núcleos
- Soporte para AVX2
- Conexión LAN de 2.5G
- Los resultados de ejecución de esta configuración fueron los siguientes
- Evaluation:
33.64 tok/s,29.73 ms/tok - Prediction:
16.63 tok/s,60.13 ms/tok - La cantidad de tokens de Prediction fue
245
- Evaluation:
- El comando usado tenía la forma de
./dllama inference, especificando modelo, tokenizer,--buffer-float-type q80,--nthreads 6,--max-seq-len 4096, varios--workersy--steps 256
Problemas de ejecución y respuestas
- Se compartió un caso en una configuración de 2 Raspberry Pi 5 de 8 GB donde, durante la ejecución, aparecía RequiredMemory: 20474 MB y luego el proceso terminaba con
Killed- El comando del nodo raíz incluía
--buffer-float-type q80,--steps 16,--nthreads 4y 1 dirección de worker - La respuesta indicó que había que reducir el tamaño del contexto con
--max-seq-len 4096
- El comando del nodo raíz incluía
- Otro usuario compartió un fenómeno en el que, después de conectarse a varios workers, ante el prompt
what is 99+12solo se imprimían espacios y puntos- El log mostraba
RopeScaling: f=8.0, l=1.0, h=4.0, o=8192,RequiredMemory: 3310 MB,Chat template: deepSeek3 - El administrador preguntó qué versión estaba usando y respondió que verificara si había hecho pull de los últimos cambios y en qué CPU lo estaba ejecutando
- El log mostraba
1 comentarios
Opiniones de Hacker News
Los anuncios sobre ejecutar Deepseek R1 en Raspberry Pi suelen seguir el mismo patrón: en realidad se parecen más a ejecutar Llama o Qwen modificados con la técnica de destilación de DeepSeek
DeepSeek induce a los modelos de lenguaje grandes destilados a cortar su propia salida con “Wait.” para que razonen hasta cierto punto, pero esto es mucho más débil que la capacidad de razonamiento del modelo completo, y puede caer en un bucle de dudar de sí mismo repitiendo “Wait.” sin fin, en vez de desarrollar con nuevos matices una conclusión ya alcanzada
Aun así, si se mira la sección Distilled Model Evaluation[1] del repositorio oficial de R1, DeepSeek-R1-Distill-Llama-8B también es bastante bueno, y se dice que en algunos benchmarks supera a 4o-0513 y Sonnet-1022.
También hay que recordar que existe el muestreo desde una gramática formal. llama.cpp tiene GBNF, y también se agregó configuración de lazy grammar[2], así que para algunos usos ya se volvió bastante útil. Significa que la gramática interviene después.
Además, todavía hay margen para ajuste fino adicional. Varias empresas ya ofrecen servicios de “RFT”, que enriquecen datasets comunes de ajuste fino supervisado con datos sintéticos de razonamiento creados por un R1 grande. Por eso, este resultado podría ser un resultado preliminar mucho más valioso de lo que parece.
Una decodificación de 6 tok/s no es rápida, pero a quienes usan Raspberry Pi esas cosas no les importan mucho.
[1] https://github.com/deepseek-ai/DeepSeek-R1#distilled-model-e...
[2] https://github.com/ggerganov/llama.cpp/pull/9639
Me da curiosidad qué quiere decir que R1 entrene un modelo Llama y qué tiene de especial el método de destilación de DeepSeek
Si fuera un modelo de “destilación” propiamente dicho, tendría que haberse entrenado desde cero para imitar por completo a un modelo más grande, pero aquí eso no ocurre
Como siempre, hay que tomar las cifras de tok/s con muchísima cautela.
En la demo “resuelven” una pregunta de menos de 500 tokens. Que sea posible sigue siendo sorprendente, pero cuando se trata de problemas reales y de un modelo “pensante” con una longitud de contexto realmente útil, es decir, 8~16k tokens, es difícil acercarse a esa velocidad. Incluso un Epyc con muchos canales cae a 2~4 tok/s cuando la longitud de contexto pasa de alrededor de 4096
pos=0 => P 138 ms S 864 kB R 1191 kB Connect
pos=2000 => P 215 ms S 864 kB R 1191 kB .
pos=4000 => P 256 ms S 864 kB R 1191 kB manager
pos=6000 => P 335 ms S 864 kB R 1191 kB the
Con que el modelo ayude un poco, pueden volverse mucho más capaces que ahora
No es un mal resultado, pero si vas a gastar £320 en cuatro Pi 5, podrías conseguir una 3080 usada de 12GB, y la velocidad de tokens probablemente sería más de 10 veces mayor
https://github.com/geerlingguy/ollama-benchmark?tab=readme-o...
Lo interesante aquí es que se puede ejecutar la inferencia de Llama de forma distribuida entre varias computadoras
¿No se podría conectar herramientas a un modelo R1 completo lento distribuido por todo el mundo, como Seti@HOME, y hacerlo razonar públicamente sobre tareas profundas y complejas?
Esto es un clúster Beowulf moderno
Por un poco más de dinero que cuatro Pi 5, puedes encontrar en eBay un servidor Dell 1U con una CPU Epyc de 32 núcleos y 64GB de memoria, y obtener un rendimiento al menos un orden de magnitud superior.
Si quieres hablar de un clúster Beowulf en un homelab, creo que al menos deberías ejecutar algo como Slurm+Lustre o k8s+OpenStack+Ceph en nodos de cómputo conectados con una red FDR Infiniband muy barata. Algo así, con cuatro nodos lentos que ni siquiera escalan linealmente, es difícil de defender
No vi ni entendí cómo se usan varias Raspberry Pi en paralelo.
Sería bueno que alguien me orientara
¿Cuándo podremos instalar estas geniales nuevas herramientas de IA con
apt-get install?brew install ollamapuede ser un buen punto de partidaollama pullse le acerca bastanteapt-get, la mayoría de los componentes de infraestructura bajo “herramientas de IA” se pueden instalar conconda installGuarda las conversaciones y facilita la descarga de modelos
Si quieres probar este modelo en Mac, el modelo usado parece ser algo como DeepSeek-R1-Distill-Llama-8B, y puedes ejecutarlo así con el nuevo plugin llm-mlx
brew install llm # or pipx install llm or uv tool install llmllm install llm-mlxllm mlx download-model mlx-community/DeepSeek-R1-Distill-Llama-8Bllm -m mlx-community/DeepSeek-R1-Distill-Llama-8B 'poem about an otter'El rendimiento también es bastante bueno: cuando lo acabo de ejecutar me dio 22 tokens/second: https://gist.github.com/simonw/dada46d027602d6e46ba9e4f48477...
¿Ayudaría agregar más memoria? Hace poco salió una Rpi 5 con 16GB RAM
Mientras el modelo quepa en memoria, lo que determina el funcionamiento real es el ancho de banda de la memoria
Un modelo Q4 de 8B parámetros debería caber incluso en una sola Pi de 8GB
Cuando hace poco Adafruit recibió stock apenas alcancé a comprar una, pero se agotó de nuevo de inmediato
Aun así, independientemente del rendimiento, hay modelos que requieren más de 8GB para ejecutarse y que Ollama directamente no puede correr
Hace falta un producto como Alexa o Google Home
Pero en vez de conectarse a la nube, debería ejecutar un modelo de lenguaje grande local. No sé por qué todavía no existe o por qué nadie lo está construyendo
Un buen modelo de lenguaje grande es caro, así que la verdadera pregunta es si se puede fabricar algo lo bastante barato como para dejar margen, pero con un modelo lo bastante útil como para que la gente lo compre
No estoy seguro de si puede usar herramientas, pero sí puedes exponer cosas que la gente podría preguntar, como el clima