1. Почему одиночный запрос обманчив
(1) Unified memory — общий бюджет: веса, KV, рантайм и кеш ОС делят пул; под параллелизмом чаще упираются в пропускную способность памяти и reclaim. (2) Разные планировщики у Ollama и LM Studio — фиксируйте стриминг, число потоков и длину контекста. (3) Heartbeat-агенты дают фоновый шум.
2. Матрица сценариев
| Нагрузка | Профиль | Метрики |
|---|---|---|
| Диалог | 1–3 потока, стрим, 4k–32k | TTFT, субъективные паузы, swap |
| Батч | throughput, очередь допустима | глубина, jobs/ч, p95 завершения |
| Мульти-агент | много коротких + редкие длинные | изоляция, rate limit, p99 |
3. Пять шагов runbook
- Заморозить модель и квант; любое изменение — сначала один поток.
- Заморозить контракт клиента: стрим, batch, keep-alive, длина промпта — один скрипт.
- Ступени 1→2→4→8, p50/p95/p99 и RSS; на колене — диагностика.
- Сигналы ОС: давление памяти, swap, E-ядра, I/O.
- Отчёт гейта: версия скрипта, digest, CSV, согласованный SLO.
4. Три порога (перемерить!)
Порядок величин — калибруйте на своём железе.
- Если p95 >3× от одиночного потока 10 минут воспроизводимо — сначала лимиты, линии, перенос пика.
- Swap >2 ГБ устойчиво со стопами — батчи на выделенный удалённый узел.
- ≥3 человек на одном ноутбуке + дневная разработка/видео — общая API по умолчанию на удалённый Apple Silicon.
5. Ollama vs LM Studio
| Ось | Ollama | LM Studio Server |
|---|---|---|
| Операции | CLI, OpenAI-like, команды | быстрый GUI-эксперимент |
| Очереди | проверять нагрузкой | Metal-конкуренция |
| Демон | launchd/прокси | часто desktop-first |
6. Когда уносить на удалённый Mac
| Сигнал | Действие |
|---|---|
| RAM-конфликт UI и инференса | Батч/API на удалённый AS с большой памятью — SSH/VNC |
| Непредсказуемые хвосты на демо | Очереди и лимиты удалённо, ноутбук — тонкий клиент |
| Нужен 24/7, ноутбук спит | Постоянный Mac + мониторинг |
| ComfyUI/кодирование на том же хосте | Разделить хосты/топологии |
7. FAQ
Медленнее без смены модели? KV растёт с сессиями; после колена paging бьёт p99 раньше throughput.
Стриминг бесплатен? Считайте TTFT и полное время.
Удалёнка всегда лучше? RTT/аплинк могут ухудшить; при давлении памяти удалёнка часто выигрывает.
Мешают ли Spotlight и бэкапы? Да: индексация и инкрементальные копии дают всплески I/O, которые видны в интервалах чанков. Планируйте ступени вне тяжёлых окон или временно снижайте активность этих служб.
Два рантайма на одном Mac? Только с разными портами и явными «полосами» нагрузки; иначе unified memory смешивает вину между стеками.
Сколько повторов на ступень? Минимум три прогона по 10 минут, иначе фоновый шум ломает сравнение p95/p99.
p50 хорошо, p99 плохо? Сначала swap и фон, затем гистограммы чанков — чаще, чем «не хватает GPU».
Как говорить с продуктом? Переводите в пользовательские сценарии («две демо одновременно»), а не в сырые числа потоков.
8. Metal, пропускная способность памяти и SLO
В 2026 году важны кривые под реальной параллельностью, не одиночный демо-прогон. Unified memory снимает жёсткие OOM, но оставляет мягкую деградацию хвостов.
Десктоп как IDE+инференс+графика работает для одного инженера; для двух параллельных операторов упираетесь в контроллер памяти и теплопакет — как в классическом разделении read/write.
Без CSV-лестниц postmortem слеп. Отчёт гейта — артефакт поставки.
Разводите дешёвые heartbeat-модели и дорогой основной инференс (статьи про память OpenClaw). Фиксируйте версии токенизатора и таймауты прокси.
Закупка: при организационном параллелизме изоляция узлов и очереди важнее «просто добавить RAM».
После переноса на удалённый Mac обязательно повторите лестницу с тем же digest модели и тем же клиентским скриптом — иначе в сравнение попадут RTT и TLS, а не только память. Для стриминга стройте гистограммы интервалов чанков, а не одну суммарную длительность.
Регрессии нужны после каждого минорного обновления macOS или рантайма: фрагментация и политики питания меняют хвосты тихо. Добавьте фазу soak — умеренная параллельность на длительном отрезке.
Если в корпоративном контуре есть reverse-proxy, логируйте отдельно задержку до upstream и время инференса; иначе диагностика путает сетевой рукопожатие с вычислением.
Смешанные команды дизайна и разработки выигрывают от письменного SLA по полосам: какие задачи допустимы днём на ноутбуке, какие только ночью или только на удалёнке. Без этого каждая приёмка превращается в торг минутами.
Если вы используете два менеджера пакетов для одного и того же стека, зафиксируйте единственный путь к бинарнику в PATH — иначе лечите один исполняемый файл, а launchd стартует другой, и логи показывают противоречивые версии.
Для демо-залов заранее прогрейте модель и кеш: холодный старт на сцене выглядит как «провал инференса», хотя это лишь отсутствие прогрева и конкурирующий Wi‑Fi.
Когда вы отдаёте API внешним партнёрам, приложите к договору ссылку на актуальный digest модели и параметры квантования — иначе юридический текст расходится с фактической задержкой.
Наконец, храните короткие заметки о погоде в зале демо и о плотности людей вокруг ноутбука: это не шутка — тепловой фон меняет троттлинг быстрее, чем кажется инженеру в серверной.
9. Наблюдаемость
Базовая линия, p95/p99, RSS+swap, глубина очереди, ошибки — вместе.
| Симптом | Гипотеза | Митигация |
|---|---|---|
| p99 ≫ p95 | swap, индексация, бэкапы | шум вниз, лимиты, батч в сторону |
| Throughput ок, UX рвётся | TTFT, интервалы чанков | меньше параллелизма, draft-маршрутизация |
| 502 рваные | таймауты, unload модели | резидентность, healthchecks |
10. Организация: полосы, бюджеты и закупка
Когда второй отдел подключается к той же локальной API, модель «у меня быстро» перестаёт работать. Оформите полосы для интерактива, батча и оценки, зафиксируйте бюджеты параллельности и назначьте роль, которая может отказать в спонтанной демо-нагрузке. Лестница нагрузки — это не только скрипт: это приложение к финансовому и ИБ-запросу на новый узел.
Переводите кривые на язык бизнеса: «p95 удваивается, если двое стримят во время рендера» убедительнее диаграммы Metal. Храните CSV по кварталам, чтобы видеть сдвиги после патчей macOS, смены кванта или роста команд.
В runbook для дежурств нужны пороги, а не импровизация: при устойчивом swap выше согласованного значения батч уходит на именованный удалённый пул. Привяжите порог к конкретному поставщику или кластеру, чтобы ночью не искать «куда нести нагрузку».
Аудиторы спрашивают, где лежат промпты в логах и сколько живут дампы. Удалённый Mac не отменяет вопросов о данных — он лишь меняет географию. Добавьте в карту наблюдаемости ретеншн прокси и TLS-буферы.
Планирование ёмкости на Apple Silicon — это прежде всего unified memory: браузер, креативные пакеты и инференс делят один теплопакет. Без явного запаса p99 рушится в самый неудобный момент презентации.
Поощряйте команды, которые публикуют лестницу до смены семейства моделей, а не тех, кто первым выложил скриншот бенчмарка. Общий шаблон CSV и общая папка часто спасают от эффекта общего пастбища в опенспейсе.
11. Термодроссель, питание и фоновые службы
Троттлинг часто приходит из быта: звонок, внешний монитор, резкий набор оборотов вентилятора. На каждой ступени фиксируйте контекст — подставка vs ткань, крышка закрыта, док-станция. Эти заметки объясняют p99, которые исчезают на охлаждающей подставке.
Не сравнивайте только названия чипов: 13" ноутбук и стационарный Mac Studio имеют разные тепловые бюджеты. Документируйте SKU и, по возможности, устойчивую мощность, прежде чем наращивать параллелизм.
Soak-тесты редки, но именно они показывают фрагментацию и индексацию после часов работы. Запускайте их на реальных профилях пользователей, а не на «чистых» учётках.
Когда конфигурация становится «боевой для людей», ненадолго заморозьте и минор ОС: планировщик меняется тихо, и короткая контрольная лестница после патчей окупается.
Перенос на удалённый Mac переносит тепло в машинное помещение с предсказуемым обдувом — повторите те же скрипты, чтобы отделить локальную термику от очередей сервера.
12. Эксплуатация: читать CSV и сокращать эскалации
Научите первую линию читать строку CSV: «swap вырос между четвёртой и шестой ступенью» экономит ночь расследований. Пять базовых сигналов: одиночная база, ступенчатые p95/p99, RSS+swap, глубина очереди, доля ошибок.
Держите рядом хаос-подобные проверки: убить демон посреди запроса, перезагрузка во время длинного стрима, шейпинг интерфейса. Скрипты happy-path и failure-path лежат в одной директории, чтобы онколл наследовал один плейбук.
Если среднее успокаивает, а перцентили пугают, уходите от средних дашбордов к гистограммам хвоста — именно хвост убивает UX.
При гибридной работе документируйте VPN и аплинк: сеть иногда имитирует нехватку памяти и провоцирует лишние закупки.
Для аудита складывайте в один архив версии нагрузочного скрипта, digest модели и сборку прокси вместе с CSV — иначе постмортем снова превращается в детектив.
12.1 Экономика выделенного удалённого узла
Выделенный удалённый Mac окупает ожидания на демо и простои батчей, выгнанных с ноутбука. Во многих командах несколько инженеро-дней за квартал дороже аренды высокопамятного узла.
Учитывайте косвенные эффекты: меньше swap — меньше износ SSD и меньше странных пиков давления в ядре. В регулируемых отраслях пакет CSV дешевле расследований накануне аудита.
Если регионы разные, повторите лестницу с теми же скриптами при разных сетевых путях — отделите RTT от поведения модели до покупки второго железа.
Гибрид «днём ноутбук, ночью удалёнка» требует дисциплины очередей; без неё два тяжёлых стрима снова лягут на локальный Mac — лестница покажет дыру сразу.
Синхронизируйте календарь моделей и ОС; независимые выкладки создают невоспроизводимые регрессии, и тогда единственный источник правды — история CSV.
Зафиксируйте поддерживаемые длины контекста официально; иначе каждая маркетинговая демо становится скрытым SLA, который оплачивают очереди.
12.2 Мини-лестница против тихой дрейфа
Между крупными релизами обновляются браузеры и синхронизаторы. Короткая двухступенчатая лестница раз в две недели — дешёвый датчик смещения p99.
Смешивайте команды data и продукта на одной API только с правилами приоритета; иначе побеждает самый громкий отдел, измеряемый чужими p99.
Тестовые промпты должны быть анонимизированы, но реалистичны по длине; укороченные тексты льстят хвостам и врут про прод.
Мягкий rate limit на прокси спасает от тройных демо, бьющих по очереди одновременно: лестница даёт цифры, политика — предохранитель.
При миграции с x86-облаков не копируйте слепо размеры батчей — иная память, иные узкие места.
Архивируйте «хорошие» и «плохие» недели с CSV и скриншотами Activity Monitor — онбординг быстрее, чем по PDF.
Пропуск мини-лестницы из-за «ничего не менялось» игнорирует как раз тихие обновления, которые двигают хвост задолго до релиза.
Строка в ежемесячном дайджесте платформы держит тему задержек на виду без бюрократии десятистраничных отчётов.
Отдельно отметьте ротацию DNS и сертификатов: сетевой сдвиг часто маскируется под «поломку модели», если нет хронологии.
12.3 Постмортемы без драмы: шаблон и владелец
После инцидента полезнее не длинный PDF, а один шаблон из десяти строк: какая ступень лестницы, какой digest, какой swap, какие фоновые процессы, кто принял решение о переносе батча. Назначьте владельца шаблона на квартал — иначе знания останутся в чате, который невозможно найти через месяц.
Если инцидент закончился «сам прошёл», это сигнал записать, что именно изменилось в окружении: обновился браузер, приехал патч MDM, включился ночной бэкап. Без этой строки следующий инцидент начнётся с нуля.
Сравнивайте постмортемы разных команд: одинаковые симптомы на разных ноутбуках часто указывают на общий корпоративный прокси, а не на модель.
Для удалённых узлов добавляйте в отчёт температуру стойки и события обслуживания ЦОД — они объясняют редкие провалы, которые локально не воспроизводятся.
Не смешивайте в одном тикете смену модели и смену сетевого маршрута; разделите изменения, иначе откат становится лотереей.
Храните ссылки на исходные CSV в тикете, а не вложения без имени — поиск по «ladder-2026-04-mac-gpu.csv» спасает больше, чем «archive.zip».
Обучайте новичков разбору одного реального постмортема в первую неделю: это быстрее любого курса по Metal.
Если постмортем не породил задачу в бэклоге с датой, считайте встречу потерянной; добрые намерения без владельца не меняют систему.
Периодически перечитывайте постмортемы полугодовой давности — паттерны повторяются, пока политика полос не закреплена письменно.
Наконец, публично благодарите команду за честный разбор без поиска виноватых: иначе следующий инцидент уйдёт в частные сообщения, и метрики снова исчезнут.
Добавьте в шаблон поле «что не измеряли» — оно полезнее списка успехов, потому что показывает пробелы в культуре наблюдаемости.
Если вы арендуете несколько удалённых Mac, сравнивайте их лестницы попарно раз в месяц: дрейф конфигурации между узлами незаметен, пока не случится перекос нагрузки.
Учитывайте сезонность: конец квартала с пиком отчётности увеличивает фоновые задачи на рабочих станциях и может сдвинуть p99 без единого изменения в ML-стеке.
Для гибридных сценариев фиксируйте, какой DNS использует VPN-туннель и какой — локальный резолвер; расхождение ломает TLS в самый неподходящий момент.
Когда меняете Wi‑Fi точку доступа, перезапустите лестницу хотя бы на одной ступени — новый радиоканал иногда меняет буферизацию не хуже смены модели.
Короткая ремарка в тикете о том, кто именно запускал лестницу (человек или CI), спасает от ложных выводов, если окружения отличаются тонкими alias в shell.
Зафиксируйте также точный часовой пояс машины, на которой писался лог — ночные окна бэкапов по GMT и по локальному времени выглядят по-разному в графиках.
13. Вывод
(1) Хвосты ломаются первыми. (2) Удалённый Apple Silicon убирает десктопный шум при той же квантовой экосистеме. (3) MACGPU — низкий порог для аренды Mac с большой памятью; CTA без логина. (4) Внешние обещания задержки только с CSV лестницы и digest.
14. launchd, прокси и здоровье сервиса
Гайд по OpenAI-совместимому API объясняет, как launchd, reverse-proxy и аутентификация попадают в критический путь наравне с моделью. Ollama или LM Studio — сначала заморозить версии и клиентский контракт, затем крутить параметры.
Healthcheck должен видеть те же TLS и пути, что и реальные клиенты; «зелёный TCP» врёт, пока дрейфуют заголовки или подписи. Фиксируйте таймауты по слоям, иначе короткий таймаут прокси превращает стабильную модель в случайные 502.
При переезде с ноутбука на удалёнку копируйте plist/systemd целиком; полумеры — главный источник «днём ок, ночью нет».