В 2026 году поставка LLM на Mac реже упирается в «ещё один дашборд» и чаще — в общую семантику, типизированные денежные поля и воспроизводимые доказательства ночного прогона. Соглашения OpenTelemetry GenAI задают словарь спанов, который понимают и модельные команды, и финансы — если дополнить их дисциплиной сэмплинга и выделенным хостом приёмки, ночные джобы перестают быть устной традицией.

На странице: матрица решений · поля и полосы сэмплинга · шаги внедрения · чек-лист приёмки · FAQ

Если вы уже крутите агентов на Apple Silicon, метрики где-то наверняка есть. Типичный провал — другой: в трассах остаются безликие HTTPS-вызовы, счётчики токенов не доходят до финансовых панелей, а «ночной прогон» на ноутбуке врёт о хвостовой задержке, потому что экспортёры конкурируют с браузером и термальными лимитами. Ниже — компактная матрица, набросок имён атрибутов, рекомендуемые интервалы для доли сохраняемых трасс (не гарантии) и чек-лист, который можно приложить к релизу после реального воспроизведения нагрузки. Для графов с состоянием см. матрицу checkpoint и песочницы LangGraph; для настройки батча и контекста перед измерением стоимости — локальный инференс llama.cpp и Ollama на M4. Пайплайны с эмбеддингами стыкуются с руководством по чанкам, батчам и квотам векторов.

Где ломается наблюдаемость первой

Неразличимые HTTP-спаны. Без имён операций GenAI, провайдера, идентификаторов модели и целочисленных токенов вы не сегментируете ни стоимость, ни качество по арендатору или семейству моделей.

Расхождение со счетами. Счёт выставляет токены или биллинг-юниты, а в трассах лежат текстовые саммари. Финансы не смогут стыковать инвойсы со спанами, пока вы не эмитите стабильные числовые поля и указатель на тарифную сетку.

Телеметрия как шумный сосед. Полная детализация может забить коллекторы, диск или потоки экспорта и отнять пропускную способность unified memory у инференса. Без многоуровневого сэмплинга вы либо ослепляете команду, либо тормозите модель.

Ноутбучная форма лжи. Сон, бэкапы и плагины IDE меняют очереди экспортёров. Приёмка на личной машине редко совпадает с тем, что увидит тихий узел в стойке — поэтому команды арендуют выделенный удалённый Mac для soak и подписания чек-листа.

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

Вопрос Сигналы, с которых начать Рекомендуемое направление
Нужна ли полнота каждой трассы? Бюджет хранилища, глубина очереди коллектора, p95 поиска по трассам Многоуровневый сэмплинг: ошибки и дорогие вызовы сохранять, остальное прореживать вероятностно; при бюджете на буфер — tail sampling.
Можно ли сверять счета со спанами? Целые input/output/total tokens, биллинг-юниты, валюта, rate_card_id Эмитить типизированные счётчики на корневом спане и протащить тот же correlation id, что уже есть на шлюзе для заказов.
Переживёт ли нагрузку ночь? Метрики потери спанов, повторы коллектора, свободное место на диске, смещение NTP Повторить нагрузку на удалённом узле класса Mac mini и пройти чек-лист ниже с фиксацией времени.

Черновик полей и полосы сэмплинга

Привяжите имена к версии семантики GenAI в вашем SDK; список ниже задаёт форму данных, даже если точные строки атрибутов слегка отличаются между релизами.

# Resource / scope service.name deployment.environment cloud.region tenant.id # GenAI span (логические имена — сопоставьте с версией семантики) gen_ai.operation.name gen_ai.system gen_ai.request.model gen_ai.usage.input_tokens gen_ai.usage.output_tokens gen_ai.usage.total_tokens gen_ai.response.finish_reasons gen_ai.response.idempotency_key llm.prompt_hash llm.completion_hash llm.cache_hit_bool billing.unit billing.rate_card_id billing.estimated_cost_usd # Корреляция trace.trace_id correlation.request_id

Рекомендуемые полосы вероятности сэмплинга (настраивайте внутри организации; доли — как доля сохраняемых трасс или ключевых спанов относительно полного потока):

  • Локальная разработка: примерно 0,70–1,00 для быстрой обратной связи при жёстких лимитах на размер полезной нагрузки, чтобы сырые промпты не забивали диск.
  • Стейдж или контролируемые нагрузочные тесты: 0,20–0,50 с обязательным удержанием ошибок и вызовов из верхнего дециля по токенам.
  • Продакшен в установившемся режиме: 0,02–0,10; если бэкенд «скрипит», смещайтесь к 0,01–0,05 и опирайтесь на агрегаты плюс дискретные логи.
  • Эмбеддинги и пакетная индексация: 0,05–0,20 на спан батча плюс dataset_id, batch_retry_count и компактная статистика по чанкам для контроля кардинальности.

Под нагрузкой предпочтительны умеренно маленькие батчи экспорта и интервалы флаша, чтобы Metal-инференс сохранял предсказуемые срезы CPU. Tail sampling требует достаточно RAM у коллектора, чтобы держать трассу до завершения — заложите буфер, если финансам обещаете полные «хвосты» дорогих вызовов.

Шаги раскатки на удалённом Mac

1. Версионируйте атрибуты ресурса по окружениям и зафиксируйте их в инфраструктурном коде.

2. Протащите один correlation id через модели, инструменты и векторные воркеры.

3. Оборачивайте каждый вызов модели в GenAI-спан с целочисленными токенами, метаданными завершения и хэшами содержимого.

4. Добавьте опциональные биллинг-поля, но не оставляйте токены пустыми, если pricing API реально отдал числа.

5. Опишите политики сэмплинга коллектора за feature flag, чтобы сравнения до/после оставались честными.

6. Запланируйте ночной replay на арендованном узле Apple Silicon, сохраните скриншоты дашбордов и приложите чек-лист к тикету релиза.

Чек-лист приёмки длительного прогона (удалённый Mac)

  • Доля потерянных спанов согласована с счётчиками отказов батчей и повторов коллектора — нет «чёрных дыр».
  • Случайные дорогие по токенам трассы раскрываются по арендатору и модели и грубо бьются с точечной сверкой к инвойсу.
  • Смещение часов задокументировано ниже одной секунды либо компенсировано в отчётных окнах.
  • Ротация логов и политика хранения трасс ведут себя детерминированно; синтетический алерт порождает воспроизводимую запись инцидента.
  • Каждое изменение политики сэмплинга несёт version id и временное окно, чтобы SRE сравнивали когорты справедливо.

FAQ

Заменяет ли семантика GenAI security review? Нет. Атрибуты — это контракт: по умолчанию хэши, лимиты длины строк и явные разрешения на сырой текст только там, где это допустимо политикой.

Можно ли одинаково сэмплить чат и батч? Лучше нет: для батча полезен более высокий сэмплинг на уровне батч-спана при жёстком контроле кардинальности, а для чата критичны хвостовые правила на редкие сбои.

Зачем арендовать железо вместо «просто мощнее ноутбук»? Удалённый Mac изолирует наблюдаемость от десктопного хаоса, ближе к сетевому и дисковому поведению квази-продакшена и даёт финансам графики, на которых можно обосновывать бюджет инференса.

Куда класть сырые промпты? В отдельное хранилище с более коротким TTL и строгим RBAC; в трассах по умолчанию — только хэши, длины и идентификаторы шаблонов.

Публичные страницы: тарифы на странице тарифов, каталог без обязательного входа — покупка / аренда, операционные детали — центр помощи; остальные разборы — в индексе технического блога.