NVIDIA представила BioNeMo Inference Runtime (BioIR): в 2,90 раза выше пропускная способность сворачивания Boltz-2 и 58,5 тыс. остатков на GPU-час при 8xH100
Предсказание биомолекулярных структур перешло от отдельных запусков для одной цели к рабочим спискам протеомного масштаба. Узким местом больше не является вопрос о том, может ли модель свернуть белок. Вопрос в том, насколько быстро вся очередь независимых целей проходит через разбор, построение признаков, GPU-инференс и запись результатов. Новый технический разбор NVIDIA рассказывает о BioNeMo Inference Runtime (BioIR) — библиотеке Python, которая ускоряет поддерживаемые модели предсказания структур на GPU NVIDIA, сохраняя стандартный рабочий процесс PyTorch. BioIR уже работала в производственном масштабе. Она использовалась для недавнего расширения базы данных AlphaFold, в рамках которого были сгенерированы структуры белковых комплексов для 4 777 протеомов — около 31 миллиона предполагаемых комплексов, из которых 1,81 миллиона были опубликованы как высоконадёжные предсказания.
Можно ли её развернуть? Да. BioIR уже доступна в виде открытого репозитория на GitHub с wheel-пакетом, содержащим предварительно скомпилированные CUBIN-файлы. Для работы необходимы Python 3.12 или новее, совместимые GPU и драйвер NVIDIA, подготовленный чекпойнт модели и A3M MSA для каждой цепи. nvcc, исходный код CUDA, CMake или CUDA Toolkit не требуются.
Что такое BioIR
BioIR оптимизирует операции, которые универсальные стеки инференса оптимизируют не полностью. К ним относятся стеки Pairformer и Evoformer, треугольные операции, попарное внимание, диффузионные трансформеры и модули на уровне атомов. Модели остаются обычными объектами torch.nn.Module. Между чекпойнтом и прямым проходом нет ни сборки движка, ни этапа экспорта, ни отдельного артефакта.
Использовать BioIR можно двумя способами. Сквозной процессор проводит InputRequest через разбор, токенизацию, генерацию признаков, GPU-инференс и запись в PDB или mmCIF. Прямая интеграция с PyTorch позволяет разработчикам создавать поддерживаемую модель или повторно использовать выбранные оптимизированные модули в пользовательском коде. В руководстве демонстрируется путь через процессор с Boltz-2 (model_source="boltz-2"). Для каждой белковой цепи требуется A3M MSA. Для входных данных с несколькими неодинаковыми белковыми цепями принимаются парные или непарные MSA. Шаблоны можно указывать вручную, поскольку BioIR не запускает HHsearch или HMMsearch. Процессор поддерживает предсказание структуры лиганда, но не предсказание аффинности лиганда.
Три уровня ускорения
BioIR оптимизирует систему на 3 отдельных уровнях, каждый из которых нацелен на своё узкое место:
- Выбор ядер: поддерживаемые операции выбирают совместимые пользовательские реализации BioIR, cuEquivariance или резервные реализации PyTorch на основе конфигурации модели, GPU, типа данных и формы тензора.
- Оптимизация модулей: отдельный механизм
optimize()позволяет захватывать CUDA Graph для совместимых модулей, сокращая накладные расходы на запуск. - Масштабирование конвейера: исполнитель Ray размещает по 1 полной реплике модели на каждом видимом GPU узла и распределяет между ними независимые входные данные. Этапы на CPU (разбор, построение признаков, запись) выполняются параллельно со сворачиванием на GPU.
Примечание: Ray не распределяет один прямой проход между несколькими GPU. Режим реплик масштабирует рабочие списки, а не отдельные цели. Согласно матрице поддержки, сворачивание с параллелизмом по контексту запланировано, но пока недоступно. Правило расчёта ёмкости простое: engine_stage.compute x num_gpus не должно превышать число видимых GPU.
На уровне прямого прохода модели в ранних бенчмарках NVIDIA сообщается о среднегеометрическом ускорении по сравнению с базовой реализацией OSS torch.compile в 1,55 раза (OpenFold3), 1,78 раза (Boltz2) и 2,56 раза (OpenFold2 monomer) на H100. Показатели на H200 аналогичны: 1,54, 1,75 и 2,61 раза. Измерения проводились на 17 входных данных размером от 29 до 1 734 остатков.
Бенчмарк: 1 000 человеческих димеров на 8xH100
Чтобы оценить сквозную обработку, команда NVIDIA провела сопоставимый бенчмарк на 1 000 целей — человеческих димеров с суммарной длиной последовательности менее 2 800 остатков. В сравнении сопоставлялись Boltz-2, ускоренная с помощью BioIR, и скомпилированная с помощью torch реализация Boltz-2 с открытым исходным кодом на 8 GPU H100 с 80 ГБ памяти. Для обеих систем использовались одинаковые цели, подготовленные MSA, схема инференса (3 повторных цикла, 200 шагов выборки, 5 диффузионных образцов) и конфигурация GPU.
Результаты:
- BioIR обработала все 1 000 целей и обеспечила 58,5 тыс. успешно свернутых остатков на выделенный GPU-час.
- Публичная реализация обеспечила 20,2 тыс. остатков на GPU-час и завершилась из-за нехватки памяти на 29 целях.
- Итог: 2,90-кратное улучшение пропускной способности с нормировкой по числу остатков.
Эти показатели относятся к этапу сворачивания и специфичны для данного набора данных и оборудования. Они не включают генерацию MSA, выделение ресурсов CPU для предварительной обработки, хранение, передачу данных и повторные попытки. В блоге прямо предупреждается, что эти результаты не следует обобщать на все модели или наборы данных, поддерживаемые BioIR.
Энергопотребление при обработке миллиона целей
При линейной экстраполяции бенчмарка на 1 миллион сопоставимых целей, по оценкам, BioIR потребуется 11 МВт·ч против 35 МВт·ч для публичной реализации при использовании эквивалентов TDP для 8 GPU. При использовании эквивалентов максимальной мощности всего узла оценка составляет 21 МВт·ч против 64 МВт·ч. Это оценки по номинальной мощности только для этапа сворачивания IT-оборудования, а не измерения по счётчику; они не учитывают накладные расходы дата-центра, такие как PUE. Тем не менее экономия в размере от 23 до 43 МВт·ч на миллион целей — существенный показатель для кампаний протеомного масштаба.
Ключевые выводы
- BioIR ускоряет инференс Boltz-2, OpenFold2 и OpenFold3 на GPU NVIDIA, сохраняя использование обычного PyTorch.
- Сопоставимый бенчмарк на 8xH100: 58,5 тыс. против 20,2 тыс. свернутых остатков на GPU-час, прирост пропускной способности в 2,90 раза.
- Режим реплик Ray масштабирует независимые рабочие списки; он никогда не распределяет 1 прямой проход между несколькими GPU.
- Расчётное энергопотребление для 1 млн целей снижается с 35 до 11 МВт·ч при использовании эквивалентов TDP для 8 GPU.
- Масштаб уже подтверждён на практике: для расширения базы данных AlphaFold было сгенерировано 31 млн предполагаемых комплексов.
Ознакомьтесь с техническим блогом, репозиторием на GitHub, документацией и BioNeMo Agent Toolkit для агентской оркестрации. Также подписывайтесь на нас в Twitter и не забудьте присоединиться к нашему сабреддиту о машинном обучении с аудиторией 150 тыс. пользователей и подписаться на нашу рассылку. Стоп! Вы есть в Telegram? теперь вы также можете присоединиться к нам в Telegram.
Хотите сотрудничать с нами в продвижении вашего репозитория на GitHub, страницы на Hugging Face, релиза продукта, вебинара и т. д.? Свяжитесь с нами
Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.