На странице: матрица решений · поля и полосы сэмплинга · шаги внедрения · чек-лист приёмки · 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; в трассах по умолчанию — только хэши, длины и идентификаторы шаблонов.
Публичные страницы: тарифы на странице тарифов, каталог без обязательного входа — покупка / аренда, операционные детали — центр помощи; остальные разборы — в индексе технического блога.