3 pontos por GN⁺ 2025-02-17 | 1 comentários | Compartilhar no WhatsApp
  • Ao executar o modelo deepseek_r1_distill_llama_8b_q40 no 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: 32
    • nTokens: 19
    • tokens/s: 7.70
    • 129.89 ms/tok
  • Em Prediction, registrou os seguintes valores
    • nTokens: 77
    • tokens/s: 3.54
    • 282.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: 32
    • nTokens: 19
    • tokens/s: 11.68
    • 85.63 ms/tok
  • Em Prediction, registrou os seguintes valores
    • nTokens: 77
    • tokens/s: 6.43
    • 155.60 ms/tok
  • O log mostra repetidamente durante a geração de tokens transmissão de 864 kB e recepção de 1191 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
  • O comando usado foi no formato ./dllama inference, especificando modelo, tokenizer, --buffer-float-type q80, --nthreads 6, --max-seq-len 4096, vários --workers e --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 4 e 1 endereço de worker
    • A resposta foi que é preciso reduzir o tamanho do contexto com --max-seq-len 4096
  • Outro usuário compartilhou um problema em que, após se conectar a vários workers, para o prompt what is 99+12 eram 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

1 comentários

 
GN⁺ 2025-02-17
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

    • Um modo de falha comum em modelos DeepSeek destilados é que eles não percebem que estão andando em círculos
      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
    • Não sei se o título do envio foi alterado, mas agora ele diz explicitamente Deepseek R1 Distill 8B Q40, então chamar de “Deepseek R1” realmente representa mal o resultado
      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
    • Gostaria que alguém explicasse o que esse método de destilação significa para um engenheiro de software cuja área principal não é machine learning
      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
    • Isto é apenas um LLaMa ajustado finamente para gerar uma cadeia de pensamento parecida com a 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
    • Realmente não gosto que esses modelos possam ser promovidos com o nome Deepseek R1
  • 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

    • Testei uma execução longa em quatro Raspberry Pi 5, ou seja, como fica a predição
      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
    • Robôs pequenos geralmente lidam com problemas pequenos
      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

    • Ou então dá para ligar diretamente uma GPU de 12 GB ou 16 GB a um único Pi 5 e obter mais de 20 tok/s mesmo em modelos maiores
      https://github.com/geerlingguy/ollama-benchmark?tab=readme-o...
    • “Deepseek R1 Distill 8B Q40 em 1x 3080, 60,43 tok/s (eval 110,68 tok/s)” provavelmente não teria ido parar no Hacker News
    • Ainda assim, o consumo é 48 W contra 320 W
    • Também dá para usar algo como duas 3060 de 12 GB
  • O interessante aqui é que é possível executar inferência do Llama de forma distribuída por vários computadores

    • Então fico pensando onde está o equivalente disso para GPUs distribuídas
      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

    • Sinceramente, não entendo muito bem o meme de clusters de Raspberry Pi
      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?

    • No Mac, brew install ollama pode ser um bom ponto de partida
    • Isso será possível quando a distribuição que você usa começar a empacotar ferramentas de modelos de linguagem de grande porte, ou quando você migrar para uma distribuição que faça isso
    • ollama pull é algo bem próximo disso
    • Tecnicamente não é apt-get, mas a maioria dos componentes de infraestrutura por trás das “ferramentas de IA” pode ser instalada com conda install
    • Também dá para baixar o lm-studio, uma versão com uma GUI bonita
      Ele 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 llm
    llm install llm-mlx
    llm mlx download-model mlx-community/DeepSeek-R1-Distill-Llama-8B
    llm -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

    • A velocidade de inferência depende muito mais da velocidade de leitura/escrita do que da quantidade de memória
      Desde que o modelo caiba na memória, o que determina o funcionamento real é a largura de banda da memória
    • Enquanto o modelo e o contexto couberem na memória, a capacidade de memória em si não ajuda
      Um modelo Q4 de 8B parâmetros deve caber até em um Pi de 8GB
    • O Pi 5 de 16GB chegou e sumiu rapidinho
      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

    • Imagino que seja por causa do preço
      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
    • Dá para chegar a algo parecido até certo ponto com o Home Assistant
      Não tenho certeza se ele permite uso de ferramentas, mas é possível expor coisas que faria sentido perguntar, como o tempo
    • Por modelo de linguagem de grande porte local, você quer dizer algo como Ollama + llamacpp?