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