Коммерсантъ FM

«Открытый код — то, что остается после закрытого ИИ»

Владислав Куренков о том, зачем российские ученые объединяются и как сделать арендованный интеллект общим достоянием

Пока международные бигтехи закрывают свои передовые решения от внешнего мира и меряются силами на «задачах тысячелетия» — от доказательства теорем до сворачивания белков,— в тени остается вопрос: а что делать тем, чья задача просто не входит в список приоритетов технологических гигантов? Команда российских ученых решила объединить людей, работающих над системами планирования для ИИ, и объявила о запуске открытого сообщества, цель которого — вместе решить одну из самых неподатливых для искусственного интеллекта игр, NetHack.

Руководитель научной группы «Адаптивные агенты» Института AIRI Владислав Куренков

Руководитель научной группы «Адаптивные агенты» Института AIRI Владислав Куренков

Фото: из личного архива

Руководитель научной группы «Адаптивные агенты» Института AIRI Владислав Куренков

Фото: из личного архива

По задумке авторов, у каждого участника проекта будет свой способ получить программу, свои инструменты и своя стратегия, а общая инфраструктура позволит видеть результаты друг друга, сравнивать их между собой и продолжать разрабатывать решения друг друга. Владислав Куренков, руководитель научной группы «Адаптивные агенты» Института AIRI и лидер сообщества, рассказал «Ъ-Науке», почему NetHack — это тест на разрыв между знанием и действием, какие еще барьеры стоят на пути признания системы «интеллектуальной» и можно ли вообще заставить открытые, децентрализованные усилия накапливаться в коллективный научный прогресс, а не рассыпаться на сотню одинаковых экспериментов.

— В своем эссе на странице сообщества вы пишете, что NetHack — это тест на планирование на сотни-тысячи шагов вперед при разреженной награде и неполной информации. Можете простым языком рассказать, что это значит?

— Одна партия в NetHack — это десятки тысяч ходов, и жизнь у героя одна: если погиб, то надо начинать с нуля. Сохранений в игре нет. Подземелье каждый раз новое, и вокруг видно только то, что ты уже успел обойти, даже свойства предметов перемешаны. Например, в подземелье герой может найти разные зелья, и в одной партии синее зелье лечит персонажа, а в другой — травит, и выяснять это приходится заново каждую игру.

Разреженная награда означает, что по дороге игра почти ничего не подсказывает. Если вы сыграли плохо, то выясняется это тогда, когда ничего исправить уже нельзя. Вот мы когда запускаем наших ботов играть, то вторая по частоте причина их «смерти» — голод, больше тысячи случаев. Причина заключается в том, что боты не позаботились о еде за несколько тысяч ходов до финального момента.

И вот тут мы переходим к тому, почему игра становится полезной для обучения ИИ. Ровно на таких же ошибках спотыкаются сегодняшние ИИ-агенты, когда пишут код. Отдельный шаг они выполняют прекрасно, а на длинную дистанцию держать планку не могут. Самые лучшие модели сейчас дотягивают до задачи объемом в средний рабочий день человека, и то примерно в половине случаев. В начале сессии агент принимает решение, которое кажется удобным, а через три-четыре этапа оказывается, что с самого начала стратегия нужна была другая.

— Почему именно NetHack, а не любая другая сложная игра или бенчмарк? Что в ней такого, чего нет, например, в шахматах, го или StarCraft?

— Потому что во всех перечисленных играх машины уже смогли победить. А в целом далеко не все игры полезны для решения научных задач. Это первое.

Второе — длина партии, о которой я уже рассказал выше. Одна партия идет десятки тысяч ходов, и решение, принятое в начале, аукается через несколько часов игры. Шахматная партия укладывается в среднем в семьдесят ходов, матч в StarCraft — минут в двадцать.

Третье — необратимость. Жизнь у персонажа одна, сохранений нет, и одна ошибка на двадцатитысячном ходу перечеркивает всю партию. Это ровно то свойство, из-за которого нам страшно пускать ИИ-агента в настоящую работу на своем компьютере. Скажем, он пошел работать и удалил не тот файл, отправил не то письмо, снес миграцию базы. И что нам потом делать? Ну и, конечно, разнообразие сцен и сценариев.

— Если когда-нибудь появится агент, стабильно проходящий игру, что именно это скажет о его «интеллекте», а что все еще останется недоказанным?

— Полезно вспомнить, чем заканчивались прошлые игровые рубежи. Deep Blue обыграл международного гроссмейстера, но про интеллект машин это сказало немного. Выяснилось, что шахматы берутся перебором. С го вышло иначе, но главным результатом там стал не уровень игры, а метод — обучение на игре с самим собой, который потом ушел далеко за пределы игр.

Если в NetHack что-то получится, смотреть я бы стал не на победу, а на способ, которым игру взяли. Мы делаем ставку на то, что стратегию можно записать программой, а программу напишет модель, которая сама играть не умеет. Сработает ли это, никто пока не знает, потому что на данный момент еще ни у кого в мире не сработало ничего. Больше 20% игры не прошла ни одна система.

Похожим образом сейчас, кстати, пробуют управлять роботами. Языковая модель пишет управление обычным кодом по типу: вот функция «подойти», вот «взять», вот условие, когда отступить. Робот пробует, что-то не получается, ошибка возвращается модели, код правится, удачные куски сохраняются и идут в следующие задачи. Это направление называют code as policy (код как политика — англ.).

— Какие еще барьеры вы видите на пути к признанию системы интеллектуальной, помимо умения планировать в условиях неопределенности? Есть ли у вас личный список критериев, по которому вы бы сверялись?

— Строгого списка у меня нет, но есть два важных вопроса. Первый — это умеет ли система переиспользовать все накопленное знание, чтобы получать новое. Не пересказывать выученное, а брать известное, как свое, так и человеческое, и выводить из него следующий шаг. Второй — умеет ли она адаптироваться к новым задачам. Не к вариантам той же задачи, а к тому, чего раньше не делала.

По этим двум пунктам сегодняшние системы уже кое-что умеют. И знание переиспользуют, и под новую задачу подстраиваются. Поэтому спорить, наступил ли момент, который принято называть AGI, мне не очень интересно. Интереснее выявлять, что у них по-прежнему не выходит.

А вот не выходит ровно то, ради чего мы затеяли NetHack. Надежно действовать на длинной дистанции, когда ошибку нельзя отыграть назад. Доводить до конца дело, в котором цена решения выясняется через тысячи шагов. Знание есть, адаптация есть, а исполнения нет. Поэтому же я не считаю, что признание системы интеллектуальной упирается в планирование. Это просто место, где разрыв сейчас виден лучше всего. Еще есть барьер измерения, о котором я не устаю говорить. Тесты быстро насыщаются.

— Сейчас в решении NetHack пробуют и LLM-агентов, и RL, и символические методы. Есть ли уже понимание, какой подход работает лучше, или пока это принципиально открытый вопрос?

— Вопрос открытый. До победы не дошел никто, но упираются все в разное, и этот год хорошо показал, во что именно.

Начнем с символьных ботов, то есть написанных человеком правил. Лучший из них, AutoAscend, выиграл соревнование на NeurIPS в 2021 году и с тех пор остается сильнейшим. При этом он взял около восьми процентов по шкале прогресса. За сто девять тысяч сыгранных партий он ни разу не добрался до середины пути.

Имитационное обучение. Берем сто тысяч партий этого бота и учим на них нейросеть. Кривая выходит на полку ниже самого бота, которого копируют. Простое копирование эксперта здесь не работает.

Обучение с подкреплением. Вот тут в сентябре случилось важное событие. RL-агент впервые с 2021 года обошел AutoAscend, семнадцать процентов против восьми, и отдельные запуски дошли глубже, чем когда-либо заходил символический бот. Для области это заметный сдвиг.

Языковые модели, играющие напрямую,— тринадцать процентов и гибель на первых уровнях подземелья. Побед, повторю, ноль у всех, и сравнивать эти числа можно только приблизительно, потому что их мерили на разных наборах подземелий и разном числе сыгранных партий.

— Если я правильно понимаю, то вы отталкиваетесь от сценария, где сильный ИИ, он же AGI, когда-то появится, но останется в руках нескольких компаний. Насколько этот сценарий правдоподобен?

— Версия, в которой все окажется у одного-двух игроков, мне кажется маловероятной. Скорее будет несколько центров с разной силой. Где-то модель посильнее, где-то послабее, разрыв между ними то сокращается, то снова растет. И у всех, кто вырывается вперед, будет одна и та же проблема: обучение и инфраструктура стоят дорого, вложения надо возвращать, поэтому доступ приходится продавать. Даже если кто-то захочет оставить лучшее себе, продавать он все равно будет, пусть и то, что чуть слабее.

Для всех остальных это означает вполне конкретную вещь. «Интеллект» будет доступен, но арендованный. Меня это устраивает как исходные данные, с этим уже можно работать — большинство так и работает. Боты пишутся агентами, за которых платят по подписке. Смущает другое. Когда подписка кончится или поменяются правила использования, от всей проделанной работы должно что-то остаться. Вот об этом я и думаю, и думать об этом надо не в будущем, а сейчас. Открытый код — это то, что остается после закрытого ИИ.

— В эссе вы проводите разницу между «доступом к интеллекту» и «структурой, в которой этот доступ организован». Можете на простом примере объяснить, почему это разные вещи? Что важнее?

— Доступ — это возможность сесть и поработать с сильной моделью. Структура — это договоренности вокруг этой работы. Что считается вкладом, как его проверяют, где его найдут следующие и как запомнят автора.

Простой пример. Вот есть сто человек, у каждого подписка на агента, каждый потратил месяц на NetHack. Без общей структуры получится сто ботов в ста репозиториях, проверенных на разных подземельях и по разным меркам. Многие переоткроют одно и то же, сравнить результаты не выйдет, и сто человеко-месяцев превратятся в сто изолированных историй. А если есть общий формат бота, одинаковая проверка и общий список результатов, то сто первый участник начинает не с чистого листа, а с лучшей точки, до которой другие дошли до него.

Без доступа организовывать нечего, но доступ постепенно превращается в товар, его можно просто купить, а структуру никто не продает, ее приходится строить самим. Вспомните авторов «Википедии» — у них нет никакого особого доступа к знаниям, там работают правила, история правок и обсуждения.

— Получается, что условные сто человек, независимо взявшихся за одну проблему, просто повторят эксперименты друг друга? Как сообщества технически не дают этому случиться?

— Без специальных усилий именно так и будет, это поведение по умолчанию. Средства против него давно известны из открытого кода и из науки, мы просто собрали их вокруг одной задачи.

Первое — общий интерфейс. Снаружи все боты устроены одинаково: получают экран игры и возвращают следующий ход. Что у них внутри, дело автора. Поэтому чужую программу можно запустить у себя, не разбираясь, как она написана.

Второе — одинаковая проверка. У каждого из семидесяти трех стартовых персонажей есть пятнадцать открытых подземелий, одних и тех же для всех, и все программы играют их в одинаковых условиях. Число, полученное у вас, сравнимо с числом, полученным у меня.

Третье — общий список. Каждая программа попадает в него вместе с результатами и точной ссылкой на свою версию, так что любую можно забрать себе и продолжить ровно с того места, где остановился другой человек.

И четвертое, менее очевидное: видно, где пусто. На сайте показано, по каким персонажам есть сильная программа, а по каким всерьез никто не брался, и таких пока большинство. Новичку не нужно гадать, чем заняться, чтобы не повторять чужое.

— Вы сравниваете свою модель сообщества с Kaggle (платформа для соревнований по анализу данных и машинному обучению), но отмечаете, что у вас участники не выполняют чужие задания, а сами ищут и меняют метод решения. Какие новые проблемы — доверия, оценки, безопасности исполняемого кода — это создает?

— У нас тут и то, и другое. От Kaggle берем принципы общей оценки, открытую доску и саму ситуацию, когда много людей независимо решают одну задачу. От BOINC (платформа распределенных вычислений) — то, что участники приносят собственные ресурсы ради общей цели, и в этом смысле мы, конечно, его наследники.

Отличие от обоих одно. У нас участник не выполняет присланное задание. В BOINC код пишет и подписывает проект, а доброволец отдает машину и доверяет ее проекту. На Kaggle задача и мера успеха заданы заранее, а вы присылаете ответы. У нас человек сам решает, каким способом решать, и приносит работающую программу, которую потом запускают другие. Отсюда и новые проблемы, главных — две.

Первая — безопасность работы с чужим кодом. Для этого чужую программу мы запускаем в запечатанном контейнере без доступа в сеть, без права что-либо менять в системе, с жесткими ограничениями по памяти и процессору. Взять ее можно только из публичного репозитория и только в той версии, которую измеряли.

Вторая — оценка. Любой может заявить любое число. И даже без злого умысла программа легко подстраивается под те пятнадцать подземелий, на которых ее проверяли. Эту задачу мы решаем перепроверкой: каждая зарегистрированная программа встает в очередь, наш сервер прогоняет ее на закрытых подземельях, которых не видел никто из участников, и именно этот результат сайт показывает по умолчанию. Что без этого нельзя, мы поняли на собственных ботах, потому что улучшения, выглядевшие убедительно, на незнакомых подземельях в основном исчезали.

— В Kaggle есть известное противоречие между открытым обменом находками и конкурентным рейтингом, где невыгодно делиться. Как вы планируете решать этот же конфликт в NetHackers?

— Полностью разрешить его, думаю, нельзя, но можно сместить баланс. Для меня это до сих пор открытый вопрос. Выгодно ли участнику публиковать удачную ступеньку, от которой потом оттолкнутся другие?

Пока мы опираемся на три вещи. Программа попадает на доску только как открытый код с точной отсылкой к версии. Обычным путем не выйдет держать лучший прием при себе и одновременно стоять в рейтинге.

У нас нет дедлайна и призового фонда. На Kaggle желание придержать находку сильнее всего перед финалом, когда на кону деньги и одно место в таблице. У нас доска работает постоянно, и ждать особо незачем.

А вот признание не сводится к одному месту в общем списке. Оно привязано к конкретным рекордам: кто держит лучший результат за конкретного персонажа, кто первым дошел до нового рубежа. Персонажей — семьдесят три, так что первым в чем-то может стать довольно много людей, и это ни у кого ничего не отнимает. Сработает ли — честно, не знаю. Если окажется, что рейтинг все равно наказывает тех, кто делится, это тоже будет результат.

— Как вы технически будете фиксировать такие «промежуточные ступеньки», а не только финальные результаты?

— Самый простой механизм. Это история версий. Каждая программа — конкретная версия кода в репозитории автора, поэтому видно не только что получилось, но и что именно изменилось по сравнению с предыдущим шагом.

А еще мы записываем все ходы, а не только удачные. Цикл эволюции отправляет в общий список каждого проверенного кандидата, включая тех, кто оказался хуже родителя. Может показаться, что это выглядит как складирование мусора, но ступеньки живут именно здесь. Изменение, которое само по себе ничего не дало, нередко оказывается нужным следующему этапу.

По каждой программе хранятся результаты отдельных партий. Записываем, как далеко она зашла, на каком уровне погибла и от чего. Лучшее отслеживается не одним общим числом, а отдельно по каждому персонажу и по игровым рубежам. Поэтому шаг вперед за одного персонажа виден, даже если общий средний результат не сдвинулся.

— Какие еще проблемы, помимо NetHack, кажутся вам хорошими кандидатами на такую же схему, а какие принципиально не подойдут?

— Схема работает, когда сходятся три условия. Результат — это артефакт, который любой может запустить и проверить. Проверка дешевая, автоматическая, и обмануть ее трудно. И между нулем и решением много промежуточных шагов, чтобы частичный прогресс было видно.

Первое, что приходит в голову,— сам открытый софт. Починка багов в чужих проектах, ускорение кода. Судьей тут выступают тесты и замер времени, спорить не о чем, и агенты это уже вовсю пробуют делать. Второе — управление роботом в симуляции, то самое code as policy, когда поведение записано кодом, прогон показывает, стало лучше или нет, и цена ошибки нулевая, потому что ломается симулятор, а не робот. Третье — старые добрые алгоритмические задачи вроде сжатия данных. Есть конкурс, который двадцать лет подряд предлагает сжать фрагмент «Википедии» сильнее предыдущего рекорда, и там все честно до последнего байта.

Не подойдут задачи, где проверка дорогая или медленная. Новое лекарство за час на ноутбуке не оценишь, нужны лаборатории и годы испытаний, и никакая общая доска этого не заменит. Не подойдут и задачи, где качество оценивает только человек и по своему вкусу.

— И до ИИ-эры ведь были громкие примеры распределенной науки. Расскажите про самые известные: какие вас вдохновили, какие — наоборот?

— Ближе всего к тому, что делаем мы,— Fishtest, система распределенного тестирования шахматного движка Stockfish. Правку может предложить кто угодно, добровольцы прогоняют ее у себя на десятках тысяч партий, и в движок попадает только то, что статистически доказало пользу. Из тысяч маленьких проверенных улучшений, сделанных разными людьми, вырос сильнейший шахматный движок мира. Для меня это образец! Открытый код плюс общая строгая проверка и никакого начальства, раздающего задания.

Вдохновляет и размах добровольных проектов — SETI@home, Folding@home, Galaxy Zoo. Миллионы людей отдавали свои компьютеры или собственное внимание ради общей цели, это по-своему фантастика. Но участник там приносит ресурс или выполняет рутину, а метод решения остается у авторов проекта. Нам такая форма не подходит. У нас именно метод и есть вклад.

А не нравятся мне закрытые истории. Громкий результат, пресс-релиз, статья — и ни кода, ни модели. AlphaStar обыграл профессионалов в StarCraft, это была отличная работа, но продолжить ее снаружи оказалось нечем. Авторы агента не отдали, команда занялась другими вещами, поле осталось примерно там же, где было. И толку, как говорится?

— Многие открытые научные инициативы со временем либо тихо умирают после ухода основателей, либо вырождаются в формальность без реального вклада участников. Что, по-вашему, определяет, проживет ли такая инициатива годы, а не месяцы? Нужно ли ей существовать вечно?

— Если посмотреть на похожие проекты, картина невеселая. Большинство открытых досок и сообществ затухает за год-полтора, а реально работает малая часть тех, кто зарегистрировался. Рассчитывать, что с нами точно-точно будет иначе, было бы наивно.

Решают, мне кажется, три вещи. Первая — задача должна оставаться живой сама по себе. Люди приходят ради задачи, а не ради платформы, и, если задача перестала быть интересной, никакое сообщество ее не вытянет. Вторая — вклад должен быть дешевым и проверяться автоматически. Как только все упирается в одного уставшего человека, который просматривает чужие загрузки по вечерам, проект заканчивается — просто не сразу. Третья — все должно работать без основателя. У нас открыт весь код, включая сервер и систему оценки, так что любое сообщество может вести свою доску. Программы лежат в репозиториях самих участников, а не у нас. Мы храним только ссылки и результаты. Если я завтра исчезну, программы останутся у людей, которые их написали.

А вообще, вечно существовать проектам не нужно, это нормально. У NetHack есть понятный финиш. Программа, которая стабильно выигрывает. Когда рубеж будет достигнут или станет ясно, что этот путь не работает, проект может взять и закончиться. Важно, чтобы после остались программы, данные и выводы, с которых начнут работать над другими идеями следующие команды.

— Кажется, что децентрализованный труд энтузиастов проигрывает по темпу компании с миллиардным бюджетом, потому что открытые сообщества не приносят средств и не являются основной занятостью специалистов… Что думаете?

— С авторством нам сильно помогает история версий. У каждого изменения есть автор, каждая программа привязана к аккаунту человека. Никаких отдельных договоренностей для этого не нужно, все получается само. На сайте видно, кто сейчас держит лучший результат за каждого персонажа, кто первым дошел до нового рубежа, и у каждого участника есть полная история вкладов.

Аналог цитирования для нас — ситуация, когда чужую программу взяли за основу и улучшили. Такие связи мы собираем, но пока не показываем, такой функционал в работе и будет запущен. Мне хочется, чтобы ценилось не только первое место, но и удачная ступенька, от которой оттолкнулись другие. В науке в целом, кстати, похожая проблема есть. Цитирование фиксирует, что на работу сослались, а не что на ней действительно построили следующий вывод.

Публикации при этом никуда не деваются, мы и сами пишем статьи. Просто единицей записи здесь становится программа, которую можно запустить и проверить, в отличие от строчки в списке литературы.

— Вы пишете, что доступ к ИИ-системам от больших провайдеров может оставаться платным и индивидуальным, а вот программа, которую он помог написать,— общим достоянием. Не кажется ли вам это уязвимым местом? Сама возможность участвовать в открытой науке в итоге все равно зависит от чьего-то инструмента?

— Если крупная лаборатория возьмется за NetHack и решит его, я буду рад. Мне нужна программа, которая стабильно выигрывает, и совершенно неважно, кто ее напишет. Из того, как это получилось, мы узнаем много полезного.

Но ненужной идея от этого не станет. Во-первых, результат лаборатории вполне может остаться закрытым, и тогда сообщество получит пресс-релиз вместо программы, которую можно запустить, прочитать и продолжить. Мы это уже проходили в других играх.

Во-вторых, NetHack для нас — конкретный полигон, вопрос фундаментальный шире. Как людям организовать доступ к интеллекту вокруг задач, которые важны именно им? Задач всегда больше, чем интересов нескольких компаний, а интересы эти меняются вместе с бизнес-планами. Место задачи в чужом исследовательском плане не должно решать, может ли сообщество ею заниматься. Инфраструктура у нас открытая, ее можно целиком забрать под другую задачу, и я буду только рад, если кто-то так сделает. А если задачу заберут и решат в открытую, скажу спасибо и займусь следующей. Их нам точно хватит.

Елизавета Певная

Новости компаний Все