Зачем вообще это нужно?
У вас на столе лежит Mac Mini с M4 и старый iPad Pro с A16. Каждый по отдельности не потянет Llama 4.0 70B. Вместе - могут. Проблема в том, что заставить их работать как единый компьютер сложнее, чем объяснить бабушке, что такое тензорный параллелизм.
Smolcluster решает эту задачу самым простым способом - через обычные Python-сокеты и архитектуру Parameter Server. Никакого Kubernetes, никаких сложных сетевых настроек. Просто код, который делит модель на части и рассылает их по устройствам в вашей локальной сети.
Что умеет smolcluster в 2026 году
Проект не стоит на месте. Сравниваю с тем, что было год назад:
| Функция | Smolcluster 2025 | Smolcluster 2026 |
|---|---|---|
| Поддержка моделей | Llama 3, Mistral | Llama 4.0, Qwen 2.5, Gemma 2, Mixtral 2.0 |
| Архитектура | Только Parameter Server | Parameter Server + Tensor Parallelism (экспериментально) |
| Управление памятью | Базовое | Автоматический оффлоад на диск при нехватке RAM |
| Интерфейс | Только CLI | CLI + простой веб-интерфейс для мониторинга |
Самое важное изменение - появилась экспериментальная поддержка tensor parallelism. Это значит, что один слой модели может делиться между несколькими устройствами, а не просто разные слои на разных устройствах. Для гетерогенного железа (когда у Mac Mini M4 32 ГБ RAM, а у iPad 8 ГБ) это критично.
Альтернативы? Есть, но...
Перед тем как погружаться в настройку smolcluster, посмотрите на другие варианты. У каждого свои грабли.
- llama.cpp RPC-server - работает быстрее на CPU, но требует компиляции под каждую архитектуру. Для связки ARM (Mac) и ARM (iPad) подойдет, но для смешанных систем - боль.
- vLLM-MLX - отлично работает на Apple Silicon, но только на одном устройстве. Распределение не поддерживает.
- Kimi K2 мульти-нод кластер - промышленное решение, но требует Docker и Kubernetes. Для домашнего использования - избыточно.
Smolcluster выигрывает в простоте. Нет зависимостей кроме Python. Нет сложной настройки сети. Но платите за это производительностью - накладные расходы на передачу данных по сети могут достигать 30%.
Собираем кластер из того что есть
1Подготовка устройств
Mac Mini с M4 (2025) и iPad Pro 2024 с A16. На Mac ставим Python 3.12 через Homebrew. На iPad - через Pythonista 4 (платное приложение, но в 2026 оно поддерживает Python 3.12 и pip).
Важный нюанс: на iPad нужно разрешить фоновую работу Python-скриптов. Иначе при блокировке экрана кластер упадет.
# На Mac Mini
brew install python@3.12
pip3.12 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
pip3.12 install transformers huggingface-hub
# На iPad (в Pythonista)
import pip
pip.main(['install', 'torch', '--index-url', 'https://download.pytorch.org/whl/cpu'])
pip.main(['install', 'transformers'])2Установка smolcluster
Клонируем репозиторий на оба устройства. В 2026 году проект переехал в организацию smol-ai, добавились конфигурационные файлы.
# На обоих устройствах
git clone https://github.com/smol-ai/smolcluster
cd smolcluster
pip install -e .Проверяем, что устройства видят друг друга в сети. Проще всего через ping, но в Python делаем так:
# На Mac (узнаем IP iPad)
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print("Mac IP:", s.getsockname()[0])
s.close()3Конфигурация для гетерогенного железа
Здесь самая важная часть. Нужно правильно распределить слои модели между устройствами. Mac Mini M4 с 32 ГБ RAM может взять больше слоев, iPad с 8 ГБ - меньше.
Создаем файл config.yaml:
model: "meta-llama/Llama-4.0-7B-Instruct"
quantization: "q4_k_m" # Для экономии памяти
devices:
- name: "mac-mini"
host: "192.168.1.100"
port: 29500
layers: "0:24" # Слои 0-24 на Mac
memory_limit_gb: 28 # Оставляем 4 ГБ системе
- name: "ipad-pro"
host: "192.168.1.101"
port: 29501
layers: "25:31" # Слои 25-31 на iPad
memory_limit_gb: 6 # Оставляем 2 ГБ системе
parameter_server:
host: "192.168.1.100" # Сервер параметров на Mac
port: 29400Не пытайтесь загрузить слои 0-31 на iPad с 8 ГБ RAM. Модель в quant q4_k_m занимает около 4 ГБ, но во время инференса нужна дополнительная память для кэша ключ-значение. Лучше оставить запас 25%.
4Запуск и тестирование
Сначала запускаем Parameter Server на Mac:
# На Mac
python -m smolcluster.parameter_server --config config.yamlЗатем worker'ов на каждом устройстве:
# На Mac (в другом терминале)
python -m smolcluster.worker --config config.yaml --device-id 0
# На iPad (в Pythonista)
import subprocess
subprocess.run(["python", "-m", "smolcluster.worker", "--config", "config.yaml", "--device-id", "1"])И наконец клиент для теста:
from smolcluster.client import DistributedClient
client = DistributedClient(config_path="config.yaml")
response = client.generate("Объясни квантовую механику как будто мне 5 лет")
print(response)Производительность: чего ожидать
На связке Mac Mini M4 + iPad Pro A16 с Llama 4.0 7B получаем:
- Скорость генерации: 12-15 токенов в секунду
- Задержка первого токена: 800-1200 мс (из-за передачи данных между устройствами)
- Потребление памяти: Mac - 18 ГБ, iPad - 5 ГБ
Для сравнения: тот же Mac Mini в одиночку с Temple Bridge выдает 25-30 токенов в секунду на Llama 4.0 7B, но не может загрузить 70B версию. Smolcluster позволяет запустить Llama 4.0 70B (в quant q4_k_m), пусть и с меньшей скоростью.
Кому подойдет smolcluster в 2026?
Это не решение для production. И даже не для ежедневного использования. Smolcluster - инструмент для:
- Исследователей, которые хотят поэкспериментировать с большими моделями без доступа к A100/H100
- Разработчиков, тестирующих распределенные системы (проще начать с smolcluster, чем с Kubeflow)
- Энтузиастов, у которых есть несколько устройств Apple и желание заставить их работать вместе
Если вам нужно стабильное решение для production, посмотрите в сторону LLMeQueue или промышленных кластерных решений.
Проблемы, с которыми столкнетесь
Предупреждаю сразу:
- Сеть WiFi нестабильна. При пропадании пакетов кластер может зависнуть. Решение - использовать Ethernet для Mac и 5GHz WiFi для iPad.
- iPad засыпает. В Pythonista 4 есть настройка "Keep Alive", но она не всегда работает. Иногда помогает подключение к power.
- Синхронизация моделей. Если на устройствах разные версии библиотек, могут быть ошибки в вычислениях. Всегда используйте одинаковые версии.
- Безопасность. Smolcluster не имеет аутентификации. Не используйте в публичных сетях.
Самая раздражающая проблема - когда все работает, вы получаете первый токен, а затем iPad решает, что пора обновиться до iPadOS 20. И кластер падает. Автоматического восстановления в smolcluster нет, нужно перезапускать вручную.
Что дальше для распределенного вывода?
К 2026 году появились более интересные подходы. Peer-to-peer инференс без центрального Parameter Server. Федерированное обучение прямо на устройствах. Но smolcluster останется в истории как самый простой способ собрать кластер из того, что валяется дома.
Мой прогноз: к концу 2026 года Apple представит Native Cluster API для Swift, который позволит объединять iPhone, iPad и Mac в вычислительную сеть без Python-костылей. Но пока что приходится пользоваться тем, что есть.
А самый неочевидный совет: попробуйте подключить к кластеру не только iPad, но и старый iPhone. Три устройства с разными чипами (M4, A16, A15) - это уже настоящий гетерогенный кластер. Только не удивляйтесь, если телефон нагреется как сковородка.