На странице: болевые точки · матрица решений · контур оценки · ресурсные потолки · чек-лист стоимости узла · FAQ
Согласуйте имена полей в отчётах с гайдом по наблюдаемости OpenTelemetry GenAI, параметры токенизатора и батча — с матрицей MLX-LM и Transformers на M4, а гигиену датасетов при смеси retrieval и генерации — с локальным RAG: чанки, эмбеддинги и квоты.
Типичные сбои на Mac-стеках с LLM
1. Переобучение оптимизатора. Узкие dev-срезы и ручные правки заставляют компиляцию DSPy выглядеть блестяще, пока удерживаемый офлайн-набор не рухнет на следующей неделе.
2. «Железный» спектакль. Разовые прогоны на ноутбуке смешивают конкуренцию с GUI, термодроссель и произвольный батч — пропускная способность не сопоставима между днями.
3. Слепые зоны экономики. Прайс API игнорирует почасовую аренду, простой GPU и переделки из-за нарушений политик — финансы не защищают запуск.
Выход — единый контур: замороженный набор, кодовые сигнатуры, отчёт JSON на каждый прогон и отдельная репетиция на выделенном хосте, где нет сна и фоновых стримов.
Матрица решений: артефакт, роль и гейт
| Артефакт | Роль | Типичный гейт |
|---|---|---|
| Сигнатура + телепромптер | Структурированная программа промпта с типизированными входами и выходами. | Доля валидного JSON по схеме на офлайн-наборе не ниже 99% до мержа. |
| Компиляция / bootstrap | Поиск промпта с участием учителя в ограниченном числе раундов. | Раунды оптимизатора ограничены; вызов учителя только с идентификатором бюджета в трассах. |
| Удерживаемый JSONL | Версионированный бенчмарк с хэшем манифеста. | Основной балл в пределах ±1,5% от последней зелёной базовой линии без отдельного одобрения продукта. |
| Набор ограничений | Проверки PII, токсичности или злоупотребления инструментами. | Жёсткие нарушения — 0; мягкий порог — ниже 0,5%. |
| Отчёт удалённого soak | Повторяющаяся оценка на выделенном узле Mac. | p95 сквозной задержки под гейтом; сверка аренды и токенов. |
На еженедельных обзорах идите сверху вниз: сигнатуры заморожены, хэш манифеста совпадает с CI, затем читайте гейты ограничений и задержки, прежде чем спорить о «креативности» модели. При провале гейта заводите один тикет с метрикой, срезом и оценкой долларового эффекта — продукт и финансы решают вместе.
Исполняемый контур оценки
1. Заморозить манифесты: опубликовать SHA256, число строк и поля лицензии рядом с каждым сплитом.
2. Закодировать сигнатуры: держите промпты и селекторы few-shot в репозитории, а не в мессенджерах.
3. Запустить компиляцию или bootstrap с зафиксированными сидами и максимальным бюджетом оптимизатора, согласованным с финансами.
4. Прогнать офлайн-обвязку локально на Metal с тем же квантованием и окном контекста, что планируете к поставке.
5. Сформировать единый JSON-отчёт: агрегаты, разрезы по срезам, худшие примеры для отладки.
6. Повторить тот же job на арендованном удалённом Mac не менее четырёх часов подряд, зафиксировав устойчивый p95 и стоимость простоя.
Архивируйте каждый прогон с той же семантической версией, что и тег в git — аудиторам не понадобятся ноутбуки, чтобы сопоставить промпты, датасеты и профили железа.
Ресурсные потолки для базовых линий на Apple Silicon
Ниже — стартовые ограничители для хостов класса M4 с unified memory; ужесточайте после профилирования ширины модели.
- Резидентный след модели: оставляйте не менее 18% unified memory под ОС, обвязку оценки и кэш токенизатора.
- Параллелизм воркеров: ограничьте число одновременных воркеров так, чтобы суммарные prefill-токены не превышали 75% установившегося потолка.
- Термика: при средней загрузке GPU выше 92% десять минут подряд без нормального обдува — пауза для оптимизатора.
- Диск: резервируйте около 60 ГБ на быстром SSD под веса, кэш адаптеров и архив отчётов на ветку эксперимента.
# Пример переменных окружения (иллюстрация; секреты вне git)
EVAL_SEED=20260420
OFFLINE_EVAL_MANIFEST_SHA256=${OFFLINE_EVAL_MANIFEST_SHA256}
DSPY_MAX_TEACHER_ROUNDS=${DSPY_MAX_TEACHER_ROUNDS}
DSPY_MAX_BOOTSTRAP_DEMOS=${DSPY_MAX_BOOTSTRAP_DEMOS}
QUALITY_REGRESSION_MAX_DELTA=${QUALITY_REGRESSION_MAX_DELTA}
CONSTRAINT_HARD_FAIL_RATE_MAX=${CONSTRAINT_HARD_FAIL_RATE_MAX}
P95_LATENCY_MS_MAX=${P95_LATENCY_MS_MAX}
REMOTE_SOAK_MIN_HOURS=${REMOTE_SOAK_MIN_HOURS}
REMOTE_NODE_HOURLY_USD=${REMOTE_NODE_HOURLY_USD}Чек-лист приёмки стоимости удалённого узла
- Почасовая аренда, планируемая длительность soak и минуты простоя указаны рядом с расходом токенов API.
- Удалённый хост повторяет поколение чипа, объём памяти и мажорную версию macOS из плана репетиций.
- Исходящий трафик для выгрузки артефактов оценен и ограничен с алертами.
- Политики повторов и предохранителя совпадают с офлайн-обвязкой; нет скрытых лишних вызовов учителя.
- Итоговый пакет включает JSON оценки, хэш манифеста и подписанное согласие на любое ослабление порога.
FAQ
Нужно ли гонять оптимизацию DSPy в CI на каждый pull request? Держите тяжёлую компиляцию вне критического пути: на PR — быстрые регрессии по замороженным промптам, оптимизатор — по расписанию или вручную.
Зачем обязателен удалённый soak, если локально всё красиво? Ноутбук засыпает, делит CPU с IDE и меняет кривую вентилятора. Выделенный узел ближе к тому, как вы держите длинные джобы и стабилизируете хвост задержки.
Что делать, если качество выросло, а задержка пробила гейт? Блокируйте релиз или согласуйте новый порог с продуктом и финансами; не расширяйте бюджет задержки молча в том же поезде.
Как связать офлайн-ID прогона с продакшеном? Пробросьте те же корреляционные ключи и поля токенов, что описаны в гайде по наблюдаемости, чтобы сравнивать дрейф после выката.
Публичные страницы (без входа): откройте покупку и тарифы без аккаунта, загляните в центр помощи и в каталог технического блога.