- Foi montado um cluster de IA de cerca de US$ 3 mil usando 10 Raspberry Pi Compute Blade e módulos CM5, mas o resultado ficou abaixo do esperado em desempenho e custo-benefício
- Em benchmarks de HPC, obteve-se ganho de desempenho de 10x (325 Gflops) em relação a um único Pi, porém o resultado foi 4 vezes mais lento que um cluster desktop da Framework
- Nos testes de IA, como não há suporte a aceleração por GPU, foi necessário depender de inferência baseada em CPU, e ao executar o modelo Llama 70B a velocidade de geração ficou em torno de 0,85 t/s, um nível muito baixo
- Ainda assim, por ter vantagens como baixo consumo de energia, baixo ruído e alta densidade, pode fazer sentido para usos específicos como tarefas de CI, implantações de edge com forte exigência de segurança e nós de relay do Tor
- No geral, ressalta-se que é algo divertido para aprendizado e experimentação, mas inadequado para uso geral em IA/HPC, sendo um caso que evidencia as limitações de servidores blade baseados em Pi
Introdução e visão geral do cluster
- Há 2 anos, em abril de 2023, foram encomendados 10 Compute Blade, e só recentemente todos chegaram, permitindo concluir o cluster
- Nesse intervalo, o Raspberry Pi foi atualizado do CM4 para o CM5, então foram encomendados mais 10 módulos 16GB CM5 Lite, completando uma configuração com 160GB de memória
- O custo total foi de US$ 3.000 (incluindo frete), tornando-se o maior cluster de Pi já montado pelo autor
- Entre computadores blade baseados em Pi existe também o Xerxes Pi, mas como havia grande chance de atraso no lançamento e na entrega, ele também foi apoiado por curiosidade
- A dúvida era se um cluster de Pi ainda vale a pena, e a ideia era verificar se havia valor nesse investimento comparando desempenho, densidade e eficiência com um cluster desktop da Framework
Montagem do cluster e trabalho repetitivo
- Por causa de diversos problemas de compatibilidade com SSD e aquecimento, o cluster precisou ser remontado três vezes
- 1ª remontagem: foram usados vários SSDs NVMe, mas surgiram problemas de compatibilidade e confiabilidade; depois de substituir tudo por SSDs Patriot P300, a estabilidade melhorou
- 2ª remontagem: houve throttling causado pelo calor, e o problema de gerenciamento térmico foi resolvido ao fixar firmemente os dissipadores
Resultados de benchmark de HPC (High Performance Computing)
- O desempenho de supercomputação foi medido com o benchmark High Performance Linpack (Top500)
- Antes da instalação dos dissipadores, o desempenho era de 275 Gflops; depois, subiu para até 325 Gflops
- Esse número representa 10 vezes o desempenho de um único nó CM5 integrado de 8GB, com consumo de energia de 130W
- Porém, em comparação com um cluster de 4 nós Framework Desktop de US$ 8.000, o cluster Pi é 4 vezes mais lento
- Em eficiência energética (Gflops/W), há uma pequena vantagem, mas em desempenho por preço ele fica atrás do cluster da Framework
- Não é uma solução adequada para HPC em larga escala
Testes de uso em IA e limitações
- Com 160GB de memória, esperava-se um cluster de IA, mas a iGPU do Pi 5 não permite aceleração via Vulkan
- A inferência em IA fica limitada à CPU, e as limitações do Arm Cortex A76 reduzem bastante o desempenho de processamento
- No caso do modelo Llama 3.2:3B, um nó processa apenas 6 tokens por segundo (relativamente lento)
- Mesmo distribuindo um modelo grande (Llama 3.3:70B) por todos os nós, o desempenho fica em 0,28 a 0,85 tokens/segundo (pelo menos 5 a 25 vezes mais lento que o cluster da Framework)
- Outras ferramentas de IA distribuída, como Exo e distributed-llama, também são instáveis para uso prático ou não entregam desempenho suficiente
- No geral, não é adequado para workloads de IA
Conclusão e sugestões de uso realistas
- O cluster blade com Pi é uma opção pouco competitiva em desempenho/custo-benefício e é difícil recomendá-lo para algo além de aprendizado, experimentação e hobby
- Por outro lado, ele tem vantagens em facilidade de gerenciamento, baixo ruído, formato compacto e densidade e separação entre nós
- Na prática, ele pode ser considerado de forma limitada para tarefas de CI (integração contínua) ou ambientes que exigem isolamento, como alta segurança e edge computing
- A Unredacted Labs o utiliza para ambientes com grande número de nós, como Tor exit relay, a fim de maximizar eficiência e densidade de nós
- Porém, para a maioria dos usuários em geral, existem outras alternativas com desempenho e eficiência superiores por custo semelhante
- A fabricante Gateworks também chegou a vender o GBlade industrial, mas não teve sucesso comercial no mercado e ele foi descontinuado
- Em manutenção e praticidade, é mais simples do que operar um cluster grande, mas sem um motivo muito específico, é difícil recomendá-lo
Lista de componentes usados
- (O autor apresentou separadamente a lista de componentes usados, mas menciona que não recomenda reproduzir exatamente uma configuração semelhante)
5 comentários
Para ser mais preciso sobre o Vulkan, o correto é dizer que "a API Vulkan suportada pela iGPU do Pi 5 ainda não é compatível no
llama.cpp". Fico curioso para saber que desempenho teria saído se isso tivesse sido suportado.Comentários do Hacker News
Para quem se interessa por sistemas distribuídos, recomendo fortemente pegar uma máquina única com uma CPU AMD moderna de 16 núcleos e subir 8 máquinas virtuais nela. Dá para alocar 4 hyperthreads para cada VM, 1/8 da RAM total para cada uma, e criar uma rede virtual dentro de um software de virtualização como o Proxmox para ter a experiência de cluster. Na prática, você ainda consegue testar resiliência pausando uma VM por vez com um clique e depois restaurando. Esse método é muito superior a um cluster de Pi em perf/W e conveniência. Sem o estresse de montar peças: só precisa de CPU, placa-mãe, SSD m.2 e dois pentes de RAM. Claro, rodar direto numa máquina com muitos núcleos, sem virtualização, dá o melhor perf/W, mas algo que benchmarks costumam ignorar é o consumo em idle. Se o cluster vai ficar ligado o tempo todo e ser usado só de vez em quando, isso também é muito importante
Não acho que precise de tanta performance de CPU assim. Até um quad-core antigo já dá conta
Em assunto relacionado, sempre me surpreendeu que rodar programas antigos de MPI em algo como uma workstation AMD multi-chip não tenha virado algo maior
Na verdade, fico em dúvida se esse tanto de poder de CPU é necessário. Se a ideia é praticar sistemas distribuídos, dá para instalar Erlang até num Linux antigo ou numa Raspberry Pi e montar alguns nós para experimentar sem problema
Fiquei triste na época da corrida pela Raspberry Pi, alguns anos atrás, vendo tanta gente tentando comprar esse brinquedo para montar clusters. A Pi foi feita originalmente para educação, mas na prática acho que muitas vezes acaba sendo desperdício. Eu rodo um "cluster" de K8s com xcp-ng, e na verdade dá para simplificar ainda mais. O Docker Machine também permitia subir vários hosts com uma linha. Acho que o projeto acabou, mas com Docker Swarm ainda dá para escalar serviços facilmente sem hipervisor
Eu pratiquei Postgres hot standby e read replica desse jeito. Também estudei clusters de Hadoop e Cassandra assim. O fato de eu poder falar sobre experiência configurando esses sistemas e simulando recuperação me ajudou a conseguir empregos novos que dobraram e até triplicaram meu salário. Para qualquer desenvolvedor que já tenha alguma bagagem prática, recomendo muito fazer esse tipo de laboratório. Ajuda bastante a subir de nível na carreira
Isso me lembrou a sessão da NormConf “Just use one big machine for model training and inference.” Recomendo este vídeo relacionado. E também o clássico artigo “Scalability! But at what COST?” (link), que é realmente muito interessante. Resumindo a conclusão: há muito mais coisas com que se preocupar na performance de processamento paralelo do que apenas a Lei de Amdahl. Sistemas scale-out exigem um monte de trabalho extra que não existe num nó único. Na verdade, multithreading também adiciona bastante trabalho que não existe em código sequencial. O verdadeiro segredo da performance é que “a operação mais rápida é a que você não executa”
O primeiro benchmark que rodei foi o top500 High Performance Linpack para clusters. Gosto dele por ser a forma tradicional de medir desempenho de supercomputadores. Depois de resolver os problemas térmicos, ele consumia cerca de 130W e entregava 325 Gflops. Como a lista no site do top500 vai só até 1993, eu esperava que esse cluster de Pi pudesse entrar em alguma fase absurda da história dos anos 70, mas na verdade é bem mais recente. Entre 1993 (1º lugar 131 Gflop/s, 10º 15.24 Gflop/s) e 1997 (1º 1,830,40, 10º 326.4), e parece que ele sairia do top500 em 2002~2003. Como é baseado em Rpeak, o ideal seria reordenar por Rmax para ser exato, mas isso daria trabalho demais, então deixei para lá. Para um cluster de brinquedo desses, acho que se saiu muito bem. Como já me acostumei com piadas do tipo “o Apple Watch é mais rápido que o computador da Apollo”, achei que fosse voltar ainda mais no tempo
RPI sempre teve CPU ruim. A proposta da Pi desde o começo foi aproveitar chips Broadcom baratos com a desculpa de ser “educacional”. É para criança aprender circuito piscando LED com Raspberry Pi. Pensar em fazer computação de alto desempenho com um cluster de Pi nunca fez sentido
Não dá para levar o texto ao pé da letra demais. O autor é um influenciador de tecnologia bem-sucedido: compra equipamento caro, exibe, depois reclama do preço e ganha dinheiro com isso. A visão econômica dele não precisa ser igual à minha
Isso é óbvio, mas o ponto real é que, se você quer fazer alguma coisa hoje, a resposta provavelmente não é Raspberry Pi. As especificações pelo preço simplesmente não fecham, e o mercado está parado
Ainda assim, acho os vídeos do Jeff refrescantes. Outros youtubers ficam presos no ciclo de comparar “tempo de render para vídeo no YouTube, precisão de cor, qualidade de câmera e qualidade de áudio”, mas ele faz algo diferente
Queria que o Dan Luu migrasse para esse tipo de conteúdo
Quem sabe construir essas coisas já sabe que uma GPU única entrega 10 vezes mais desempenho computacional
O título me pareceu um pouco apelativo, mas o autor aparentemente se divertiu bastante tanto com o experimento quanto com a montagem do equipamento. Ainda assim, a frase de abertura “encomendei um conjunto de 10 Compute Blades em abril de 2023 e ele chegou agora” foi bem decepcionante
Se cluster de Pi fosse realmente competitivo em custo por desempenho, os datacenters já estariam cheios deles
Isso parece aquela piada de economista sobre “por que ninguém pega uma nota de 20 dólares caída no chão”. Eficiência perfeita de mercado pode até funcionar no longo prazo, mas no curto prazo a maior parte das decisões vem de hábito e intuição empírica
Também não dá para esquecer que o mesmo tipo de argumento já foi feito sobre PlayStation
Cluster de Pi parece... não ser realmente competitivo em preço para uso nenhum
Existe uma empresa chamada Mythic Beasts que oferece aluguel de servidores rpi (link). Em nichos bem pequenos, claramente ainda há algum uso
Há um motivo para os supercomputadores terem usado GPUs nos últimos 10 anos. GPU é muito mais eficiente. Se você precisa de paralelismo em 32 bits, basta colocar uma GPU de consumidor. Se precisa de 64 bits, é só comprar uma GPU prosumer como a RTX 6000 Pro e instalar. Hoje em dia ninguém monta cluster de CPU
Infelizmente, a RTX 6000 Pro também só entrega 2 TFLOPS em double precision, 64 vezes menos que em single precision. O EPYC 9755 chega a cerca de 10 TFLOPS, e com menos consumo. Com a A100 acontece algo parecido. Para quem quer operações DP de HPC em nível hobby, uma placa AMD antiga talvez seja melhor. Hoje AMD e NVIDIA já entenderam que clientes científicos pagam caro por desempenho de alta precisão
O supercomputador El Capitan também usa CPU AMD (com GPU integrada) e está no topo recente do ranking. O Frontier vem logo atrás com configuração parecida. GPU separada, cada uma com seu próprio barramento de dados e memória, não é necessariamente o ideal
Cluster de Pi, na prática, não busca alta performance, e sim ser um equipamento excêntrico e divertido para hobby. Quase ninguém espera que seja uma solução custo-efetiva. Parece mais um caso de título chamativo de YouTube vazando para blog. Se o objetivo real é praticar cluster Linux, é muito mais econômico instalar um hipervisor num CPU de desktop e criar VMs. A menos que a graça seja ficar conectando vários cabos, essa abordagem acaba sendo muito mais eficiente em uso de recursos do sistema e flexibilidade
Se a meta for praticar do jeito mais custo-efetivo possível, então use a nuvem. Normalmente a pessoa perde o interesse rápido depois de aprender, então as cobranças da nuvem provavelmente acabam antes de você sequer chegar no preço do hardware de desktop
Fiz as contas e comprar um Mac Studio com o processador Mx Ultra mais recente e a maior quantidade de memória é a forma mais custo-efetiva de experimentar modelos com mais de 100B parâmetros
Em computação tradicional, você só perde em espaço, mas ganha em energia e custo. Já em IA, não foi possível usar GPU, e o software de clustering do llama.cpp ainda é imaturo demais para tirar uma conclusão útil. Isso pode mudar se o software melhorar
Acho que, nessas discussões, dá para chegar a uma conclusão clara mesmo sem bagagem técnica. Basta olhar o fato de todo mundo usar GPU para IA e o preço da ação da NVIDIA explodindo. Fico me perguntando se o OP realmente achava que o mundo só não estava usando Raspberry Pi porque ainda não tinha percebido essa possibilidade
Alguns produtos Raspberry Pi são vendidos com prejuízo, e isso por si só pode gerar a impressão de que “talvez sejam competitivos em preço”
Gostei do comentário do autor: “Se você veio ao blog, provavelmente prefere texto a vídeo, então vou direto ao ponto”
Dizer que se arrepende depois de ter se divertido pra caramba é dose kkk. Não é muito diferente de dizer que um jogo não foi divertido mesmo tendo mais de 1000 horas de gameplay.
A analogia caiu como uma luva kkk
kkkkkkkkkkk