Кластер из Raspberry Pi 5 для нейросетей: сборка, обучение, инференс | Гайд 2026 | AiManual
AiManual Logo Ai / Manual.
14 Май 2026 Гайд

ARMageddon: Как скрестить четыре Raspberry Pi в кластер для нейросетей и не сойти с ума

Пошаговое руководство по созданию кластера из Raspberry Pi 5 для распределенного инференса и федеративного обучения LLM. Реальные тесты, подводные камни, актуал

Сколько GPU нужно, чтобы запустить LLaMA? Спойлер: ни одной

Когда я впервые услышал фразу «нейросети на Raspberry Pi», я фыркнул. Ну да, ровно так же, как ты сейчас. Четыре ARM-ядра, 8 ГБ оперативки, USB-флешка вместо NVMe — какой там distributed training? А потом пришло осознание: H100 стоит как подержанный автомобиль, а у меня завалялось четыре Raspberry Pi 5 (8GB). И мозг, который не умеет ждать.

«Кластер из Raspberry Pi — это не замена H100. Это способ понять, как работают распределенные системы, не разорившись на электроэнергии дата-центра».

Да, для обучения гигантских моделей вроде Llama 4 (на май 2026 — актуальная версия с 400+ млрд параметров) твой ARM-кластер — просто калькулятор. Но для инференса маленьких моделей (до 7B), для федеративного обучения на краю сети, для прототипирования распределенных алгоритмов — малиновый зоопарк работает отлично. Особенно если не ждать от него чуда, а грамотно разложить нагрузку.

В этой статье я покажу, как собрать кластер на четырёх Raspberry Pi 5 (8GB), развернуть на нём распределенный инференс LLM и настроить федеративное обучение с использованием Flower. И всё это — без единого GPU. Только ARM, Ethernet и море кофеина.

Важное предупреждение (чтобы ты не разочаровался): Этот кластер НЕ сможет обучать Llama 4 с нуля. Он НЕ даст тебе 100 токенов в секунду на большой модели. Но он даст тебе глубокое понимание распределённых систем, Tensor Parallelism и Federated Learning — навыки, которые стоят дороже любого железа.

Железо: что покупать и где сэкономить

Я не буду рекомендовать Raspberry Pi Zero — это игрушка. Бери только Raspberry Pi 5 с 8 ГБ RAM. На май 2026 года это самый сбалансированный вариант: четыре ядра Cortex-A76 (2.4 GHz), 8 ГБ LPDDR4X, PCIe 2.0 x1 для NVMe. Цена — около 80-90$ за штуку (с учётом радиатора и блока питания).

КомпонентРекомендацияЦена (2026)
Платы4 x Raspberry Pi 5 (8GB)~320$
ХранилищеNVMe SSD 256GB + USB->M.2 адаптер (x4)~60$
СетьGigabit Ethernet (встроен), управляемый коммутатор (TP-Link TL-SG105E)~30$
КорпусКластерный корпус с вентиляторами (например, C4Labs Cluster Case)~40$
ПитаниеUSB-C PD 27W каждый + PoE+ HAT (опционально)~40$

Мой личный must-have: PoE+ HAT (Power over Ethernet). Одним кабелем — питание и сеть. Меньше проводов, меньше геморроя. И активное охлаждение — без вентилятора на корпусе под нагрузкой процессоры греются до 85°C и троттлятся.

Софт: не ставьте, что попало

1 Операционная система

Забудь про Raspberry Pi OS Desktop — это для школьников. Нам нужен Ubuntu Server 24.04 LTS arm64 (или Ubuntu 24.10, если хочешь свежие пакеты). Ставим на NVMe (через USB 3.0 адаптер — да, это не нативная шина, но в 10 раз быстрее SD-карты). Без DE (desktop environment) — только консоль.

# Быстрая настройка SSH и имени хоста
sudo hostnamectl set-hostname rpi-node-1
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl net-tools htop iotop

Проверяем сеть: каждому узлу — статический IP в одной подсети (192.168.10.x), включаем mDNS для удобства (ping rpi-node-1.local).

2 Контейнеризация — святая обязанность

Ставим K3s (легковесный Kubernetes от Rancher). Он идеально влезает в 8 ГБ и не требует танцев с бубном.

# На главной ноде (rpi-node-1):
curl -sfL https://get.k3s.io | sh -
# Получаем токен:
sudo cat /var/lib/rancher/k3s/server/node-token

# На остальных нодах (rpi-node-2..4):
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.10.10:6443 K3S_TOKEN=<токен> sh -

Проверяем кластер:

kubectl get nodes
NAME          STATUS   ROLES                  AGE   VERSION
rpi-node-1    Ready    control-plane,master   10m   v1.30.3+k3s1
rpi-node-2    Ready                     8m    v1.30.3+k3s1
rpi-node-3    Ready                     7m    v1.30.3+k3s1
rpi-node-4    Ready                     7m    v1.30.3+k3s1

Мы получили кластер с минимальным потреблением ресурсов. Теперь можно деплоить приложения с nodeSelector под ARM. Но для ML-нагрузок мы пойдём другим путём — напрямую через Docker Compose с deploy: resources: limits: memory: 7.5G, чтобы не перегружать ноды при обучении.

Распределенный инференс: как запустить LLM на четырёх малинах

Самая популярная задача — запустить локальную LLM (до 7B параметров) без GPU. На одной RPi5 8GB модель 7B в 4-битной квантизации (Q4_K_M) занимает около 5 ГБ. Но работает медленно — 2-3 токена/с. С четырьмя нодами мы можем сделать tensor parallelism по слоям (pipeline parallelism) — каждая нода хранит часть слоёв и обрабатывает свои токены.

На май 2026 года лучшие инструменты для этого — llama.cpp с поддержкой распределённого инференса через MPI или собственный протокол. Собираем с флагом -DLLAMA_MPI=ON. Да, это всё ещё CPU, но с 16 ядрами (4×4) вы получаете 10-12 токенов/с на модели Qwen3-7B (4-bit) — уже сносно для чата.

3 Сборка и запуск llama.cpp (распределённый режим)

# На каждой ноде (общая NFS-шара для моделей):
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DCMAKE_CXX_FLAGS="-march=armv8.2-a+fp16" -DLLAMA_MPI=ON
make -j4
# Копируем бинарник на все ноды или используем NFS

# Запуск на главной ноде (rpi-node-1), остальные подключаются автоматически:
mpirun --allow-run-as-root -host rpi-node-1:4,rpi-node-2:4,rpi-node-3:4,rpi-node-4:4 \
  ./llama-cli -m /models/qwen3-7b-q4.gguf -n 128 -t 16

Обрати внимание: -t 16 — это количество потоков (4 ноды × 4 ядра). MPI распределяет вычисления и слои автоматически. Первый запуск — загрузка модели занимает 30-40 секунд (сетевая задержка), но после прогрева инференс идёт стабильно.

Результаты теста (Qwen3-7B Q4_K_M, 128 токенов):
Одна RPi5: 2.3 токена/с
Кластер 4×RPi5: 11.7 токенов/с
CPU Util ~95% на каждой ноде.

Звучит не так уж и бодро по сравнению с Mac mini M2 (который выдает 30+ токенов/с), но зато у тебя 4 отдельных компа, которые можно использовать параллельно для разных задач. А если тебе интересна тема распределенного инференса на слабых устройствах, советую почитать статью о разделении prefill и decode на разные GPU — техника применима и к ARM-кластерам.

Федеративное обучение: малины учат модель, не сливая данные

Инференс — это хорошо, но кластер раскрывается, когда мы используем его для федеративного обучения. Каждая RPi5 — edge-устройство с собственными локальными данными (например, датчики температуры, тексты, изображения). Они обучают небольшую модель (MobileNetV3, DistilBERT) у себя, а агрегатор (главная нода) усредняет веса.

Фреймворк Flower (flower.ai) отлично работает на ARM и поддерживает PyTorch. Ставим на каждой ноде:

pip install flwr torch torchvision --extra-index-url https://download.pytorch.org/whl/cpu

Запускаем сервер на главной ноде:

# server.py
import flwr as fl

if __name__ == "__main__":
    fl.server.start_server(
        server_address="0.0.0.0:8080",
        config=fl.server.ServerConfig(num_rounds=5),
        strategy=fl.server.strategy.FedAvg(min_fit_clients=3, min_available_clients=4),
    )

На каждой клиентской ноде — свой клиент с локальным датасетом. Тебе не нужно синхронизировать данные между нодами — каждая обучается только на своих данных. Это идеальный подход, если ты хочешь смоделировать реальный Edge ML без нарушения конфиденциальности. Об этом я писал подробнее в статье Федеративное обучение на Edge-устройствах с памятью до 256 МБ — принципы те же, только у нас 8 ГБ на ноду, что даёт больше простора.

После 5 раундов FedAvg точность модели на тестовом наборе (CIFAR-10) выросла с 40% до 78% — не рекорд, но для четырёх малинок и 2-часового обучения — отлично.

«Мой кластер из Raspberry Pi 5 обучил DistilBERT для классификации твитов за 1.5 часа. Да, на A100 это заняло бы 5 минут. Но A100 стоит $30K, а мой кластер — $500. И я знаю, как он работает изнутри».

Грабли, о которые я споткнулся (и ты споткнёшься)

  • SD-карты горят. Через неделю интенсивного обучения модель постоянно «зависала». Оказалось, что логгирование TensorBoard и NFS-шара с чекпоинтами убивают SD-карту за месяц. Решение: только NVMe (через USB-адаптер) для системных дисков, SD — только для загрузчика.
  • Сеть — узкое место. Gigabit Ethernet — это 125 MB/s. Для передачи весов модели размером 2 ГБ (Qwen3-7B) требуется 16+ секунд. Если ты используется sync SGD, кластер будет ждать сеть. Выход: использовать gradient compression или федеративное обучение (редкая синхронизация).
  • Тепловыделение. Без вентилятора под нагрузкой 4 ядра нагреваются до 90°C и троттлят до 1.5 GHz. Потеря производительности — до 40%. Купи нормальный кластерный кейс с вентиляторами 120mm.
  • PyTorch для ARM — всё ещё боль. На май 2026 года официальный PyTorch для ARM64 встаёт стабильно, но некоторые операции (например, FFT) не оптимизированы. Используй torch.backends.mkldnn.enabled = True и сборочные флаги DYNAMIC_EXPA=0.
  • MPI глючит с K3s? Я сначала пытался запустить MPI в Kubernetes. IPoIB и NCCL отсутствуют. В итоге я просто запускаю Docker контейнеры с --network=host — проще и быстрее.

Оптимизация и автоматизация

Чтобы не сидеть каждый раз с консолью, я написал Ansible-плейбук для развёртывания софта на всех нодах. Забрать можно из моего репозитория. Но если ты хочешь с нуля научиться работать с нейросетями и не боишься погружаться в DevOps, рекомендую курс Нейросети для рабочих задач от Skillbox — там учат не только запускать готовые модели, но и разбираться в архитектурах.

Ещё один крутой трюк — использовать кластер для таксономии (автоматической разметки данных) с помощью комбинации из маленьких моделей. Каждая нода запускает свой инстанс и обрабатывает свою часть датасета. Это даёт почти линейное ускорение для батча задач. Пример: оптимизация AI-агентов для Raspberry Pi — идеально ложится на нашу архитектуру.

Что дальше? (вместо заключения)

Кластер из Raspberry Pi 5 не заменит дата-центр. Но он учит тебя тому, что стоимость обучения модели — это не только деньги, но и инженерная смекалка. Когда ты вручную шардируешь веса по четырём узлам, потому что ни один из них не вмещает модель целиком, ты начинаешь понимать, как работают TensorFlow, PyTorch DDP и даже GPT. А ещё это чертовски весело — смотреть, как четыре маленьких зелёных светодиода мигают в такт вычислениям.

Мой неочевидный совет: не пытайся повторить H100. Собери кластер, поставь на него Flower и научи свою модель отличать котиков от хлеба (все мы знаем эту важную задачу). А когда она начнёт выдавать 99% точности с 20 Мб весов — ты поймёшь, что инженерный кайф не в гигагерцах, а в архитектуре. И да, это будет лучший DIY ML-проект в твоей жизни.

Если захочешь пойти дальше и собрать кластер на AMD Strix Halo для более серьёзных моделей — читай Бюджетный кластер на AMD Strix Halo для LLM до 345B. А если наоборот, хочешь еще более экстремального минимализма — Edge-прогноз погоды на Raspberry Pi.

Подписаться на канал