Масштабируемый поиск биологической эволюции с помощью MMseqs2 на AMD

Источник: AMD•

Масштабируемый поиск биологической эволюции с помощью MMseqs2 на AMD

Графические процессоры AMD Instinct ускоряют поиск последовательностей белков и создание MSA с помощью MMseqs2 и HIPSW++, достигая 97 TCUPS на восьми GPU MI325X.

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

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

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

Чтобы ускорить этот критический этап рабочего процесса на платформах AMD, мы разработали два взаимодополняющих пути с открытым исходным кодом для GPU: HIPSW++ для точного вычисления выравнивания Смита-Ватермана и MMseqs2-GPU с поддержкой ROCm для высокопроизводительного поиска гомологов и генерации MSA.

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

Эволюционные вычисления перед прогнозированием ИИ

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

Рис. 1: Зависимость данных в алгоритме Смита-Ватермана с использованием двух белковых последовательностей длиной шесть.

Однако ячейки вдоль одной антидиагонали независимы, как только завершены предыдущие диагонали (рис. 1). Это обеспечивает волновой параллелизм, позволяя многим потокам GPU продвигаться по матрице одновременно, сохраняя при этом точность алгоритма.

HIPSW++: Точное выравнивание, переработанное для GPU AMD

HIPSW++ ускоряет точное выравнивание Смита-Ватермана с аффинными штрафами за гэпы. Вместо того чтобы просто переносить реализацию с CPU на GPU, он перестраивает вычисления с учетом архитектуры GPU AMD.

Волна потоков совместно обрабатывает каждую матрицу выравнивания. Промежуточные значения по возможности остаются в локальных регистрах потоков, что снижает нагрузку на память. Соседние потоки обмениваются граничными значениями с помощью инструкций перетасовки (shuffle) внутри волны, в то время как матрицы подстановок размещаются в локальной памяти данных (LDS) с шаблонами доступа, разработанными для минимизации конфликтов банков памяти (рис. 2).

Это открывает два уровня параллелизма:

  • Внутри одного выравнивания потоки работают вместе над матрицей динамического программирования.
  • Между выравниваниями независимые пары последовательностей распределяются между множеством волн.

В совокупности эти методы позволяют эффективно использовать как вычислительные блоки, так и систему памяти.

Рис. 2: HIPSW++ отображает тайловую матрицу динамического программирования на волну GPU, сохраняя большую часть состояния в регистрах и используя операции перетасовки для межпоточного взаимодействия.

MMseqs2: Раннее исключение маловероятных совпадений

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

Наша реализация MMseqs2 с поддержкой ROCm ускоряет фильтр выравнивания без гэпов. По сравнению со Смитом-Ватерманом, структура зависимостей здесь проще: каждая ячейка зависит только от своего соседа по диагонали слева сверху (рис. 3).

Такая более простая зависимость обеспечивает значительно больший параллелизм. Многие ячейки в строке могут быть оценены одновременно, что позволяет обрабатывать матрицу построчно на GPU. Реализация с поддержкой ROCm сочетает это построчное выполнение с подходом разбиения матрицы, аналогичным HIPSW++. Реализация также поддерживает выполнение на нескольких GPU, равномерно распределяя используемую базу данных последовательностей между различными GPU AMD на одном сервере.

Рис. 3: Зависимости данных и тайловая компоновка матрицы динамического программирования для фильтра без гэпов MMseqs2 на GPU.

Масштабирование MMseqs2 на GPU AMD Instinct

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

Мы сравниваем сканирование базы данных Uniref50 с помощью MMseqs2 с одной поисковой последовательностью на одном, двух, четырех и восьми GPU AMD Instinct MI325X, MI300X и NVIDIA H100. Для контекста также показаны результаты работы MMseqs2 и JackHMMER на базе CPU EPYC 9684X (96 ядер / 192 потока) (рис. 4).

Рис. 4: Производительность MMseqs2 при сканировании UniRef50 на системах с GPU AMD Instinct MI325X, MI300X и NVIDIA H100, а также измерения для MMseqs2 и JackHMMER на базе CPU.

В ходе этого тестирования MMseqs2 с поддержкой ROCm масштабировался с каждым дополнительным GPU, достигая до 97 TCUPS на восьми GPU MI325X. Во всех протестированных конфигурациях с 1, 2, 4 и 8 GPU показатели MI325X превосходили соответствующие результаты H100, а MI300X был сопоставим с H100 или превосходил его. Реализации на GPU также обеспечили значительно более высокую пропускную способность, чем MMseqs2 и JackHMMER на базе CPU. Такое масштабирование на несколько GPU дает исследователям практический путь к ускорению поиска все более длинных последовательностей без существенных изменений кода.

Ускорение всего пути к биологическим открытиям

ИИ меняет то, как мы предсказываем структуры белков и проектируем биологические молекулы.

Но модель ИИ — это лишь одна часть конвейера.

Эволюционный поиск предоставляет важный биологический контекст до начала прогнозирования структуры. HIPSW++ и MMseqs2-GPU с поддержкой ROCm привносят две важные рабочие нагрузки по поиску последовательностей на GPU AMD Instinct с помощью реализаций с открытым исходным кодом, разработанных для производительности и масштабируемости.

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

Изучите репозиторий MMseqs2 для поиска гомологов и генерации MSA с ускорением на GPU AMD, а также HIPSW++ для выравнивания Смита-Ватермана с ускорением на GPU.

Примечания

[1] На основе внутреннего тестирования, проведенного 21 сентября 2026 года. Тестируемое программное обеспечение: MMseqs2 ROCm (коммит d401e78, https://github.com/soedinglab/MMseqs2/commit/d401e78c2d18a822cdb1527d7464a043f6035a15), собранное с флагом CMake ENABLE_HIP=1; MMseqs2 CUDA, предварительно скомпилированная бинарная версия 73e15d1e4d870c5e0019afd27c1bdfe969f23c35 (https://github.com/soedinglab/MMseqs2/releases); HMMER v3.4 (http://eddylab.org/software/hmmer/hmmer.tar.gz), собранное с параметрами по умолчанию. Рабочая нагрузка: 1024 конкатенированных повторения третьей последовательности из QUERY.fasta (https://github.com/soedinglab/MMseqs2/blob/master/examples/QUERY.fasta), выровненных по базе данных UniRef50 (релиз: март 2025 г.; размер: ~20 ГБ). Параметры выполнения: --gpu 1 для тестов MMseqs2 GPU; --prefilter-mode 1 для теста MMseqs2 на многоядерном процессоре; HIP_VISIBLE_DEVICES / CUDA_VISIBLE_DEVICES использовались для выбора 1, 2, 4 и 8 графических процессоров. Условия измерения: время загрузки данных, инициализации и предварительной обработки включено; управление NUMA использовалось для ограничения выполнения на многоядерном процессоре одним сокетом; время сборки базы данных исключено; представленные значения отражают лучший результат из трех запусков. Тестовые системы: система MI300X (использовалась для тестов MI300X и многоядерных процессоров) — 8× AMD Instinct MI300X (OAM, 192 ГБ HBM3), AMD EPYC 9684X (96 ядер / 192 потока), 256 ГБ ОЗУ, Rocky Linux 9.6 (Blue Onyx), Linux 5.14.0-611.54.1.el9_7.x86_64, amdgpu 6.16.13, ROCm 7.2.0; система MI325X — 8× AMD Instinct MI325X (OAM, 192 ГБ HBM3), 8× AMD EPYC 9755 (128 ядер / 128 потоков), 2,8 ТБ ОЗУ, Rocky Linux 9.1 (Blue Onyx), Linux 5.14.0-611.54.1.el9_7.x86_64, amdgpu 6.16.13, ROCm 7.2.0; система H100 — 8× NVIDIA H100 (SXM, 80 ГБ HBM3), NVIDIA Grace 72 Arm Neoverse V2 (72 ядра / 72 потока), 960 ГБ ОЗУ, AlmaLinux 8.10 (Cerulean Leopard), Linux 4.18.0-553.100.1.el8_10.x86_64, драйвер NVIDIA 590.48.01, CUDA 13.4. Конфигурации систем могут различаться; результаты могут отличаться.

О чём эта статья

Ещё в разделе «Hardware и электроника»

Все →

Ещё от AMD