
Полная версия:
Александр Александров Линия передачи
- + Увеличить шрифт
- - Уменьшить шрифт
Основания у него на это имелись, личные, профессиональные и не из тех, которыми хвастаются.
За двенадцать лет он трижды видел, как программа делает невозможное. Первые два раза дело кончалось ошибкой: тем самым событием, попавшим в расчёт раньше, чем оно случилось, — алгоритм угадывал будущее, потому что ему по недосмотру это будущее показывали.
Третий случай был другого рода, и его Марк вспоминал чаще прочих.
На одном проекте, ещё в офисные годы, у него не работал модуль обработки очереди. Не падал, ошибки не выдавал — тихо отдавал неверный результат раз в несколько сотен запусков. Марк искал причину неделю. Потом, отчаявшись, начал вырезать из кода куски по живому, чтобы локализовать место, и вырезал функцию проверки, к делу не относившуюся.
Модуль заработал.
Марк вернул функцию на место — модуль перестал работать. Убрал — заработал. Вернул — снова перестал. Пять раз подряд, с одинаковым результатом, что противоречило всему, что он знал о работе компьютера.
Коллега, которому он это показал, сказал «мистика» и пошёл курить. Марк не пошёл. Он сел и начал прокручивать поэтапно всё, что происходит между вызовом и ответом, — руками, на бумаге, шаг за шагом, как считают в столбик.
Он нашёл это за полчаса. Вырезанная функция трогала объект, который по документации считался неизменяемым, и трогала его на миллисекунду раньше, чем другой поток успевал этот объект прочитать. Убирая функцию, Марк убирал не проверку — он убирал задержку. Мистики не было. Была гонка двух потоков, о которой никто не думал, потому что думать о ней не полагалось по архитектуре.
С тех пор у него выработалось правило, которое он никогда не произносил вслух: чудо — это место, где ты ещё не прокрутил руками все шаги.
Поэтому, когда текст выдал ему то, что выдал, Марк не обрадовался. Он разозлился.
* * *В той папке лежало не про буквы. То есть про буквы тоже, но буквы были только входом.
Цепочки Марк к тому времени уже не хранил словарём: на словарь не хватило бы никакой памяти. Программа выстраивала из текста структуру: пласты, а в пластах — узлы, где цепочки сходились. Отдалённо это напоминало нейронную сеть, с одной существенной разницей: Марк её не обучал. Он не подбирал веса, не гонял эпохи, не размечал примеры. Структура вырастала из текста сама, за один проход, как растёт кристалл в перенасыщенном растворе: решётку никто не задаёт, она уже заложена в веществе.
И повторялись в ней не цепочки исходного текста. Повторялись пути внутри структуры — от узла к узлу, сквозь пласты. Одна и та же дорога через узлы возникала в книгах, между которыми не было ни цитаты, ни общей темы, ни общего века, — потому что дорога эта была про то, из чего слова складываются, а вовсе не про сами слова.
Больше того: одному пути внутри структуры отвечало сразу несколько кусков текста, и куски эти, выписанные рядом на бумаге, не имели между собой ничего общего. На один и тот же узел садились обрывок инструкции к бензопиле, кусок любовного письма и строчка из судебного решения: по смыслу дальше друг от друга их развести было уже некуда. Мало того, сами эти куски в исходном тексте не были сплошными. Они шли с разрывами — с провалами в несколько символов, с пропущенной серединой, — и структуру эти провалы не смущали совершенно.
Сначала Марк счёл это дефектом: решил, что программа склеивает что попало. Ушло полтора месяца, чтобы понять, что дело обратное. Путь был не про смысл и не про соседство букв. Он был про то, как устроен переход, — а переход оказывался одним и тем же и в бензопиле, и в любовном письме, и в судебном решении, потому что писал их язык, а не тема.
А увидел он это, пока занимался вещью вполне обыкновенной.
Он хотел, чтобы структура предсказывала следующий символ. То самое, что делают большие языковые модели: подаёшь начало, получаешь продолжение, символ за символом. Разница была в инструменте: вместо обученной сети — структура, которая выросла из корпуса за один проход и весила столько, сколько помещалось в оперативную память на лоджии.
Он подал ей первые страницы и попросил продолжать.
На двух пластах на выходе получилось нечто отдалённо похожее на язык: скопления букв с каким-то ритмом, с узнаваемой частотой гласных, но не слова. Так бормочет засыпающий.
Марк добавил пластов.
Появились слова, вернее, то, что было словами по всем признакам, кроме одного. Они были невозможно длинными: двадцать, двадцать пять букв, таких в русском не бывает. Но внутри них всё стояло правильно. Каждый стык между морфемами был законным: приставка садилась на корень так, как садится в языке, корень переходил в суффикс так, как переходит, и любое отдельно взятое сочленение встречалось в настоящей речи. Структура собирала невозможные слова из возможных сочленений — как ребёнок собирает из настоящих деталей конструктора машину, которая не поедет.
Он добавил пластов ещё.
Слова стали правильными. Все. Настоящими русскими словами, каждое из которых можно найти в словаре. Словосочетания при этом оставались странными: слова стояли рядом в сочетаниях, которые язык допускает по форме, но которых никто не говорит.
Он добавил ещё.
Пошёл осмысленный текст.
Марк сидел и смотрел на экран дольше, чем следовало бы взрослому человеку в третьем часу ночи.
Потом он полез смотреть, как именно собралась одна фраза. Без всякой задней мысли: обычная отладка — взять кусок выхода и пройти его назад по узлам, пласт за пластом, чтобы убедиться, что программа делает то, что он написал.
Программа делала не то. От пласта к пласту путь не переходил к соседнему символу. Он переходил через один.
Марк проверил на другой фразе, потом на сотне. Перескок был всюду, и величиной он был не случайной: ровно через букву, на каждом переходе между пластами. А буквы, которые путь по дороге собирал, лежали в исходном тексте не в одном слове. Одна отсюда, пропуск, следующая — уже из слова по соседству, через пробел, потом из третьего. Структура выхватывала буквы из стоящих рядом слов и складывала из них новый текст. Читаемый. И те провалы в несколько символов, которые он полтора месяца считал дефектом склейки, были не провалами. Это был шаг.
Произнести это вслух было нельзя. Выходило, будто можно взять страницу, рассыпать буквы как попало, и каждый раз получать осмысленный текст. Так не бывает. Из перемешанных букв не выходит ничего, кроме перемешанных букв; это знает всякий, кто хоть раз играл в слова на бумаге. А у него выходило.
Значит, порядок букв на странице — не то место, где лежит язык. Порядок был лишь одним из способов его записать. Структура пользовалась не им: она читала поперёк слов, через пробелы, через границы, которые ставит письмо, а не язык, — и находила там то же самое.
Четыре месяца Марк искал у себя ошибку в коде. Ошибки не нашлось, и дальше следовало то, чего он не мог ни опровергнуть, ни принять.
Устойчивых путей в структуре было мало. Несоизмеримо мало по сравнению с тем, сколько путей она порождала. Прочих было множество: каждый прогон выбрасывал их десятками тысяч. Только каждый такой путь встречался ровно один раз и больше не повторялся никогда.
Марк не выбрасывал их сразу. Он держал их в памяти нарочно — давал шанс встретиться во второй раз и перейти из неустойчивых в устойчивые. Именно на этих кандидатов и уходила почти вся память — на тех, кто так и не подтвердился. Устойчивые пути, которых было наперечёт, занимали крохи. Второго раза у подавляющего большинства не случалось.
А те, что держались, всегда оказывались одними и теми же: добавь пласт, возьми другую книгу, возьми чужой корпус — те же самые.
Он проверял это так, как проверяет тот, кого уже дважды подводила собственная невнимательность. Написал структуру заново, с нуля, на другом языке, не заглядывая в старый код: те же пути. Отключил собственную нормализацию текста: те же. Запустил на ноутбуке Кати, где не стояло ни одной его библиотеки: те же. Подал на вход вместо книги шум из генератора случайных чисел — не вышло ничего, ни на двух пластах, ни на сорока, только шум и остался. Значит, структура ничего не додумывала: она находила язык там, где он был.
Марк сформулировал это так, как думал, а не так, как принято формулировать: устойчивый путь — не одна из возможностей, которые структура перебирает. Это отметка на карте того, что в нынешнем состоянии реальности вообще способно существовать больше одного раза. Островки. Между островками — вода, и на воде ничего не стоит.
Реальность эта, в которой островки расположены так, а не иначе, никакой стороной не выходила ни на экран, ни в корпус текстов, ни в то, что можно потрогать руками. Она лежала в основании и несла мир на себе, как основа несёт ткань: нитей в готовом полотне не видно, а держится на них весь рисунок. И как всякая основа, вечной она не была, менялась медленнее всего, что на ней держалось. Марк не мог её ни увидеть, ни описать, только читать отпечаток: карту островков.
Оставалась форма. Он выписал, как устойчивые пути расходятся по пластам: сколько ветвей даёт каждый узел и что происходит с этими ветвями уровнем ниже. Ветвление оказалось одинаковым на всех уровнях: рисунок целиком повторялся внутри себя, и внутри повторения снова — до предела, где данных ещё хватало, чтобы считать.
Слова для этой фигуры у него не было. Он нарисовал её на листе А4 — одна фигура, внутри неё три такие же поменьше, в каждой ещё три, — подписал сбоку дату и убрал лист в ту же папку, где лежали распечатки для Ларисы.
Слово он получил несколько лет спустя, ночью, от статьи в Википедии. К тому времени лист пролежал в кладовке без движения.
* * *Аналогия пришла к нему от Кати и, как всё важное в его жизни, пришла случайно.
Она готовила в те месяцы доклад про наследственные кардиомиопатии и вечером, за столом, пересказывала ему то, что не влезало в отведённые двенадцать минут. Речь шла о гене, в котором одна замена даёт болезнь, другая — тоже болезнь, а третьей замены не бывает вовсе.
— Как это — не бывает? — спросил Марк.
— Никто с ней не рождается, — сказала Катя. — Вернее, наверное, зачинается. Просто до кардиолога такой человек не доходит: с этой заменой эмбрион не развивается.
Марк отложил вилку.
— То есть её нет в перечне не потому, что её кто-то запретил. Её нет потому, что всё, что её носило, не дожило до того, чтобы попасть в перечень.
— Грубо сказано, — Катя посмотрела на него с подозрением, какое у неё появлялось всякий раз, когда он начинал пересказывать медицину своими словами. — Но по существу да.
Потом он ещё два вечера читал про консервативные участки — те, что не меняются у видов, разошедшихся сотни миллионов лет назад, хотя рядом с ними всё меняется свободно. И не оттого, что на них наложен запрет: всё, что там менялось, не оставило потомства.
Устойчивость оказывалась не правилом, которое кто-то установил сверху. Устойчивость была тем, что осталось.
Это была его же кривая. Тот же принцип, только вместо тридцати трёх букв — четыре основания, а вместо двухсот тысяч книг — четыре миллиарда лет.
* * *К торговому роботу всё это имело прямое отношение, и отношение оказалось не тем, какого Марк ждал.
Полгода он был уверен, что пишет предсказатель. Теперь стало ясно: предсказателя он не пишет и написать не может. Предсказание не было свойством его программы. Оно было свойством сигнала.
Поток цен, поток букв, поток чего угодно — часть реальности, и он несёт в себе её устройство целиком, включая те свойства, которые ни в один учебник не вошли и, судя по тому, как устроены учебники, не войдут. Программе незачем вычислять будущее. Её дело — вырастить структуру на том потоке, который идёт прямо сейчас, и найти в нём узлы, которые держат. Дальше можно ставить на то, что они выдержат вес. Ум тут ни при чём: они держат и так, без тебя.
Но решающим оказалось даже не это. Решающей оказалась скорость.
Структура не обучалась. Ей не требовались ни обучающая выборка, ни эпохи, ни сутки прогона на размеченных данных. Она выстраивалась на том, что пришло, за один проход, и перестраивалась под новую обстановку так же, за один проход, пока обстановка ещё не кончилась.
Именно здесь Марк обходил остальных. Роботы, работавшие на гауссовой статистике, исходили из распределения, которое перестаёт держаться в ту минуту, когда это важнее всего. Роботы на обычном машинном обучении знали прошлое превосходно, а под настоящее переучивались сутками, иногда неделями. Марку переучиваться было не нужно. У него не было прошлого — у него был этот поток, этот час, эта конкретная сложившаяся ситуация, из которой структура вырастала заново каждый раз.
Ядро он переписал за три недели. Робот перестал угадывать цену. Он начал искать узлы, которые держат.
Расплата была простая, и звалась она памятью.
Каждый добавленный пласт множил число узлов, а узлы надо было держать не на диске, диск был для этого безнадёжно медленным, а в оперативной памяти, целиком и сразу. На текстах это упиралось в шестьдесят четыре гигабайта его сервера уже на седьмом символе. Рыночному потоку пока хватало и этого, потому что поток был один и узкий. На чём-то большем не хватило бы ничего из того, что стояло у Марка на лоджии.
Поэтому лезть туда, где работали ИИ-сервисы с большими языковыми моделями, он не собирался и не жалел об этом. У них были дата-центры, у него — сервер, собранный по частям у человека с жёлтыми от табака пальцами. Спорить с дата-центром объёмом бессмысленно. А для одного инструмента, одного потока и одного часа его подхода хватало с запасом, и это было столько, сколько ему требовалось.
Экономику ему в своё время читали хорошо. Преподаватель, сухой пожилой человек, ведший курс так, словно предметом его были люди, объяснял устройство фирмы через одну простую вещь: фирма существует, чтобы расти. Никто этого не постановлял: нерастущая фирма проигрывает растущей и исчезает. Марк потом и сам прочитал несколько книг по экономике, уже без принуждения, и вынес из них ту же мысль, только шире: расширение рынка при капитализме — единственный доступный способ уцелеть, и ничья добрая воля тут ни при чём.
Из этого убеждения и выросло письмо, которое он потом вспоминал с тем же чувством, с каким вспоминал отказы из ведомства.
Он написал в международную компанию, производящую микросхемы памяти. Просить он ничего не собирался и себя на работу не предлагал. Он описал сжато, на одну страницу, без формул и без пафоса, класс алгоритмов, которому оперативная память служит единственным расходуемым материалом, а вовсе не вспомогательным ресурсом: больше памяти — больше пластов, больше пластов — ближе к осмысленному результату, и никакого потолка в этом соотношении не видно. И приложил два столбца расчёта: во сколько раз вырастет их собственный рынок сбыта, если таких алгоритмов станет много.
Он ничего не просил — ни денег, ни работы, ни встречи. Он предлагал им рынок. По всему, что Марк знал об устройстве капитализма, это было единственное письмо, которое в принципе невозможно проигнорировать: в нём чужой интерес совпадал с их собственным, а совпадение интересов — то самое место, где, если верить учебнику, и происходит всё движение.
Он проверил письмо трижды, перевёл на английский, отправил на адрес для деловых предложений и получил автоматическое подтверждение о доставке.
Больше он не получил ничего.
Ни отказа, ни вопроса, ни вежливой формулировки про несоответствие текущим приоритетам. Тишина совершенно спокойная, без всякой враждебности, — как тишина в ответ на звонок в пустую квартиру. Марк подождал месяц, потом ещё месяц, потом перестал открывать папку с отправленными.
Иллюзия рухнула не сразу и не громко. Просто в какой-то момент Марк понял, что ждал ответа не от компании. Компании не существует: есть здание, в здании люди, у людей должностные инструкции. И ни в одной инструкции не написано «прочитать непрошеное письмо, которое, возможно, увеличит рынок сбыта через пять лет». Инженер, способный оценить написанное, этого письма не увидит никогда. Тот, кто его увидит, оценивается по скорости обработки стандартных обращений, а нестандартное обращение портит ему показатель.
Стремление к прибыли существовало на уровне абстракции, которую рисуют на доске мелом. На уровне конкретного стола в конкретный вторник его не было вовсе — там сидел человек, которому до конца дня надо закрыть очередь.
Второе за год открытие такого рода, отметил про себя Марк, и по форме они совпадают. Учебник лингвистики описывал язык лишь в той части, которая в учебник попала. Учебник экономики — хозяйство лишь в той, которую удалось уложить в кривые. Оба описания были верными. И оба были меньше описываемого ровно настолько, чтобы человек, действующий строго по ним, не добился ничего.
Обиднее всего оказалось то, что преподаватель, читавший ему экономику, нигде не соврал. Он честно рассказывал про фирму. Просто фирма — это не тот, кто открывает почту.
Отказ ведомства за недостаток науки и молчание компании, делающей память, Марк с тех пор держал в голове рядом, как два снимка одного предмета с разных сторон: и там, и здесь никто не читал по существу, потому что читать по существу не входило ни в чью должностную инструкцию.
* * *Вот это Марк Ларисе и не показал.
Страха, что украдут, у него не было: красть там было почти нечего — кода на сорок строк, идея на одну фразу. Расчёт был проще. Чтобы принять первую папку, достаточно посмотреть на цифры и признать, что они сходятся. Чтобы принять вторую, нужно согласиться, что учебник описывает лишь ту часть существующего, которая в него попала.
Ларисе за учебник платили зарплату. Марку за него не платили ничего, и в этом, как он понял уже в электричке по дороге домой, заключалось его единственное преимущество перед всеми, у кого были степени, лаборатории и право называть вещи своими именами.
Дома он поставил вторую папку на полку в кладовке, между инструкцией к бойлеру и Тёмкиными рисунками, и пошёл ужинать.
Глава 5. Два питча
Через несколько дней на стенде у входа в кружок робототехники появился новый лист, синим по белому, с эмблемой какого-то фонда. Руководитель, тот самый молодой человек в растянутом свитере, ловил родителей у гардероба.
— Мы подаёмся на грант, — говорил он, — на новое оборудование. Кто-нибудь имел дело с такими заявками? Форма мудрёная.
Марк молча кивнул на прощание и вышел с Тёмкой во двор, застёгивая ему куртку.
Имел дело. Ещё как имел.
* * *Фирму он открыл за один день — в тот год, когда это ещё казалось шагом вперёд, а не отступлением. Электронная подпись, три формы, оплата пошлины с карты, на которой в тот момент оставалось меньше, чем стоила сама пошлина. Катя перевела недостающее без единого слова, только спросила название.
— «Марк Вебер», — сказал он. — Временно. Придумаю потом.
Не придумал. Так и осталось.
Она же вечером того дня, сидя рядом с ним за одним ноутбуком, до полуночи помогала составлять заявку. Помощь была в языке документа: в разработке от неё мало что зависело. Где убрать «мы считаем» и поставить «показатели демонстрируют». Где заявленная сумма должна выглядеть скромной, чтобы не спугнуть, но не настолько скромной, чтобы усомнились в серьёзности проекта. У неё был опыт с научными грантами — за годы работы в НИИ она успела сдать десяток заявок сама.
— Тут нужна легенда, — говорила она, листая методичку фонда. — Не в смысле неправды. В смысле — история, которую можно рассказать за тридцать секунд лифта.
Легенда была честной. Санкции закрыли доступ к десяткам зарубежных сервисов поиска товаров по фото — маркетплейсы, каталоги, магазины одежды остались без замены. Марк писал систему, которая находила бы товар по видео с камеры или по одной фотографии, не хуже ушедших аналогов, по некоторым параметрам даже точнее. У него уже был рабочий прототип. Спрос у продавцов — реальный, он сам обзвонил три десятка небольших магазинов, прежде чем решился заявить это в документе.
Он сделал питч на пятнадцать слайдов и видеопрезентацию — сам снял, сам смонтировал, начитал текст в третьем дубле, потому что в первых двух голос предательски садился на цифрах роста рынка. Отправил заявку в фонд поддержки ИТ-компаний в четверг вечером, с ощущением, что сделал то, что полагается делать в этой стране человеку с идеей и без связей: правильно, по правилам, вовремя.
Три месяца он строил планы.
За это время он успел прикинуть, сколько сотрудников понадобится на первом этапе, посмотреть офисы в бизнес-центре на одном из вылетных шоссе, посмотреть, без аренды, и один раз, ночью, рассказать Кате, как будет выглядеть их жизнь через год, если всё получится. Она слушала внимательно, задавала уточняющие вопросы, и он тогда ещё не понимал, что сам процесс её вопросов — это и есть надежда, гораздо более осторожная, чем его собственная.
Письмо пришло в понедельник, без предупреждения, в половине десятого утра.
«Уважаемый Марк Андреевич. Благодарим за интерес к программе. По результатам экспертной оценки проект „Марк Вебер“ не рекомендован к финансированию. Основная причина: недостаточная научная составляющая представленного решения относительно заявленной суммы поддержки. Желаем успехов в дальнейшей деятельности».
Он перечитал письмо пять раз, ища между строк то, чего там не было — конкретики, цифр, названия хотя бы одного критерия, которому проект не дотянул. Не нашёл. Написал ответное письмо, вежливое, деловое, с просьбой уточнить, какая именно научная составляющая имелась в виду и можно ли получить развёрнутое заключение экспертов.
Ответ пришёл через две недели. Короче первого.
«Марк Андреевич, решение экспертной комиссии окончательное и обжалованию не подлежит. Индивидуальные заключения экспертов не предоставляются в целях соблюдения принципов анонимности оценки».
Он тогда ещё смеялся, показывая это Кате.
— Анонимности, — повторил он. — Как будто я собираюсь мстить эксперту лично.
— Может, правда какой-то формальный порог не прошёл, — сказала Катя. — У нас в институте тоже бывает: два балла не хватило, и всё, без объяснений.
Он согласился, потому что версия про глупого чиновника или несчастливое совпадение баллов была не такой страшной, как другая, которая уже тогда маячила где-то на периферии, но до которой он ещё не дозрел.
* * *На презентацию цифрового ведомства его позвал бывший однокурсник, у которого была лишняя электронная пригласительная. Мероприятие проходило в новом выставочном комплексе в самом центре столицы — Марк ехал туда с ощущением, что раз уж один канал закрылся, надо искать следующий, а этот выглядел самым официальным из всех.
Внутри было светло и просторно, как в аэропорту, который ещё не успели заполнить людьми. Вдоль стен — стенды с крупными буквами: «Квантовые вычисления. Национальный подход», «Спутниковая группировка нового поколения», и рядом, без всякого перехода, — стенд поменьше, с приложением для футбольных болельщиков, где на экране крутилась анимация стадиона и счёт, обновлявшийся каждые несколько секунд сам по себе, без матча.
Школьников водили экскурсией — классов по тридцать, в одинаковых синих жилетках, их подводили к самым ярким экранам и держали столько, сколько требовалось для общего фото, а потом вели дальше, к следующей витрине.
Со сцены выступал министр — не первое лицо, но и не последнее, — рассказывал о темпах роста отрасли, о десятках тысяч рабочих мест, о том, что страна держится и даже опережает по ряду направлений. Зал слушал спокойно, как слушают прогноз погоды: с полным равнодушием к тому, совпадёт он с завтрашним днём или нет.
Марк обошёл всё дважды. На выходе, у стойки с буклетами, он взял программу поддержки — ту же самую, куда уже подавался, — и увидел внизу мелким шрифтом список категорий: научные исследования, прикладные разработки, социальные проекты. Своей категории он там не нашёл, но решил, что не туда подавался в первый раз.
Домой он ехал в приподнятом настроении, которое сам не мог до конца объяснить: как будто дверь закрылась просто потому, что он стучал не в ту, и никто его оттуда не гнал.
* * *Вторую заявку он готовил уже месяц — на базу данных для биотеха: структурированный поиск по молекулярным соединениям с той же математикой в основе, только переодетой. Он специально усилил раздел про научную новизну, добавил ссылки на статьи, вписал пару формул, которые честно объясняли устройство алгоритма — на этот раз он был уверен, что причина первого отказа учтена.
Ответ пришёл через два с половиной месяца.
«Проект представляет интерес с точки зрения технологического потенциала. Вместе с тем экспертная комиссия отмечает недостаточную ясность коммерческой составляющей и перспектив монетизации решения. Просим также предоставить информацию о штатной численности научных сотрудников компании-заявителя».
Марк прочитал это стоя, на кухне, не успев снять куртку.