1. Увертюра
Утро началось как обычно – с борьбы за сознание. Оно возвращалось неохотно, цепляясь за обрывки ускользающих сновидений. Сначала он не понял, где находится, но привычные звуки и запахи комнаты постепенно возвращали его к реальности. Легкий шум вентиляции компьютера в углу и едва слышный гул города за окном – все это говорило о том, что он дома, в своей квартире.
Первым делом – ревизия тела. Тупой ритуал, без которого он уже не мог начать день. Дмитрий медленно согнул пальцы, прокрутил запястье, ожидая подвоха от собственной руки. На этот раз обошлось без боли, хотя по ночам карпальный туннель все еще напоминал о себе. Шея, как всегда, оказалась деревянной. Мышцы окаменели, превратившись в один сплошной спазм. Плечи тоже не внушали оптимизма. Но его это уже давно не волновало – постоянная тяжесть превратилась в атрибут профессии.
Первые минуты после пробуждения всегда были худшими. Реальность казалась зыбкой, ненадежной, словно картинка низкого разрешения. Но и к этому он привык – очередной пункт ежедневного протокола возвращения в мир живых.
Следующий пункт проверки – сердце. Он замер, прислушиваясь к пульсу. Ровный ритм, никаких сбоев. Врачи называли эту его одержимость ипохондрией. Страх смерти был его персональным демоном, и он научился жить с этим страхом, превратив его в систему постоянного контроля.
Он встал и подошел к окну. Город корчился внизу – бесконечная возня человеческого муравейника. Двуногие особи метались по своим микромаршрутам, пережёвывая день в пыль. Железные коробки ползли по асфальтовым венам, забитым до тромбов. Старый, затёртый до дыр фильм – он помнил каждый кадр наизусть и давно вынес ему приговор.
Выходить? На кой чёрт? В прошлой жизни эти вылазки в магазины и «посиделки с друзьями» казались естественными, как дыхание. Теперь же любой шаг за порог превратился в выход в открытый космос – без скафандра, без страховки, с одним только холодом под ложечкой. Он отвык от этой пресной жвачки существования, как отвыкают от бессмысленной болтовни. И вдруг осознал – он даже забыл, каково это: быть своим среди чужих.
Важнее то, что было внутри. Там зрело знакомое предчувствие: все накопленные наработки вот-вот должны выстрелить. Это чувство он знал слишком хорошо – верный признак приближающегося прорыва. Губы сами растянулись в улыбке. Именно такие моменты делали его живым. Когда решение маячило где-то на грани сознания, когда мозг работал на полную мощность, выискивая нужные паттерны в хаосе данных. В такие минуты он даже забывал прислушиваться к своему телу. Но эйфория длилась недолго. Уже через пару минут, вытираясь полотенцем после душа, он снова поймал себя на том, что считает удары сердца и следит за дыханием.
Утренняя кухня дышала солнечным светом и запахом свежезаваренного чая. Марина размешивала сахар, позвякивая ложечкой о стенки чашки. На ней была светлая футболка – дежурная, для работы в реанимации.
– Натаха-то… Представляешь, опять в положении. В Англию теперь переезжают, – она старалась говорить небрежно, будто между прочим, но Дмитрий уловил знакомые нотки в её голосе.
– Можно подумать, – он даже не поднял глаз от чашки. – Ты знаешь моё отношение. Он говнокод пишет для рекламных кампаний. Это халтура.
– Хоть с утра не начинай, а? – Марина вздохнула. – Говнокод или нет, а люди дом покупают. Их, между прочим, сам Facebook выписал. Условия…
– Сколько раз повторять – я не буду этой халтурой заниматься, – в его голосе появился нажим. – То, что я делаю, твой драгоценный Паша даже не осознает. У меня имя в профессии.
Марина подалась вперед, её голос смягчился:
– Дим… Я же понимаю. Я потому за тебя и… За ум твой, за принципы. Знаю, что тебя ценят, – она помедлила, подбирая слова. – Только вот не пойму – почему нельзя и принципы сохранить, и… Просто найти что-то… стоящее? Чтоб твой талант не только в лайках на форумах… Не поступаться своими принципами, а просто найти такую работу, которая бы конвертировала твой талант и виртуальную репутацию в материальные ценности.
– То есть в бабки? – он холодно усмехнулся.
Марина молчала, теребя чайный пакетик. Утреннее солнце золотило её волосы, делая их почти рыжими.
Он поднялся из-за стола. В его движениях чувствовалась сдержанная ярость.
– Ты знаешь, я теперь понимаю как отвратительны бабы, которые пилят мужиков по поводу денег, – он стоял у окна, глядя куда-то поверх крыш. – Это просто омерзительная черта. Ладно бы я как Лёха ни хрена бы не работал, а тут я уже практически инвалидом стал из-за этой работы, а тебе, видите ли, мало.
– Я никогда не говорила, что мне мало. И болезнь твоя не в последнюю очередь из-за того, что ты хочешь чего-то великого, но недосягаемого, вместо того, чтобы научиться наслаждаться возможным и реальным. Я за тебя переживаю, ты это знаешь, – Марина старалась говорить мягко. – У тебя невроз не от работы, а от твоих недостижимых целей. Ты реальность теряешь. Я же переживаю…
Он медленно повернулся к ней, и его голос стал спокойнее.
– Слушай… Тут такое наклёвывается… Серьёзные люди вышли. Не халтура – им нужно именно то, что я умею. Я не говорил, чтоб не сглазить… – он сделал паузу. – Может, наконец увидишь, на что я способен.
Марина покачала головой:
– Дим… Ты опять? Ты же с психологом это обсуждал. Зачем ты мне постоянно что-то доказываешь? Ты сам себе эту высоту ставишь, а потом меня виноватой делаешь.
Он устало потёр переносицу:
– Ну хорошо… Ты права… В общем, скоро всё может измениться.
Марина встала, торопливо собирая сумку. Солнечный луч скользнул по её плечу, когда она потянулась за телефоном.
– Я в тебя верю, правда… – она мельком глянула на экран. – Ой, Серёга уже внизу ждёт. Побежала я.
– На обед будешь? – Дмитрий следил, как она поправляет прическу перед зеркалом.
– Да, посплю немного и к шести на сутки, – она привычным движением собрала волосы в хвост.
– Скоро не придётся в этом дурдоме работать… – в его голосе промелькнула мягкость.
Марина обернулась в дверях, улыбнувшись той особенной улыбкой, которую он помнил ещё со студенческих времён:
– А куда ж мои дурики денутся? Всё, я полетела.
Дверь закрылась почти беззвучно. В пустой кухне остался только звон чайной ложки в остывающей чашке да солнечный луч, расчертивший белую стену.
Он смотрел на закрытую дверь, и горечь медленно поднималась к горлу. Ведь его код был идеальным. Код, который изучали студенты и хвалили другие программисты. Только эти похвалы не превращались в акции успешных компаний. Возможно, дело было не в деньгах – Марина просто устала жить с человеком, который предпочитал решать красивые алгоритмические задачки вместо того, чтобы зарабатывать и наслаждаться жизнью, как обычные люди. Она вышла замуж за гения, а получила… перфекциониста с обсессивным расстройством, который каждую строчку кода доводил до идеала, а потом выкладывал в открытый доступ.
Он поморщился, осознав весь масштаб своей одержимости. Очередной симптом, очередной кирпичик в стене между ним и нормальной жизнью. «Почти Another brick in the wall» – подумал он, усмехнувшись собственной иронии. Тысячи восторженных комментариев в сети не могли перевесить один её равнодушный взгляд.
Он сгрёб тарелки в раковину и поплёлся в зал их двушки. Здесь всё дышало Марининым представлением об уюте – новый бежевый диван, модные постеры на стенах. Только его рабочий стол выбивался из этой глянцевой картинки – тёмное дерево, заваленное распечатками и пустыми кружками из-под чая.
Он сел за стол. За ноутбуком время переставало существовать. Экран ожил, загрузив привычный интерфейс среды разработки – его настоящий дом, где все подчинялось четкой логике. Строки кода, модули, библиотеки, ошибки и исправления – бесконечный поток задач, требующих решения.
Он включил проектор, и гладкая белая стена напротив превратилась во второй большой экран, отображавший содержание его ноутбука. После долгих часов работы за компьютером шея и правая рука начинали ныть, требуя передышки. Каждые сорок минут ему приходилось вставать, разминаться, и тогда он мог ходить по комнате с чашкой горячего чая, поглядывая на проецируемый код. Так работалось легче – можно было обдумывать решения, не горбясь над экраном ноутбука.
Вчерашняя сессия принесла неожиданный прорыв, и теперь стена пестрела следами его озарения – десятки строк нового алгоритма, который мог изменить всё. Искусственный интеллект. Святой Грааль современной науки, за которым гонялись тысячи таких же одержимых. Но его проект был другим. Не просто очередная болталка для скучающих пользователей, а настоящий прорыв – псевдодумающая модель, способная учиться и развиваться. Если все получится, она станет чем-то большим, чем просто программа. Почти живое существо. Почти – самое честное слово в этом определении.
Дмитрий давно погрузился в мир open source, но не из альтруистических побуждений. Его репутация в области машинного обучения внушала почти суеверный страх – безупречный код, невозможные сроки, решения, которые другие считали фантастикой. Коммиты за его авторством становились учебным пособием для начинающих разработчиков. Как Линус Торвальдс, создавший империю на бесплатной операционной системе, как основатели Red Hat, превратившие свободное ПО в миллиардный бизнес – Дмитрий грезил такой же траекторией. Он методично выстраивал свой цифровой пьедестал, веря, что однажды репутация гения конвертируется в большие деньги. Но пока чистота кода и восхищённые отзывы сообщества оставались лишь строчками в GitHub, далёкими от того успеха, о котором мечтала Марина. «Торвальдс тоже начинал с нуля», – упрямо повторял он в ответ на упрёки жены, погружаясь в очередной многообещающий проект, который пока не приносил ни копейки. Теперь всё должно было измениться.
Этот заказ словно соткался из его мечтаний – сложнейшая задача на грани возможного и гонорар, способный заткнуть рты всем сомневающимся. Здесь не нужно было идти на компромиссы с совестью, халтурить ради денег. Наоборот – только предельная концентрация на качестве, только идеальные решения. И всё это за сумму, о которой Марина не могла и мечтать. Казалось, судьба наконец решила его вознаградить за годы упрямого перфекционизма.
Но новый заказчик оказался весьма странным. Во-первых, ему было плевать на сроки – уже подозрительно. Во-вторых, деньги. Их было много, слишком много для обычного проекта. Единственное условие – никакой команды, только он. В-третьих, заказчик избегал личного общения как чумы. Только имейлы, никаких звонков или видеоконференций. Призрак с неограниченным бюджетом.
Нормальный человек просто пожал бы плечами – мало ли богатых чудаков? Но Дмитрий не был нормальным. То, что его психотерапевт вежливо называл «склонностью к катастрофизации», превращало каждую мелочь в потенциальную угрозу. Мысли крутились по проторенной колее: проект – ловушка, заказчик – мошенник, все закончится плохо, я этого не выдержу.
С этими мыслями он боролся как мог. «Хватит накручивать себя», – говорил он часто своему отражению в зеркале. В конце концов, какая разница, кто платит? Может, чувак просто социофоб-миллионер, помешанный на конфиденциальности. Да и поднять уже репутацию на легендарный уровень – чертовски привлекательная приманка. После такого проекта можно будет выбирать заказчиков, как женщин в баре.
Сколько раз уже эта паранойя стоила ему возможностей? Сколько проектов он прошляпил, потому что везде мерещились подвохи? Нет, на этот раз он не даст страху победить. Тем более что код… код был прекрасен. Каждая строчка – как взмах кисти на полотне, каждый алгоритм – маленький шедевр.
Он глубоко вздохнул и погрузился в работу. Истинный творец не знает полумер – либо абсолютный успех, либо полный провал. Середина – удел офисного планктона, тех, кто пишет корпоративные костыли на Java. Впрочем, даже дорога в пропасть завораживала его – бесконечное погружение в глубины кода, где реальный мир перестаёт существовать, где каждая строчка может стать или гениальным прозрением, или очередным тупиком.
Окно терминала приветствовало его россыпью вчерашних команд. Новая версия Node.js уже стояла, обещая чудеса производительности в работе с асинхронными процессами. Но Python, долбаный Python со своими зависимостями, снова выкинул фортель. Конфликт версий в виртуальном окружении грозил обрушить всю архитектуру, как карточный домик. Экспериментальный модуль на PyTorch капризничал, как избалованная примадонна, отказываясь работать с новой версией CUDA.
Команды pip install и conda update только усугубляли агонию системы. Логи пухли от конфликтов, как история болезни неврастеника. Очередная попытка пересоздать окружение закончилась предсказуемо – терминал выплюнул простыню ошибок, будто издеваясь над его усилиями.
Казалось бы, рутинная задача. Но в мире разработки даже простейшие вещи иногда превращаются в настоящий квест. Каждое исправление рождало новые баги, словно отрубленные головы гидры. Дмитрий смотрел на очередную ошибку сборки с плохо скрываемой яростью. Он же все предусмотрел, черт возьми, просчитал каждую мелочь.
Такие моменты бесили его до трясучки. Когда мир, который должен подчиняться логике и здравому смыслу, вдруг показывал средний палец. Это казалось личным оскорблением, словно вселенная решила поиздеваться именно над ним.
В такие минуты внутри просыпалось что-то первобытное. Желание крушить и ломать, заставить реальность подчиниться силой. Но поскольку с законами мироздания не поспоришь, доставалось обычно мебели и нервам случайных свидетелей его ярости. Потому что иначе нельзя. Потому что он так решил. А значит, так и будет.
«Успокойся», – приказал он себе, чувствуя, как пульсирует венка на виске. – «Истерик херов». Он снова склонился над клавиатурой. Раньше в такие моменты воздух синел от мата. Теперь он пытался держать себя в руках. Какой-то гуру личностного роста в своем бложике вещал, что утренний мат программирует мозг на негатив. Бред, конечно. Но Дмитрий решил проверить – чисто научный интерес. И что удивительно, дни без утреннего трехэтажного действительно проходили спокойнее.
Поэтому вместо того, чтобы помянуть всю родословную разработчиков библиотек машинного обучения, он сделал глубокий вдох. Дыхательная гимнастика – еще одна модная чушь, которая почему-то работала. Свежий взгляд на проблему подсказал простое решение: отдельное виртуальное окружение со старой версией PyTorch. Как говорил Торвальдс, хороший программист – ленивый программист. Особенно если этот программист научился справляться со своими нервами.
Он запустил создание нового окружения. Пальцы привычно отбили команду в терминале. Теперь оставалось только ждать, пока система переварит все зависимости. Он откинулся в кресле, прислушиваясь к мерному гудению кулера – единственному честному звуку в мире. По крайней мере, железо никогда не врет, в отличие от человека.
Эти минуты вынужденного безделья, пока система переваривала новые зависимости, всегда вызывали у него смешанные чувства. С одной стороны, бесило тратить время на ожидание. С другой – только в такие моменты мозг мог наконец оторваться от строчек кода и посмотреть на проект целиком. Можно было бы, конечно, параллельно переписать проблемные участки, подготовить их к будущим обновлениям…
Компьютер тренькнул, сообщая о готовности системы. Пора было возвращаться к работе. На экране развернулся основной файл проекта – детище, выращенное из тысяч строк кода. Архитектура получилась красивой: трансформер с механизмом self-attention, как у GPT, но с собственными хитрыми модификациями. Обработка текста тоже была на уровне – современный токенизатор вместо устаревшего хлама.
Базовая структура уже стояла прочно. Система могла вести диалог, отвечать связно, местами даже умно. Но этого было мало. Не хватало той искры, которая отличает настоящий разговор от механического обмена репликами. Нужно было научить ее адаптироваться на лету, подстраиваться под контекст, выстраивать цепочки рассуждений как живой собеседник.
Конечная цель отдавала манией величия – создать диалог, который вырвется на свободу как джинн из бутылки. The Dialogue – так бы напыщенно окрестили его британцы, попивая свой пятичасовой чай. Не банальный пинг-понг вопросов и ответов, а живой разговор. Где железка настолько достоверно изображает работу интеллекта, что граница между алгоритмом и сознанием размывается до полной неразличимости.
В этом и был весь смысл. Эта тонкая грань между хаосом и порядком, между запрограммированным и спонтанным – вот что придавало проекту особую прелесть. Вот что заставляло просиживать ночи напролет, вглядываясь в строчки кода.
Пришло время сделать перерыв. Работа затянула настолько, что реальность растворилась где-то между алгоритмами и компиляцией. Впрочем, результаты радовали – модель действительно начала думать. Или, по крайней мере, создавала убедительную иллюзию мышления. Она сама находила темы для разговора, рылась в сети, формировала собственные суждения. Почти как живая.
Телефон завибрировал, выдергивая из потока мыслей. На экране высветилось имя Николая. Несколько секунд разум сопротивлялся вторжению реального мира в процесс работы. Но пришлось сдаться – с тяжелым вздохом палец скользнул по зеленой кнопке.
– Да. Слушаю.
– Дмитрий Сергеевич, категорически приветствую. Сам как? – голос Николая прозвучал ярко и жизнерадостно, как всегда.
Дмитрий Сергеевич, хоть и уставший, не мог не улыбнуться, узнавая его привычную манеру общения.
– Здоров. Та как! Запарился я уже. Строки в глазах рябят. У меня дедлайн по сдаче кода к этой пятнице.
Дмитрий не просто лукавил, а откровенно врал. Никакого дедлайна у него не было. Но хотелось как-то отвадить товарища. Он, как и любой человек, имевший негативный опыт употребления стимулирующих средств в компании друзей, пытался с какого-то времени оградить себя от бывшего круга общения.
– По двенадцать часов в день за компом сижу. Запястье уже болит, от шеи через плечо онемение, – добавил он.
– А ты все бота делаешь?
– Ну да, типа того. Ну, это если упрощённо, а вообще может получиться уникальная штука, имитация интеллекта.
– Ого, ничего себе. Ну, я слышал краем уха, ChatGPT там, и прочее. Слушай, а ты не хочешь сегодня вечером небольшой перерыв сделать. Я бы к тебе зарулил вечерком. Ты бы мне всё это рассказал. А то от перенапряжения сам скоро будешь имитировать интеллект.
Взгляд скользнул по столу, заваленному заметками и распечатками документации. На мониторе застыли строки. Мысль об отдыхе казалась одновременно привлекательной и кощунственной. Проект засасывал, как черная дыра, и любая пауза грозила потерей темпа. Но дело было даже не в этом. Несмотря на репутацию властного перфекциониста, простое слово «нет» почему-то никак не давалось. Патологическая потребность быть хорошим, желание всем нравиться – эта дрянь въелась глубоко под кожу. Проще было согласиться и разгребать последствия, чем отказать и чувствовать себя виноватым.
– Слушай, ну я не знаю, я планировал добить уже эту тему, а потом может расслабиться по мелочи. Да и Маринка после прошлого раза обещала, что усыпит меня, как собаку. Сказала, что в интернете нашла препарат, которым собак усыпляют. – Дмитрий всё же сделал неуверенную попытку отклонить предложение друга.
– Я у нее в немилости тоже? Она меня тоже обещала усыпить?
– Нет, тебя она обещала в дурку сдать после того, как ты начал цитировать ей восточных мистиков на сирийском.
– Да, это было мистическое озарение. Я и сам не знал, что святого Исаака Сирина помню наизусть. Да и в прошлый раз звёзды просто не так встали. Теперь культурно надо, аккуратно.
– С гороскопом сверяться? засмеялся Дмитрий.
– Да-да. Леха подписался в Телеграме на канал «Звезды нам говорят», сообщает мне благоприятные дни. Я раньше гадал по Книге Перемен, но в Телеграме быстрее выходит… – Он осекся на полуслове и замолчал. Через динамик телефона было слышно его чуть участившееся дыхание, будто он собирался с силами сказать что-то ещё. Когда он заговорил снова, его голос звучал уставшим и подавленным: – Слушай… день какой-то странный сегодня. Музыку вот на работе услышал… Накрыло меня, как давно не было. Башка совсем не варит, на лекции чуть не поплыл. Может, я зайду? А то дома от этой тишины с ума сойти можно. Просто посидим, кофе погоняем, расскажешь, как твои дела.
После непродолжительной внутренней борьбы Дмитрий сдался. В конце концов, час перерыва был не таким уж и плохим предложением.
– Ну давай, только на час максимум. Маринка на дежурство в шесть уходит, заходи где-то в шесть тридцать.
В голове крутилась одна и та же мысль: «Ну вот, опять двадцать пять. Когда же я научусь отказывать?» Но отступать было поздно. Оставалось только надеяться, что в этот раз все действительно пройдет культурно и без эксцессов.
– Принято: в шесть с полтиной тогда.
– Только имей в виду: часик посидим, кофе попьём, и дальше буду работать.
– Годится. Обня́л.
– Давай! – попрощался Дмитрий.