Андрей Милковский – Новый рассвет. Перелом (страница 16)
Самир взял маркер и подошёл к виртуальной доске – прозрачной панели, на которую можно было проецировать схему и рисовать поверх. Этот формат он любил: было видно, где старая архитектура, а где – его вмешательство.
– Сейчас, – начал он, рисуя простую линейку блоков, – у нас Aegis-β даёт нам пачки сырых данных: временные ряды от датчиков поля, тока, напряжения, положения образца. Всё это валится в один агрегатор, потом в Palingenesis v0.3.
Он отметил блок.
– Внутри этого блока мы делаем:
– предварительную фильтрацию по частоте;
– нормализацию амплитуд;
– расчёт автокорреляции по окну τ;
– сравнение с эталонными шаблонами;
– генерацию отчёта.
Он обвёл блок в воздухе:
– Это слишком много для одного слоя. Любое изменение на входе – и нам приходится перекраивать весь алгоритм.
– А что предлагаешь? – спросил Дмитрий.
Самир переключил слой. Новая схема была похожа, но с дополнительными ветвями.
– Предлагаю трёхуровневую архитектуру:
1. Аппаратный уровень (Aegis-β → β-2)
– часть фильтрации и синхронизации делаем сразу на железе:
– вводим дополнительные Q-модули, которые обеспечивают стабильный временной шаг и базовую отбраковку шумовых участков;
– добавляем элементарные пороговые фильтры, чтобы не гонять совсем мусор.
2. Промежуточный уровень (Q-PreFilter)
– маленький, но быстрый блок, привязанный к Q-Beacon, который:
– пересинхронизирует данные по единому «маяку»;
– вычисляет простейшие статистики (средние, дисперсии);
– отметает участки, явно не содержащие полезной информации.
3. Алгоритмический уровень (Palingenesis v0.4)
– уже не занимается «выгребанием мусора», а работает по чище подготовленным данным:
– фокусируется на фазовых корреляциях;
– строит модели «эхо» и устойчивых паттернов;
– готовит материал для дальнейшей реконструкции.
– То есть, – подытожил Дмитрий, – ты хочешь, чтобы Palingenesis перестал быть свалкой всех задач и стал специализироваться на главном – работе с паттернами и корреляциями.
– Да, – подтвердил Самир. – И это позволит нам перейти от v0.3x, которая в основном считает, к v0.4, которая уже начинает *моделировать*.
Джас хмыкнул:
– Звучит красиво. Но это всё равно перекладывает часть работы на мой Aegis. Ты хочешь от меня Aegis-β-2, который не просто «снимает», а ещё и «думает».
– Не думает, – возразил Самир. – Слушает. И чётче стучит в Q-Beacon.
Дмитрий задумчиво посмотрел на схему.
– Джас, а что у нас реально по запасу по мощности и стабильности, если мы начнём вешать на Aegis-β дополнительные Q-модули и пороговые фильтры?
Инженер пожал плечами:
– Запас есть. Мы делали β с прицелом на расширение. Но любая новая цепь – это потенциальный источник шумов, резонансов и физических точек отказа. С твоими софтовыми блоками можно откатиться, здесь – нужно перетирать металл.
– И тут, – сказал Самир спокойным тоном, который у него появлялся, когда он готовился к долгому спору, – мы подходим к вопросу, где у нас на самом деле «бутылочное горлышко».
Технический спор начался не с крика, а с определений. Так, как любят люди, которые по профессии должны быть точными.
– На мой взгляд, – сказал Самир, – сейчас горлышко – в алгоритме. Мы не можем быстро проверять гипотезы, потому что каждый раз тонем в объёмах сырых данных. Любая новая идея превращается в переписывание полутора тысяч строк кода.
– На мой взгляд, – ответил Джас, – горлышко – в железе. Мы можем придумать какую угодно архитектуру, но если Aegis физически не держит стабильность под нужной нагрузкой, всё остальное – красивые схемы.
Он ткнул пальцем в блок «Aegis-β» на схеме:
– У тебя в модельках всё идеально: нет дрейфа температуры, нет микровибраций, нет паразитных полей от соседних блоков. В реальной лаборатории это всё есть. И каждый дополнительный «мини-мозг» на железе – это ещё один источник паразитики.
– Именно поэтому, – парировал Самир, – я и хочу развести уровни. Сейчас всё это сваливается в Palingenesis, и мы туда записываем не только сигналы, но и наши ошибки. Потом начинаем объяснять «эхо» железом, алгоритмами, погодой и фазой луны одновременно.
Он кивнул на Aegis:
– Если мы научим твой β-2 отдавать нам более структурированный поток, мы сможем отдельно анализировать, где физика, а где математика.
Дмитрий слушал, не вмешиваясь. Он привык, что споры между этими двоими рано или поздно давали лучший результат, чем любые совещания.
– Давайте конкретнее, – сказал он. – Джас, что тебе нужно, чтобы перейти от β к β-2 в том виде, который предлагает Самир?
Джас задумчиво посмотрел на схему и, чуть прищурившись, начал раскладывать по полочкам:
– По железу:
– дополнительный слой экранирования вокруг новых Q-модулей;
– новая разводка питания, чтобы они не садились на уже загруженные линии;
– отдельные датчики температуры и вибраций в зоне этих модулей;
– переразметка кабельных трасс, чтобы не было перекрёстных наводок.
Он вздохнул:
– По времени – месяц плотной работы с парой ночных смен и серией калибровок. По людям – нужны мои руки, руки Алексея и ещё одного техника. По нервам – много кофе.
– По алгоритмам, – сказал Самир, продолжая цепочку, – мне нужно:
– совместно с тобой определить формат данных, которые отдают эти Q-префильтры;
– задать жёсткие временные ограничения: сколько миллисекунд они могут задерживать поток;
– заложить в Palingenesis v0.4 логику, которая будет учитывать, где данные прошли через железный фильтр, а где – нет.
Он помолчал и добавил:
– И ещё: мне нужно, чтобы Оскар участвовал в проектировании архитектуры логов. Иначе мы опять получим кашу из сырых, полуобработанных и «когда-то префильтрованных» данных без понятного происхождения.
– То есть ты хочешь, чтобы я затащил в святая святых нашего железа хакера, который вчера ещё мог смотреть на нас снаружи? – уточнил Джас.
– Я хочу, чтобы человек, который понимает, как данные текут по сети и где они могут потеряться или исказиться, помог нам не сделать глупостей, – ответил Самир. – Он теперь часть команды. Либо мы это учитываем, либо потом будем смотреть расследования Маши о том, как «ошибка в логировании привела к…».
Дмитрий кивнул: