Всем привет! Меня зовут Степан Павленко, я аспирант и стажер‑исследователь в Лаборатории теоретических основ моделей искусственного интеллекта на ФКН ВШЭ. Прошлым летом я поехал на летнюю школу AIRI в Томском государственном университете, где помимо лекций нужно было выполнять проекты. Наша команда выбрала проект на стыке генеративного моделирования и химии: научиться предсказывать SMILES‑строку молекулы прямо по 3D‑координатам атомов. 

За две недели изначально грандиозная идея «LLM генерирует SMILES с нуля» превратилась в куда более реалистичную задачу — предсказание графа химических связей. Рабочий прототип был готов уже на защите, а ещё через полгода вечерних созвонов и экспериментов он вырос в Uni‑Bond — модель, которая обходит предыдущий SOTA (YuelBond) по точности восстановления графа связей примерно в 20 раз по частоте ошибок в exact match. В июле 2026-го работа была принята на воркшоп Graph Foundation Models при ICML 2026 в Сеуле.

Дальше — личная история про путь, который мы прошли, вместе со всеми его трудностями. Хочется верить, что она сможет вдохновить кого‑нибудь другого.

Как я попал на летнюю школу AIRI

О школе я узнал случайно: годом раньше был на другой летней школе и по инерции искал, что ещё бывает в этом формате. Наткнулся на «Лето с AIRI» и решил податься. Отбор не был формальностью — нужно было и резюме своё показать с указанием того, чем занимаешься в ресёрче, и мотивационное письмо составить, и даже тестовое сделать.

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

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

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

Впрочем, этот текст не про то, как прошла школа «Лето с AIRI» 2025, подробнее о об этом можно прочитать в другом хабре. А я перехожу к нашему проекту.

Команда: я, Паша и Ваня

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

Ментором проекта был научный сотрудник команды «Группа органической химии» AIRI Денис Потапов — с ним мы плотно взаимодействовали всю школу. Кроме него, помогали ещё несколько коллег из AIRI: Кузьма Храбров, Артём Цыпин, Александр Телепов и Константин Ушенин — все они в итоге стали соавторами финальной статьи.

День с первого по третий: слишком амбициозная идея

Гипотеза, с которой мы стартовали, звучала красиво: современные LLM достаточно мощны, чтобы решить задачу «в лоб» — подать координаты и типы атомов, получить на выходе корректный SMILES.

Мы перепробовали несколько вариантов работы с координатами: подавать их сразу в латентном пространстве и отображать в латентное пространство отдельным энкодером. Но вместо того, чтобы специальным образом токенизировать координаты, на файнтюн мы завели продвинутые RL‑алгоритмы — до подхода с токенизацией координат (в духе BindGPT), который в итоге лёг в основу финальной версии, мы дошли уже сильно позже, за пределами школы.

На школьном RL‑подходе нам всё же удалось выбить метрики лучше бейзлайна. Но стало ясно: полноценно довести генерацию до состояния, где она работает по‑настоящему надёжно, за оставшееся время школы нереалистично. Поняли это довольно быстро, где‑то на третий день, и параллельно с продолжающимися экспериментами начали прощупывать соседнюю, более достижимую постановку задачи: не генерировать строку целиком, а восстанавливать молекулярный граф, то есть предсказывать типы связей между атомами.

Важно: мы не считали это отступлением. Восстановление графа связей — самостоятельная и практически значимая задача computational chemistry, а вовсе не «упрощённая версия» изначальной идеи.

Технический прорыв: почему не GNN

Точкой отсчёта была YuelBond — на тот момент SOTA‑модель для восстановления связей, работающая поверх графовой нейросети (GNN). Идея её обойти появилась примерно за неделю.

У стандартных GNN receptive field ограничен глубиной сети: после L слоёв message passing узел собирает информацию только с тех атомов, до которых можно дойти по графу не более чем за L рёбер. Расширять эту область наращиванием числа слоёв удаётся плохо, потому что с глубиной представления узлов сходятся друг к другу (oversmoothing), а сигнал от удалённых атомов сжимается при прохождении через узкие места графа (oversquashing). В трансформерных архитектурах внимание глобально уже с первого слоя, поэтому проблема так остро не стоит, а молекулы, с которыми мы работали, достаточно малы, чтобы квадратичная сложность расчета матриц внимания не мешала. Поэтому вместо GNN мы взяли эмбеддинги предобученной модели, атомные и попарные представления из геометрического энкодера, и на них решали задачу классификации типа связи для каждой пары атомов. 

Переломный момент — когда мы сравнились с YuelBond и получили метрики лучше. У всех, что называется, загорелись глаза: правда ли всё посчитано корректно, честно ли подготовлен датасет, не обманываем ли мы сами себя? Именно тогда стало понятно: «эй, а ведь тут реально есть статья!».

Финал школы: защита, которую я чуть не пропустил

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

А дальше — та самая история. Сразу после защиты, отходив на ногах почти сутки, я пошёл спать. Когда я вернулся и зашёл в аудиторию — в ту же секунду объявили нашу команду как команду с лучшим проектом школы. Было неловко чуть не пропустить собственное объявление, но зато вышло однозначно незабываемо.

Мы с Ваней и Пашей защищаем наш проект. По нашим лицам легко можно оценить количество недоспанных часов.
Мы с Ваней и Пашей защищаем наш проект. По нашим лицам легко можно оценить количество недоспанных часов.

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

Полгода после школы: созвоны, датасеты и нехватка GPU

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

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

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

По ходу этой полугодовой доводки проект окончательно разделился на два направления:

  • Uni‑Bond — предсказание графа связей, ставшее основным результатом статьи;

  • Прямая генерация SMILES через LLM — более амбициозная изначальная идея, которая осталась в статье как отдельное, более рискованное исследование.

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

Что получилось в итоге: архитектура Uni‑Bond и цифры

Финальная архитектура Uni‑Bond устроена так: предобученный геометрический энкодер Uni‑Mol (~47M параметров) выдаёт для молекулы два вида представлений — атомные эмбеддинги и попарные (по каждой паре атомов). Для каждой кандидатной пары атомов их объединяют симметричной суммирующей операцией, конкатенируют с попарным представлением и подают в лёгкую MLP‑голову — всего около 74 тысяч обучаемых параметров, то есть основная тяжесть лежит на предобученном энкодере, а не на классификаторе поверх него.

Схема работы Uni-Bond
Схема работы Uni‑Bond

Отдельная инженерная деталь, которая радует своей простотой: чтобы связь между атомами i и j предсказывалась одинаково независимо от порядка, кандидатные пары рассматриваются только «в одну сторону» (i < j) — это математически гарантирует симметричность итоговой матрицы связей без дополнительного усреднения предсказаний.

Сравнивались на бенчмарке GEOM (scaffold split, то есть тест на молекулах с незнакомыми структурными «скелетами») с YuelBond, а также с эмпирическим алгоритмом из RDKit — популярной хемоинформатической библиотеки. Результат получился таким:

Модель

Macro F1

Exact Match

RDKit (эвристика)

0.973

89.9%

YuelBond (GNN, SOTA)

0.975

83.2%

Uni-Bond (заморож. энкодер)

0.9948

97.18%

Uni-Bond (полный файнтюнинг)

0.9997

99.53%

Относительно лучшего бейзлайна это снижение доли ошибок в точном предсказании молекулярного графа — exact match — примерно в 20 раз.

Отдельно интересна проверка на out‑of‑domain данных — кластерах воды, полипептидах из SPICE и молекулярных димерах, то есть на структурах, которых модель вообще не видела при обучении. Тут результат неоднозначный и честный: RDKit по‑прежнему силён на некоторых из этих доменов (например, идеально угадывает связи в кластерах воды), а Uni‑Bond увереннее там, где нужно отличать настоящую ковалентную связь от «ложной» — например, в димерах, где молекулы просто близко расположены друг к другу, но не связаны химически.

Показательный момент — как раз на кластерах воды: у YuelBond там неплохой F1 (0.87), но exact match — ровно 0%. Модель верно находит все внутримолекулярные связи, но при этом «дорисовывает» лишние связи между соседними, физически не связанными молекулами — то есть один ложный «мостик» ломает весь предсказанный граф целиком. Uni‑Bond этой проблемы избегает благодаря контекстным попарным представлениям энкодера, а не чисто локальной геометрии.

А что стало с изначальной LLM‑идеей?

Идея прямой генерации SMILES не была отброшена — она стала отдельным, «параллельным» исследованием в статье. В финальной версии для этого использовалась дообученная через LoRA модель Galactica-1.3B с координатной токенизацией в духе BindGPT — координаты атомов превращались в последовательность токенов, а модель генерировала SMILES целиком, без промежуточного графа связей.

Наш пайплайн для генерации SMILES с помощью LLM
Наш пайплайн для генерации SMILES с помощью LLM

На данных того же распределения, что и обучающие, результат получился отличным: точное совпадение около 95%, валидность сгенерированных SMILES — выше 99.7%. Но при переносе на незнакомые данные (пептидоподобные молекулы SPICE) картина изменилась радикально: точное совпадение падало практически до нуля, хотя модель продолжала генерировать «валидные» с точки зрения химии молекулы.

Отдельный нюанс связан с хиральностью. На пептидах, где почти каждая молекула хиральна, если сравнивать только «скелет» молекулы без учёта пространственной конфигурации, совпадение доходило до 56%. Но с учётом точной стереохимии — меньше 0.3%. Похоже, модель на GEOM (где хиральные молекулы — редкость) научилась не выводить конфигурацию из самой геометрии, а угадывать её по «похожести» на знакомые скелеты — а на пептидах этот трюк перестаёт работать. Хороший урок: высокая метрика на своём распределении данных ничего не говорит о том, действительно ли модель научилась использовать вход (координаты), а не подсматривать шорткаты.

Путь к статье и воркшопу

Идея оформить результаты в статью появилась сразу после школы — податься на воркшоп при ICML была моя инициатива, и по тематике он показался наиболее близким к тому, чем мы занимались.

Отдельно уточню формулировку, чтобы не путать

International Conference on Machine Learning (ICML) — одна из немногих ML‑конференций высшего ранга (A* по общепринятым рейтингам вроде CORE). В 2026 году это была 43 по счёту ICML, и прошла она в Сеуле. Наша статья принята не в основной трек конференции, а на воркшоп Graph Foundation Models, который проходит в её рамках. То есть корректнее говорить «воркшоп при топовой конференции уровня A*», а не «воркшоп ранга A*» сам по себе.

Текст статьи писали втроём — работа довольно естественно разбивалась на отдельные подсекции, так что с распределением, кто что пишет, проблем не возникло. Менторы тоже подключались: помогали править текст и писали отдельные разделы.

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

Узнал я об этом, если честно, довольно буднично: проверял рабочую почту и наткнулся на долгожданное «письмо счастья» о принятии. Разумеется, весь оставшийся рабочий день прошёл в приподнятом настроении.

Сеул, постер и первая большая конференция

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

Мы с Пашей у нашего постера на воркшопе
Мы с Пашей у нашего постера на воркшопе

Что это дало лично мне

Мне нравится держаться на стыке нескольких областей, даже если баланс между ними даётся нелегко — кажется, именно так получается чуть раньше других приносить что‑то новое из одной дисциплины в другую. До этого проекта я знал, что область AI for Science существует, но не представлял, насколько она огромна — и речь не только о химии, а о естественных науках в целом. Отдельная мысль, которая не отпускает: сколько учёных до сих пор не используют возможности AI в своей работе, хотя это дало бы их исследованиям серьёзный буст.

Наверное, самое главное, чему меня научил этот проект, — никогда не сдаваться. Хотя я и придерживаюсь этой позиции ещё со времён поступления в вуз, история с Uni‑Bond стала лишним подтверждением: для исследователя это качество, кажется, одно из самых важных.

Хотелось бы поблагодарить летнюю школу AIRI и Центр ИИ НИУ ВШЭ за предоставленные вычислительные ресурсы.

Комментарии (0)