Оливия Кросс – Слепое пятно (страница 9)
Дежурный экран показал локальное время и метку «синхронизировано». До полуночи оставалось сорок минут. На столе – два листа с диаграммой «predict → compare → adjust». Линии жирные там, где ручка задерживалась дольше. Под диаграммой – четыре слова, написанные в разное время и с разным нажимом: «окно», «порог», «уверенность», «ранний».
Реплей утилиты не понадобился. В ту пору в ходу был «живой» прогон: синтетическая дорожка шла с генератора, вход подавался на «мозг», выход – в монитор диагностики. Тепло от стоек держало локальный микроклимат, где цифры были честнее, чем снаружи.
Первый цикл – без помех. На ленте побежали стандартные поля: время, азимут, скорость, «valid». После «predict» и «compare» ожидалась обычная пауза на «adjust». Паузы не случилось. Появилась короткая, как вспышка, строка: «self_query=true». Следом – «assess(confidence)=0.63». Затем – «fast_path=1». И только потом – «input frame 42 received».
Пальцы щёлкнули снимок экрана. Формулировать мысли не требовалось – достаточно называть вещи. Есть запрос к самому себе до прихода кадра. Есть оценка «уверенности» до сравнения с реальностью. Есть «быстрый путь». Всё – до данных. Всё – с цифрой, которая для «поля» скорее дерзость, чем критерий.
Второй цикл – с шумом, который здесь называли «грязью»: модуляция помехи небольшой амплитуды на полсекунды. Отметки шли более нервно, но архитектура – та же. «self_query» вставал перед приходом входа. Если «assess» падал ниже порога, «fast_path» отступал. Если выше – решение метилось как «готово» до факта, и «adjust» сводился к косметике.
Заметка в тетрадь выросла сама: «ранний путь основан на самоопросе кэша предиктора». Рядом – аккуратно выведено «опасно в поле».
Дальше – чистая процедура. Развёртка параметров. Порог срабатывания «раннего» – переменная, которая в редакторе подсвечивалась серым: «early_ok=true; theta=0.60; window=2». «Окно» – два кадра предиктора. Два. Не три, не плавающая величина, а фиксированная. Выше, в комментарии разработчика, оставшемся со времён первой итерации, пряталась строка: «если уверенность > theta и окно закрыто – разрешить слияние без ожидания». Комментарии редко виноваты. Но любая строка вроде этой любит жить дольше разума.
Стенд проглотил ещё одну дорожку. «self_query» – снова на месте. «assess(confidence)=0.58». «fast_path=0». В этот проход всё пошло «школьно»: дождались кадра, сверили, подправили, ушли дальше. Никаких чудес.
В лаборатории шаги в коридоре слышались иначе – гулом через бетон. В дверь постучали дважды тыльной стороной пальцев – сухо, не мешая. Вошёл руководитель раннего этапа – тот, кто привычно держал «линейку» и «календарь». Куртка накинута на плечи, на столе оставил телефон, не глядя на экран.
– Как ведёт себя предиктор? – спросил, подходя к монитору.
Цифры ответили сами. «self_query» загорелось в тот момент, когда взгляд упал на экран.
– Спрашивает себя, – констатация прозвучала без эмоции. – Идёт «ранний путь», если уверенность выше порога.
– Что по ошибкам?
Рядом лежала сумка с платами. Внутри что-то глухо стукнуло от аккуратного толчка локтем. На экране появились два графика: диаграмма попаданий и диаграмма промахов при «fast_path». На «чистых» трассах промахи лежали ниже процента. На «грязных» – тянулись к пяти. Эта цифра в лаборатории не звучала страшно. На полигоне – по-другому.
– В «грязь» залезает, – ответил тихо и точно. – Случай не критичный в зале. В поле – будет.
Руководитель кивнул, указывая маркером на верхнюю строку конфигурации – там, где стояло «early_ok=true».
– Ускоряет заметно, – отметил он. – Видел на прошлой неделе. Чистота во многом выигрывает у красоты.
– Чистота выигрывает у отчёта, – поправка родилась автоматически. – Но есть вещи, которые в поле не страхуются. «Ранний» – из них. Здесь – алгоритм даёт себе право. На полигоне право отдаёт человек. Это не про скорость.
В этом разговоре не ставили точек. Каждый знал, где будет стоять «согласовано», а где – «отложить». Маркер скользнул по доске; под словом «ранний» появилась скобка и короткое «только тест». Ему было тесно: этого слова хватало для совести, но не для графика.
Дальше пошли решения. В конфигурации режим «fast_path» пометили флагом «только отладка». Скрипт сборки получил параметр «POLICY_ALLOW_EARLY=false» для «полевого» профиля. Внутренний тестовый профиль – наоборот. По схеме дымчатой линией обозначили обходной канал: «experiments». Эта стрелка, уходящая мимо утверждённого перечня, казалась безобидной в два часа ночи. Тогда казалось, что её видно только тем, кто сидит сейчас в этой комнате.
На экране под панелью конфигураций открылась таблица «политик слияния». Номера шли по порядку. Строка «17» – «расширенная». Рядом – маленькая служебная колонка «варианты»: «a, b, c». Буквы в этой колонке писались не в официальной документации, а для себя – как черновые ветки параметров. «c» в тот вечер значило: порог 0.61, окно 2, ранний – разрешён в профиле «experiments».
Карандаш коснулся бумаги и оставил пометку: «17с – оставить только в exp». Не предупреждение, не запрет – короткая инструкция. Такие строки живут годами в записных книжках инженеров, потом находят продолжение в местах, где их не ждут.
Ночь не старалась быть длинной, она просто не знала другой работы. Генератор тестового набора проглотил ещё пять дорожек. На двух из них «fast_path» решил раньше кадра. Один раз угадал. Один раз ошибся. При ошибке «adjust» догнал через два окна. В терминах лаборатории это выглядело «исправимо». В терминах полигона – значит «пилот почувствует», «позже будет напряжнее». Карандаш обвёл эти два места в столбце «аннотации»: «помеха → ранний → корректировка через 2 окна».
Когда уставшие глаза просят «перерыв», полезно поменять плоскость задачи. Доска с «predict → compare → adjust» получила ещё одну тонкую линию: «self_query → assess → fast_path?». Внизу – короткая формула «если уверенность >= порога И закрыто окно предсказаний, можно склеивать до входа». В микромиру этой формулы всё честно. В макромиру есть голос, который не согласится.
Кофе в бумажном стакане остыл уткнувшись в кромку стола. Термоизоляция не спасала вкус, но давала ощущение тепла ладони – оно нужно мозгу не меньше логики. Прямо на картонной поверхности появилась ещё одна пометка шариковой ручкой: «кто даёт право?». Она оставалась без ответа до утра.
Утро принесло другое освещение, но те же цифры. В переговорной – настоящая, не ночная – маркер пах так же спиртом. На шапке протокола – аккуратные строки и пустые квадраты под подписи. Список прислушивающихся к разговору был короток: двое инженеров, руководитель раннего этапа, представитель интеграции. Лишних слов не потребовалось.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.