Executando o Deepseek R1 Distill 8B Q40 em quatro Raspberry Pi 5
(github.com/b4rtaz)- Ao executar o modelo
deepseek_r1_distill_llama_8b_q40no distributed-llama v0.12.2 com quatro Raspberry Pi 5 de 8 GB, tanto a velocidade de avaliação quanto a de geração ficaram maiores do que na configuração com 2 unidades - A configuração com 2 unidades registrou Evaluation 7.70 tok/s e Prediction 3.54 tok/s, enquanto a configuração com 4 unidades registrou Evaluation 11.68 tok/s e Prediction 6.43 tok/s
- O log de Prediction da configuração com 4 unidades mostra cerca de 155.60ms por token, enquanto a configuração com 2 unidades mostra cerca de 282.22ms por token, evidenciando a diferença de velocidade de processamento com o aumento do número de nós no mesmo modelo
- Outro usuário compartilhou no v0.12.7 uma configuração com 8 nós, LAN 2.5G e CPUs Intel antigas, que alcançou Evaluation 33.64 tok/s e Prediction 16.63 tok/s
- Em casos em que o processo é encerrado por falta de memória com 2 Raspberry Pi 5 de 8 GB, foi respondido que é necessário reduzir o tamanho do contexto com
--max-seq-len 4096
Resultados de execução na configuração com Raspberry Pi 5 8GB
- O modelo testado é
deepseek_r1_distill_llama_8b_q40, e a versão do distributed-llama é 0.12.2 - A comparação foi feita entre as configurações 2 x Raspberry Pi 5 8GB e 4 x Raspberry Pi 5 8GB
| Configuração | 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 |
Valores de log da configuração com 2 unidades
- A configuração com 2 x Raspberry Pi 5 8GB registrou os seguintes valores em Evaluation
nBatches: 32nTokens: 19tokens/s: 7.70129.89 ms/tok
- Em Prediction, registrou os seguintes valores
nTokens: 77tokens/s: 3.54282.22 ms/tok
- Ao encerrar a execução, o log mostra Network is closed
Valores de log da configuração com 4 unidades
- A configuração com 4 x Raspberry Pi 5 8GB registrou os seguintes valores em Evaluation
nBatches: 32nTokens: 19tokens/s: 11.6885.63 ms/tok
- Em Prediction, registrou os seguintes valores
nTokens: 77tokens/s: 6.43155.60 ms/tok
- O log mostra repetidamente durante a geração de tokens transmissão de
864 kBe recepção de1191 kB
Resultado de outro usuário com 8 nós
- Um usuário compartilhou os resultados de uma configuração com 8 nós no distributed-llama v0.12.7
- Na maioria, CPUs Intel antigas, com 4 ou 6 núcleos
- Suporte a AVX2
- Conexão LAN 2.5G
- Os resultados dessa configuração foram os seguintes
- Evaluation:
33.64 tok/s,29.73 ms/tok - Prediction:
16.63 tok/s,60.13 ms/tok - O número de tokens em Prediction foi
245
- Evaluation:
- O comando usado foi no formato
./dllama inference, especificando modelo, tokenizer,--buffer-float-type q80,--nthreads 6,--max-seq-len 4096, vários--workerse--steps 256
Problemas na execução e respostas
- Foi compartilhado um caso em que, durante a execução com 2 Raspberry Pi 5 de 8 GB, apareceu RequiredMemory: 20474 MB antes do encerramento com
Killed- O comando do nó raiz incluía
--buffer-float-type q80,--steps 16,--nthreads 4e 1 endereço de worker - A resposta foi que é preciso reduzir o tamanho do contexto com
--max-seq-len 4096
- O comando do nó raiz incluía
- Outro usuário compartilhou um problema em que, após se conectar a vários workers, para o prompt
what is 99+12eram exibidos apenas espaços e pontos- No log apareciam
RopeScaling: f=8.0, l=1.0, h=4.0, o=8192,RequiredMemory: 3310 MB,Chat template: deepSeek3 - O mantenedor perguntou qual versão estava sendo usada e pediu para confirmar se as últimas mudanças haviam sido obtidas com pull e em qual CPU estava sendo executado
- No log apareciam
1 comentários
Opiniões no Hacker News
Anúncios sobre rodar Deepseek R1 em Raspberry Pi geralmente seguem o mesmo padrão: na prática, é mais como executar Llama ou Qwen modificados com a técnica de destilação da DeepSeek
A DeepSeek induz grandes modelos de linguagem destilados a interromperem a própria saída com “Wait.” para fazê-los raciocinar até certo ponto, mas isso é muito mais fraco do que a capacidade de raciocínio do modelo completo e pode cair em um ciclo de autodúvida, repetindo “Wait.” sem parar, em vez de desenvolver com novas nuances a conclusão a que já chegou
Dito isso, olhando a seção Distilled Model Evaluation[1] do repositório oficial do R1, o DeepSeek-R1-Distill-Llama-8B também é bem decente e, em alguns benchmarks, aparece como melhor que o 4o-0513 e o Sonnet-1022
Também é preciso lembrar que há amostragem a partir de gramática formal. O llama.cpp tem GBNF, e também ganhou configuração de lazy grammar[2], o que o tornou bastante utilizável para alguns casos. Isso significa que a gramática intervém depois
Além disso, ainda há margem para ajuste fino adicional. Várias empresas agora oferecem serviços de “RFT”, que enriquecem um dataset comum de ajuste fino supervisionado com dados sintéticos de raciocínio gerados por um R1 maior. Portanto, este resultado pode ser um pré-resultado muito mais valioso do que parece
Decodificação a 6 tok/s não é rápida, mas quem usa Raspberry Pi não liga muito para esse tipo de coisa
[1] https://github.com/deepseek-ai/DeepSeek-R1#distilled-model-e...
[2] https://github.com/ggerganov/llama.cpp/pull/9639
Tenho curiosidade sobre o que significa o R1 treinar um modelo Llama e o que há de especial no método de destilação da DeepSeek
Um modelo de “destilação” propriamente dito deveria ser treinado do zero para imitar completamente um modelo maior, mas isso não acontece aqui
Como sempre, é preciso encarar os números de tok/s com muito ceticismo
Na demo, ele “resolve” uma pergunta com menos de 500 tokens. O simples fato de ser possível ainda é impressionante, mas, ao lidar com problemas reais e com um comprimento de contexto realmente útil para um modelo “pensante”, ou seja, 8–16k tokens, é difícil chegar perto dessa velocidade. Até Epyc com muitos canais cai para 2–4 tok/s quando o comprimento de contexto passa de mais ou menos 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
Se o modelo ajudar só um pouco, eles podem se tornar muito mais capazes do que são hoje
Não é um resultado ruim, mas, se você vai gastar £320 em quatro Pi 5, dá para comprar uma 3080 usada de 12 GB, e a velocidade de tokens provavelmente será mais de 10 vezes maior
https://github.com/geerlingguy/ollama-benchmark?tab=readme-o...
O interessante aqui é que é possível executar inferência do Llama de forma distribuída por vários computadores
Não seria possível conectar ferramentas a um modelo R1 completo lento e distribuído pelo mundo, como o Seti@HOME, e fazê-lo raciocinar publicamente sobre tarefas profundas e complexas?
Isto é um cluster Beowulf moderno
Por um pouco mais de dinheiro do que quatro Pi 5, dá para encontrar no eBay um servidor Dell 1U com CPU Epyc de 32 núcleos e 64 GB de memória, com desempenho pelo menos uma ordem de grandeza maior
Se a ideia é falar de cluster Beowulf em um homelab, acho que ao menos seria preciso rodar uma configuração como Slurm+Lustre ou k8s+OpenStack+Ceph em nós de computação ligados por uma rede FDR Infiniband bem barata. Algo assim, com quatro nós lentos que nem sequer escalam linearmente, é meio difícil de levar a sério
Não vi nem entendi como vários Raspberry Pi são usados em paralelo
Seria bom se alguém pudesse indicar um caminho
Quando será que poderemos instalar essas novas ferramentas de IA incríveis com
apt-get install?brew install ollamapode ser um bom ponto de partidaollama pullé algo bem próximo dissoapt-get, mas a maioria dos componentes de infraestrutura por trás das “ferramentas de IA” pode ser instalada comconda installEle salva as conversas e também facilita o download de modelos
Se você quiser testar esse modelo no Mac, o modelo usado parece ser algo como DeepSeek-R1-Distill-Llama-8B, e dá para executá-lo assim com o novo 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'O desempenho também é bem bom; quando rodei agora há pouco, deu 22 tokens/second: https://gist.github.com/simonw/dada46d027602d6e46ba9e4f48477...
Adicionar memória ajudaria? Recentemente saiu um Rpi 5 com 16GB de RAM
Desde que o modelo caiba na memória, o que determina o funcionamento real é a largura de banda da memória
Um modelo Q4 de 8B parâmetros deve caber até em um Pi de 8GB
Quando entrou estoque recentemente na Adafruit, consegui comprar um por pouco, mas logo esgotou de novo
Ainda assim, independentemente do desempenho, há modelos que exigem mais de 8GB para rodar e que o Ollama simplesmente não consegue executar
Precisamos de um produto como Alexa ou Google Home
Só que, em vez de se conectar à nuvem, ele teria que executar um modelo de linguagem de grande porte local. Não sei por que isso ainda não existe, ou por que ninguém está fazendo
Modelos de linguagem de grande porte bons são caros, então a verdadeira questão é se dá para colocar um modelo útil o suficiente para as pessoas comprarem e ainda fabricar barato o bastante para sobrar margem
Não tenho certeza se ele permite uso de ferramentas, mas é possível expor coisas que faria sentido perguntar, como o tempo