После очередного научного совета, на котором Майка сделал доклад о сложившейся ситуации с достигнутым «потолком» производительности, чему было уделено особое внимание и большинство обсуждений состоялись именно вокруг этого, между ним и Славой состоялся разговор уже в лаборатории:
– Слушай, Свят… прости, Слава, – оба захихикали, – а ведь мы с тобой бьемся как птица о стекло окна, не видя разницы между стеклом и открытой форточкой.
– Ты это к чему? – спросил Слава.
– Я это к тому, что нам нужно найти форточку, понимаешь?
– Открытую?
– Ну разумеется, – рассмеялся Майк, – разумеется открытую.
– Надеюсь, ты это в переносном смысле всё… впрочем, расшифруй, когда и если будет время, сейчас давай запустим нашу финальную модель на исполнение и отправимся отдыхать, если ты не против, а-то научный совет выбил из меня все слова, которые я планировал произнести в ближайшие тысячу лет.
– Да, ты прав, Слава, это разговор либо долгий, либо бессмысленный, нужно все обдумать. Как же был прав Парето.
– Что? Кто?
– Вильфредо Парето с его принципом3.
– А, да, точно, – усмехнулся Слава.
𝜂 Рождение
Прошло какое-то время после разговора о «поиске форточки», в течение которого мысли о поиске альтернативных путей для решения задачи не покидали Майка и он стал периодически погружался в аналитические исследования всего проделанного, пытаясь как-то обобщить накопленный опыт, выявить первопричины всех успехов и неудач.
Через некоторое время Майк обнаружил, что для непротиворечивого и последовательного построения выводов не хватает массы тех или иных данных, и это было, пожалуй, одной из главных находок, по результатам которой Майк даже начал вносить некоторые изменения в исходный код, дабы обеспечить сбор недостающих для проводимого анализа данных. Ввиду того, что объем исходного кода на тот момент составлял многие миллионы строк, у Майка опускались руки, тем более, что иногда приходилось возвращаться к уже сделанным изменениям и модифицировать их, а фронт предстоящих работ абсолютно точно уходил за видимый горизонт, что мотивировало лишь к тому, чтобы сложить руки и сдаться. В эти моменты Майк нет-нет, да вспоминал слова своей бабушки, которая ни раз говорила при нём, да и ему самому – «ничего, ничего, глаза боятся, а руки делают», и это он слышал от неё, когда ей было уже далеко за восемьдесят лет и она периодически выполняла какие-то не сложные работы на загородном участке вместе с его родителями. Не сказать, чтобы это как-то меняло ситуацию и придавало сил, однако, позволяло изменить мыслительный и эмоциональный настрой, погрузившись в воспоминания детства.
Вспоминал он с какими-то особыми чувствами, быть может и с ностальгией, летние вечера, проводимые всей семьёй на том самом загородном участке, когда они собравшись в беседке пили чай, взрослые играли в карты, а когда ещё был жив дедушка – отец его папы, заставший Великую отечественную войну ребёнком, он хоть и не много, но рассказывал о своих воспоминаниях, как его отец уходил на фронт и как они – его мама, старший брат и он сам, ждали от него писем, которые в какой-то момент перестали приходить и мама рассказывала детям об отце на ночь, как он служит в армии и вспоминает о них. Как оказалось, прадед был взят в плен в июле 1942 г. под Сталинградом и был вызволен в декабре 1942 г. после освобождения города Котельниково, но в этот период им с мамой пришлось эвакуироваться за Урал и связь с отцом была потеряна до конца войны, восстановить её удалось лишь по возвращении домой, где были обнаружены поздние письма прадеда, с адресами воинских частей, в которых он прослужил до июня 1945. Эти письма и по сей день хранятся у родителей Майка, многие из которых они читали всей семьёй, а сам Майк даже носил показывать их в школу в дни празднования Дня Победы.
Так шли дни, мысли о делах и воспоминания перемежались друг с другом. Погружаясь во всё большие детали и нюансы своих нововведений Майк пришёл к пониманию, что объем предстоящих изменений, казавшийся ему изначально вполне осязаемым, всё больше и больше становился аморфным и бесконечным. Окончательно осознав это, он решил поделиться своими соображениями со Славой, которого после работы решил пригласил поужинать в соседний ресторан, куда они и отправились вдвоем среди недели.
– Слушай, Слава, я должен тебе рассказать одну вещь, возможно, твой совет окажется бесценным…
– Майк, что за долгие вступления, с каких пор ты заделался в дипломаты? – остановил его Святослав, – Давай к делу, ты же знаешь, раньше сядешь, раньше выйдешь.
– Да, Слав, есть такое, стал говорить много слов со всеми этими научными советами, да презентациями. Но я исправлюсь!
– Конечно исправишься, надеюсь этим советом я тебе уже помог и мы наконец можем мирно поесть? – оба засмеялись.
– Да, конечно, извини, приятного аппетита, давай по классике – напои, накорми, а потом вопросы задавай.
Чуть позже в ходе ужина Майк рассказал Святославу о том, как он попробовал провести анализ причинно-следственных связей между предпринятыми ими действиями и полученными результатами, чтобы получить общую картину того, что могло пойти не так, что можно улучшить.
– Знаешь, Майк, я тоже приходил к мыслям о том, чтобы провести некий ретроспективный анализ, даже стал собирать некоторые данные для этого, но вскоре выяснил, что данные есть далеко не по всем модулям и библиотекам, в том виде и качестве, в котором это нужно для какого-либо анализа. – подтвердил недавние сомнения Майка Слава.
– Да, Славка, именно к этому же пришёл и я, и пытался добавить в нужные участки кода дополнительную логику для сбора недостающих данных, но недавно понял, что объем таких изменений непредсказуем.
– Истинно, Майк, так и есть, – ответил Слава.
– Именно в объеме изменений и проблема, – продолжал Майк, – мы наплодили столько всего, что сейчас не можем даже оценить общую картину. Но что абсолютно точно по итогам моих изысканий, это то, что весь код для расчета модели, построения и обучения нейросетей, подготовка тестовых и эталонных выборок в результате всё же даёт результат в виде данных, сгенерированных на текущий момент времени и прогноз на несколько ближайших периодов, с заданным уровнем достоверности.
– И? В этом же и была вся задумка.
– Да, всё верно, я не договорил. Так вот, всё это работает для текущего момента времени, для тестирования и отладки я написал текстовый модуль, который позволяет подтвердить корректность работы всей конструкции и отдельных компонент. Но я обнаружил, что для отдельных компонент полученный результат отличается от ожидаемого при корректности всех остальных показателей. Экспериментируя с тестовыми данными и со смещением по оси времени для тестовых данных мне удалось-таки получить корректный результат для сбойных компонент, и причина сбоя, как я полагаю, как раз в смещении времени, то есть к моменту работы соответствующих модулей в потоке происходит как бы смещение времени.
– Хм, интересная находка. Погоди. Ведь если выявлены, как ты говоришь, сбойные компоненты, так может сосредоточимся на внесении изменений в них, дабы получить по ним более детальную аналитику?
– Да, разумно. – подтвердил Майк.
– Слушай, а как именно ты поступил со временем? – не без интереса спросил Слава.
– Да просто взял момент на минус сто лет до текущего момента, чтобы получить заведомо ошибочные результаты и отладить сеть для устойчивости к ошибочным данным и нештатным ситуациям. – выпалил как из пушки Майк.
– Понятно. – задумчиво произнес Слава.
После этого разговора Майк и Слава основательно поработали над кодом, проведённые тесты выявили ошибки в базовых классах и одной из библиотек, ошибки и конфликты были устранены, а куски тестового модуля было решено пока закомментировать.
А какие это были ошибки! По итогу внесения изменений и запуска серии тестов ребята обнаружили прорывной рост использования ресурсов Нэвм, который ранее не превышал 60%, теперь они видели цифры в 70% и даже 80%. Объяснений этому они пока не находили. В один прекрасный день ребята к вечеру доделали все завершающие правки, связанные с отладкой, сохранили сделанные изменения. К предстоящему научному совету у них скопились довольно хорошие результаты.
𝜗 Вторая идея Славы
Здесь нужно отдельно рассказать о том, что, по всей вероятности, так же послужило причиной роста утилизации ресурсов Нэвм. При анализе данных, полученных в ходе тестирования, обкатки гипотез и внесения соответствующих изменений Слава обнаружил, что значимая доля сложностей связана с матрицами, логика которых используется во многих компонентах и различных частях кода. Слава усмотрел тот факт, что матрицы используются таким образом, что логику, построенную на них, можно построить более оптимально и эффективно, если использовать кватернионы4
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
Примечания
1
Как известно, изначально квантовые технологии базировались на кубитах. Кудит же является своего рода обобщением и расширенной версией кубита, описываемой квантовой информацией суперпозиций N-состояний, при N=2 как раз и есть случай кубита. Т.е., с кудитом можно оперировать состояниями одновременно логического нуля, единицы и других логических значений.
2
Буквально – структура, каркас. В программировании представляет собой инструментарий (библиотеку, расширение), реализующий концепцию, абстракцию для решения определенных задач разработки ПО.
3
Эмпирическое правило, названное в честь экономиста и социолога Вильфредо Парето – «20% усилий дают 80% результата, а остальные 80% усилий – лишь 20% результата»
4
Разновидность гиперкомплексных чисел, образующих четырехмерное пространство, аналогично тому, как комплексные числа образуют двумерное пространство
Вы ознакомились с фрагментом книги.
Для бесплатного чтения открыта только часть текста.
Приобретайте полный текст книги у нашего партнера:
Полная версия книги