Блог / Новости

Minions от Apple: GPU-облако из простаивающих Mac — как это устроено

Apple опубликовала Minions — систему, которая собирает простаивающие GPU на Mac сотрудников в распределённое облако для инференса. Очередь за GPU из 10+ часов превратилась в минуты, закупок железа — ноль. Разбираем архитектуру по пейперу.

•5 мин чтения
Новости Архитектура

Коротко: Apple опубликовала пейпер Minions (arXiv, октябрь 2026) — внутреннюю систему, которая объединяет простаивающие GPU на Mac сотрудников в распределённое облако для ML-инференса. Задачи ждали централизованного GPU по 10+ часов — с Minions они стартуют за минуты, а закупать железо не пришлось. Архитектура предельно прагматичная: PostgreSQL как источник правды, никакого центрального планировщика, Ollama на каждом Mac.

Проблема: GPU ждут часами, а рядом простаивают сотни Mac

В любой крупной компании ML-инференс живёт на централизованных GPU-кластерах: они дорогие, их вечно не хватает, и задачи стоят в очереди. В пейпере честно названа цифра: отдельные инференс-задачи ждали в очереди больше десяти часов.

При этом под столами инженеров стоят Mac с Apple Silicon — с вполне взрослыми GPU, которые большую часть дня не делают ничего. Вопрос, на который отвечает Minions: можно ли собрать из этого паразитного капацитета рабочее облако — без единой новой закупки?

Ответ: да, и это работает в проде у нескольких команд Apple.

Архитектура: четыре компонента и никакой магии

Система состоит из четырёх частей:

  • Minion Server — координатор с веб-интерфейсом и REST API. Принимает задачу, валидирует параметры и асинхронно режет её на подзадачи.
  • PostgreSQL — единственный источник правды: все задачи, подзадачи, состояния исполнителей и хартбиты. Всего семь таблиц.
  • Minion Executor — агент на macOS-устройстве. Тянет подзадачи из сервера по REST, выполняет на локальном GPU, пишет результат в S3, шлёт хартбит каждые пять минут.
  • Minion Watchdog — следит за исполнителями. Если устройство уснуло, потеряло сеть или владелец выключил агента — недоделанная подзадача возвращается в очередь и её подхватывает другой исполнитель.

Архитектура Minions: исполнители на Mac сами тянут подзадачи с сервера, состояние — в PostgreSQL, данные — в S3

Два решения делают систему простой и живучей.

Нет центрального планировщика. Исполнители сами тянут подзадачи (pull-модель). Захват подзадачи — гонка INSERT в таблицу minion_subtask_acquirement с уникальным констрейнтом по кортежу (team, project, task_name, subtask_id). Кто вставил — тот и владелец, остальные получают ON CONFLICT DO NOTHING и берут следующую. Вся мьютекс-логика — одна уникальная пара в Postgres.

Сбой — норма, а не исключение. Watchdog следит только за исполнителями, которые прямо сейчас что-то считают (а не за всеми зарегистрированными) — это дёшево и масштабируется. Устройство ушло спать посреди подзадачи? Подзадача просто вернётся в очередь.

Что там крутится: эмбеддинги и LLM на Ollama

Система поддерживает два класса нагрузок, и оба — про локальный инференс:

  1. Генерация эмбеддингов — открытые трансформеры с HuggingFace через Python API.
  2. Комплишн LLM — через Ollama, установленную на каждом участвующем Mac. Никаких внешних API-вызовов: модель кэшируется локально, инференс идёт на месте.

Входы и выходы лежат в S3 — вычисление отделено от хранения, большие полезные нагрузки не гоняются через сервер координации.

Есть и приятно-человеческая деталь: приоритеты разруливаются отчасти вручную — команда просто пишет в Slack коллегам «запустите, пожалуйста, executor на вечер». Для срочных задач есть динамическая привязка: владелец устройства может настроить своего исполнителя предпочитать конкретный проект, а когда в приоритете пусто — берётся общая FIFO-очередь.

Цифры

МетрикаДо MinionsС Minions
Очередь за GPUЧасы (до 10+)Минуты
Заявки на новые GPUТребовалисьНе нужны
Стоимость инфраструктурыВысокаяНоль
МасштабированиеРучноеОрганичное

Эффект Minions: очередь за GPU сжалась с десяти часов до минут

Честная оговорка: пейпер — три страницы, это позиционная заметка об опыте, а не бенчмарк. Пропускной способности, распределения по моделям и сравнения стоимости за токен там нет.

Ложка дёгтя: чужие данные на чужих столах

Авторы прямо пишут о главном тормозе внедрения: конфиденциальность. Запускать свою нагрузку на Mac коллеги из другого отдела — уже вопрос доверия, даже внутри одной компании. Решение у Minions организационное, а не криптографическое: деплой с границей команды — отдельная PostgreSQL и изолированный пул исполнителей.

И это, пожалуй, самое интересное в пейпере. Самая горячая проблема распределённого вычисления оказалась не технической, а социальной: у кого лежат данные, тому они и важны.

Почему это близко нам

Minions бьёт по двум темам, которыми мы живём.

Первая — локальный инференс как норма. Apple внутри компании гоняет эмбеддинги и комплишн LLM на обычных Mac через Ollama — потому что это бесплатно, быстро и не требует ничьего разрешения. MaxGraph устроен так же: embedding-модель крутится на вашей машине или вашем сервере, память агента — файл у вас, а не строка в чужой базе. Когда Apple пишет, что «простаивающее железо — это облако», local-first перестаёт быть маргинальной философией.

Вторая — данные хотят жить у владельца. Проблему конфиденциальности Minions решает границами доверия. Мы решаем её радикальнее: память агента вообще не покидает вашу машину — границы доверия просто не нужны, когда делиться не во что.

FAQ

Minions — опенсорс? Нет. Это пейпер об опыте Apple, кода в открытом доступе нет. Но архитектура описана достаточно, чтобы собрать аналог: pull-модель, Postgres с уникальным констрейнтом на захват подзадачи, watchdog по хартбитам, Ollama на узлах.

Можно ли такое дома / в маленькой команде? Идея масштабируется вниз отлично: два Mac в офисе и Postgres на NAS — уже рабочая схема для пакетных эмбеддингов. Ollama из коробки даёт LLM-инференс на Apple Silicon.

Это замена облачным GPU? Для инференса — частично. Для обучения нет: авторы сами называют distributed training направлением будущей работы. И «облако из Mac» не про пиковую производительность, а про утилизацию того, что уже куплено.

Причём тут вообще память агентов? Прямо: генерация эмбеддингов — одна из двух нагрузок Minions. Тот же класс задач, который MaxGraph выполняет при семантическом поиске по графу памяти. Локальный инференс эмбеддингов — это то, что позволяет нашему поиску не отправлять ваши данные наружу.

Что дальше

MaxGraph

Дай своему агенту память

Триал 7 дней без карты. Установка — один промпт, дальше агент сделает сам.

Тарифы ✓ Скопировано