Хотел держать разбор выписок на своей модели и не отдавать его наружу. Профиль ноутбука открывал рантайму окно в 8192 токена — число, посчитанное под плотную 14B, которой на узле давно нет.
Споткнулся дважды. Первое видно в журнале: 18 отказов ContextWindowExceeded на запросах от 18 885 токенов. Важен не сам отказ, а что было дальше — именно он запускал fallback в облако. Правило «только локальное» при этом было записано, но лежало в документе, и проверки под ним не было. А пробным вызовом его не проверишь: проба роли с fallback и есть тот самый вызов, которого быть не должно. То есть окно чинит не удобство, а тот самый путь наружу, ради закрытия которого всё это и поднималось.
Второе не показывал ни один отказ. Тип KV-кэша приходил рантайму строкой окружения, которой схема профиля не видит. Пустая переменная молча открывала окно в f16 — вдвое дороже посчитанного, и снаружи это выглядело нормальной работой.
Решил: окно профиля поднято до 32768, а тип кэша переехал в саму схему профиля. Прежний довод «кэш — свойство модели, а не узла» оказался слабее факта: цена окна зависит от типа кэша вдвое, значит окно и кэш — одно решение, а не два. Те же флаги, пришедшие со стороны, скрипт теперь отвергает до старта: два источника одного флага дают не дубль в командной строке, а другое окно.
Чем плачу: потолок рантайма поднят с 12 до 22 ГБ, и бюджет узла после этого не сходится. 12 ГБ резерва пользователя плюс 22 рантайма — это 34 из 36, и контейнеры с подушкой встают в оставшиеся два. Само число пока расчёт, а не замер: ≈ 21,4 ГБ получается сложением весов, проектора зрения и KV, а снять его должен прогон приёмки. Следующее решение напрашивается само — запретить песочнице работать под этим профилем, как уже запрещено под соседним.