Глава 48. Яка ж цікава цифра, 58
Ігор Савченко
З моменту останнього зв’язку з Тімом пройшло вже майже три місяці.
Третій етап ми пройшли місяць тому.
Я й досі іноді прокручував це в голові. Радше через те, що результат аж надто гарно ліг у нашу загальну історію: команда з назвою “Боги з гуртожитку”, після всіх своїх факапів, безсонних ночей, нервових дедлайнів і технічних самокатувань, таки пролізла далі, опинившись серед геніїв, які свої команди збирали доволі серйозно і готувались до цього конкурсу мало не кілька років.
Третій етап проводили в Цюриху. Швейцарія. Країна, у якій випадковість, здається, спершу бере талончик, чекає черги й тільки тоді трапляється. Тут зовсім інша атмосфера. Начебто тут усе прораховується і всі працюють на вже відомий заздалегідь результат.
На третьому етапі нас поділили на групи, по спеціалізаціям. І групі команд, куди входили ми випало наступне завдання. Кожній команді дали готову систему разом з усією технічною документацією. На перший погляд – цілком пристойну: архітектура розписана, модулі на місці, інтерфейс має працювати, схема обміну даними виглядає структуровано і логічно, журнали подій ведуться і їх можна відслідкувати. Система бери і користуйся. Графіки теж були красиві. Настільки красиві, що їм майже хотілося вірити.
Якщо коротко описати наше завдання, то воно полягало у наступному: провести технічний аудит системи, звірити її реальну роботу з документацією, знайти причини збоїв, виявити приховані архітектурні помилки, виправити критичні місця й створити робочий модуль, який вдосконалить систему.
Тобто не написати в поясненні: “тут можна покращити”. А взяти й покращити.
Якщо не враховувати, що “майже готова система” в руках організаторів конкурсу – це акуратна пастка з логами, залежностями, неочевидними конфліктами, поганими рішеннями, прикрученими милицями й одним модулем, який має вірний синтаксис, але тупорилу логіку, тому й поводився як п’яний льотчик, якого випустили політати, а він ще зі вчора не проблювався.
Ми копали її два місяці. Андрій шукав логіку провалу в причинно-наслідкових зв’язках. Олег розбирав архітектуру й час від часу щиро матюкав систему. Якби я був її розробником в мене вже б давно померла моя особиста професійна репутація.
Дмитро ганяв моделі, перевіряв похибки й знаходив викривлення в даних, на яких навчали цю систему, після його праведного обурення мені хотілось сходити в місцеву капличку і поставити свічку, щоб відмолити за нього гріх сквернослов’я.
Марія відповідала за презентацію, вибудовування лінії доповіді й загальну нашу дисціпліну, яку ми час від часу намагались порушити.
А я… я був секретною зброєю, яка нарешті вийшла на новий рівень еволюції й тимчасово звільнилася від прибирання, готування та почесної посади “принеси, подай, не заважай старшим технічним богам думати”. Уперше за довгий час моя користь для команди вимірювалася не кількістю вимитих чашок, куплених продуктів і приготованих сніданків, обідів та вечерь, а чимось ближчим до справжньої конкурсної роботи.
З моїми двома курсами освіти я, звісно, не ліз переписувати архітектуру під носом в Олега і не робив вигляд, що зараз поясню Дмитру, як правильно дружити з моделями. Я взяв на себе іншу зону відповідальності: розібрати технічну документацію, звірити заявлені функції з тим, що система реально робить, скласти список розбіжностей, витягти з логів дивні місця та віддати на перевірку вищим, підготувши короткі пояснення з приводу того, що мені тут здалось дивним. Іноді, якщо не знаю що, але внутрішнє чуття впевнено кричало, що щось не так, то передавав без пояснень, просто так і писав «Чуйка спрацювала». І приблизно у семидесяти відсотках «чуйка» таки була права.
Головне полягало не в якомусь одному вузлі, а в тому, що система сипалася ланцюжком, як погано складена вежа з дитячих кубиків, яку хтось ще й поставив на пральну машинку під час віджиму. Один модуль криво обробляв запізнілі дані. Другий бачив цю кривизну, стандартизував помилки і видавав синтаксично вірні, але логічно криві розрахунки, а вбудований модуль LLM починав компенсувати її власними припущеннями. Наступний модуль приймав ці припущення за нормальний вхідний потік і тягнув їх далі. А вже аналітичний блок на виході видавав результат впевненим обличчям політика, задача якого проштовхнути свій кривий, але дуже важливий законопроєкт.
Коли ми це розклали по полицях, стало зрозуміло: лагодити треба не косметику, а саму логіку взаємодії модулів. Хлопці закрили критичні дірки в архітектурі, прибрали кілька небезпечних припущень, підправили логіку обробк даних, встановили внутрішні аналітичні фільтри, щоб з попереднього модуля точно не тягнулись помилки, а під кінець навчили LLM модель працювати лише з достовірною інформацією.
Потім ми зробили те, що, мабуть, і витягнуло нас далі: додали прогнозний аналіз. Не той, який ми робили для AgroMash Technologies, бо ми все ж таки не колектив самогубців із презентаційним ухилом. Підставляти батька Марії і тягти на міжнародний конкурс логіку його корпоративної системи було б приблизно так само розумно, як написати на лобі: “Панове організатори, ось шмат нашого реального комерційного рішення, користуйтеся, ми сьогодні щедрі”. Дізнавшись про це Олександр Сергійович дуже докладно б пояснив нам свою філософію бізнесу, і нам би терміново знадобилось резервне копіювання наших душ.