2026: межрегиональная аренда удалённого Mac M4 — Stable Diffusion Core ML: пакетные сессии img2img, очередь при unified memory и матрица решений по дисковому кэшу

7 мая 2026 · ~8 мин · Техническая команда MacCompute · Руководство

Арендаторы вычислений, которые гоняют Stable Diffusion в режиме img2img через Core ML на Mac mini M4 в Гонконге, Сингапуре, Японии, Корее или на западе США, упираются в один потолок: unified memory одновременно держит веса UNet/VAE, планы графа, очередь оркестратора и горячие каталоги mlmodelc. Ниже — матрица решений, раздельные таймауты Wq/Wc, блок исполняемых параметров и внутренние ссылки на батч-компиляцию Core ML, ORT Core ML EP, разводку очереди и таймаутов и TCO по регионам. Публичные тарифы и оформление заказа по метро читаются без входа до оплаты.

Три типичных узких места на удалённом M4

  1. Пики компиляции выглядят как «медленный батч». Первый прогон Core ML и запись mlmodelc делят unified memory с тензорами; вторая сессия до прогрева часто сильнее бьёт по p95, чем средняя скорость кадра.
  2. Один таймаут на всё. Если смешать ожидание в очереди и длительность шагов диффузии, ретраи бьют по дисковому кэшу и маскируют сетевое стадирование как ошибку модели.
  3. Объектное хранилище как scratch. Потоковая подгрузка кадров по TLS на каждый элемент грузит CPU криптографией, пока пакетный инференс кажется простаивающим — сначала выровняйте префиксы на NVMe, затем масштабируйте хосты.

Матрица решений

Строки — профили эксплуатации; подстраивайте размер батча, число сессий, политику дискового кэша и пару Wq/Wc по разделам ниже. После обновления macOS или Xcode перепрофилируйте ту же строку таблицы.

Профиль Пакетный инференс Параллельные сессии Дисковый кэш Wq / Wc
Ночной массовый img2img Рост батча до излома резидентной памяти; фиксированные лестницы разрешения 16 ГБ: одна дорожка; 24 ГБ: две, если swap плоский Локальные mlmodelc и префикс тайлов; холодные бандлы вне хоста Широкий Wq; Wc покрывает компиляцию плюс p95 диффузии
Низколатентный API Батч 1–2; фиксированное число шагов Семафор на вторую дорожку; 24 ГБ, если совмещаете компиляцию и отдачу Тёплый деплой-кэш; вытесняйте холод на вторичный диск Узкий Wq; умеренный Wc; компиляцию метьте отдельно от serve
Срез общей аренды Потолок батча и разрешения на арендатора Глобальный лимит concurrency; экспорт глубины очереди Отдельный TMPDIR на APFS на арендатора Сначала уменьшайте батч, не раздувая слепо Wc

Без универсальных кадров в секунду. Маршрут ANE/GPU и покрытие операторов зависят от чекпойнта и сборки — таблица это ограждения, а не SLA.

Конвертация модели и размер батча

Конвертируйте UNet и VAE в поддерживаемый mlprogram или mlpackage; закрепите версию конвертера к хэшу чекпойнта. Наращивайте пакетный инференс, пока не появится излом по резидентной памяти или предупреждениям планировщика; при росте хвоста сначала режьте число шагов, а не только батч.

Смежные материалы: батч и компиляция Core ML, смешанный стек ORT+CoreML.

Потолок параллельных сессий

Каждый воркер очереди держит граф декодера и состояние img2img вместе. Вторую дорожку включайте только когда vm.swapusage не ползёт и индикаторы давления памяти очищаются на двух проходах подряд. Разводку Wq (ожидание слота) и Wc (сама диффузия) копируйте по духу из заметки про WhisperKit: иначе алерты смешают бэклог и вычисление.

Выбор узла (Гонконг, Сингапур, Япония, Корея, запад США)

Совместите метро с корзиной весов: Токио и Сеул — северо-восточная Азия; Сингапур и Гонконг — SEA и Большой залив; запад США — артефакты и egress Северной Америки. Перед боевым батчем сделайте один контрольный TLS-pull и сверьте дефолтные таймауты очереди.

Страницы заказа по регионам: Гонконг, Сингапур, Япония, Корея, США (запад); общий каталог — заказ, пакеты — тарифы.

Стоимость

В полную стоимость входят почасовая аренда M4, исходящий трафик, время «холодной» компиляции и ретраи от схлопнутых таймаутов. Не поднимайте пакетный инференс, пока не зафиксированы правила дискового кэша и соседство с хранилищем весов. После смены региона перечитайте матрицу TCO и задержек и строки на tseny.

Исполняемые параметры

Вставьте в bootstrap воркера или launchd; диапазоны — ориентиры для триажа, не жёсткий SLA.

# Якоря unified memory и swap (только чтение)
sysctl -n hw.memsize
sysctl -n hw.perflevel0.physicalcpu
sysctl vm.swapusage

# Scratch Core ML и декод вне перегруженного home
export TMPDIR="/Users/shared/scratch/coreml-sd/$JOB_ID"
mkdir -p "$TMPDIR"

# Пример ограничителей — подгонка по строке матрицы
export SD_MAX_BATCH=2
export SD_MAX_CONCURRENT_SESSIONS=1
export SD_WQ_SEC=120
export SD_WC_SEC=900

Пять шагов до добавления хостов

  1. Зафиксируйте чекпойнт, конвертер и digest образа в журнале узла.
  2. Один прогрев компиляции; холодный старт вынесите в отдельную метку на дашборде.
  3. Двоичный поиск батча при фиксированном разрешении до роста p95 или swap.
  4. Разведите метрики ожидания очереди и диффузии; алертируйте раздельно.
  5. Повторите профиль после переноса региона — меньший RTT не добавляет DRAM.

Сигналы, которые стоит выгрузить в метрики

  • Резидентные байты на дорожку относительно hw.memsize для SKU 16 и 24 ГБ.
  • Доля заданий у границы Wc за скользящее окно — дрейф квантизации или IO.
  • МБ/с чтения NVMe против загрузки GPU — ранний признак промахов дискового кэша до роста параллелизма.

FAQ

Внешний SSD? Под архивы и холод; горячие артефакты Core ML держите на встроенном NVMe.

Меньший RTT лечит OOM? Нет — размещение влияет на стадирование, не на объём unified memory.

Итог

Stable Diffusion img2img на арендованном M4 требует дисциплины конвертации и батча, жёсткого потолка сессий, согласованного метро с весами и учёта стоимости, где дисковый кэш и WAN не менее важны, чем «голая» параллельность. Slug: 2026-rent-remote-mac-m4-stable-diffusion-coreml-batch-unified-memory.html.

Готовы перенести ночные волны с ноутбуков на выделенный Apple Silicon: откройте пакеты и цены, выберите метро на странице заказа или сразу по ссылкам регионов выше, уточните сеть в справке — просмотр по-прежнему без обязательного входа.

Аренда M4 под SD Core ML — без входа