
Продолжаем обсуждать примечательные инструменты для автоматизации и управления рабочими процессами (и напоминаем про MWS Tables — платформу для командной работы, включающую таблицы, трекер задач, отчётность и другие инструменты, собранные в одном сервисе; можно легко создать рабочее пространство для себя или небольшой команды).
Сегодня рассмотрим узкоспециализированные решения для различных областей знаний: Covalent, Cromwell, Cylc и Martian. Эти решения используются для высокопроизводительных вычислений, в работе с квантовыми алгоритмами, климатическом моделировании и анализе медицинских данных.
Covalent

В 2022 году стартап Agnostiq представил собственное решение для управления рабочими процессами, заточенное под высокопроизводительные и квантовые вычисления — python-библиотеку Covalent. Изначально она предназначалась для внутреннего использования, чтобы команда могла заниматься прототипированием и проводить эксперименты в своей области. Однако авторы поспешили поделиться своей разработкой с комьюнити и выложили проект по лицензии Apache 2.0.
Разработчикам систем ИИ и исследователям в области машинного обучения Covalent позволяет выполнять ресурсоёмкие задачи в облачных средах. Дата-сайентистам фреймворк предлагает возможность подключаться к этим вычислительным ресурсам.
Covalent дробит рабочие процессы на модули, тем самым упрощая работу с ресурсоёмким, но повторяющимся кодом. Также инструмент помогает подбирать оптимальные аппаратные ресурсы для каждой задачи, учитывая заданные пользователем параметры и ограничения.
Сам планировщик можно адаптировать под конкретные задачи с помощью плагинов. Авторы даже подготовили несколько примеров с конфигурациями: например, для создания генератора синтетических данных или масштабирования гибридных квантово-нейросетевых моделей на GPU.
Проект имеет обширную документацию, в которой не только описаны возможности инструмента, но также имеется компактная вики с ключевыми концепциями.
Cromwell
Этот инструмент написан на Scala. Он предназначен для организации сложных вычислений в биоинформатике. Распространяется под лицензией BSD 3-Clause. В частности, его можно применить в проектах, связанных с секвенированием ДНК и РНК. В последних версиях планировщик работает исключительно с декларативным языком описания рабочих процессов WDL.
Разработка Cromwell стартовала примерно в середине 2010-х годов в одном из крупнейших центров биомедицинских исследований — Институте имени Эли и Эдит Л. Броуд при MIT и Гарварде. К тому времени местные секвенсоры ежедневно генерировали порядка 20 ТБ данных. Для их обработки специалистам потребовался высокопроизводительный планировщик, и команда института представила Cromwell.
Позже этот инструмент вошёл в стек альянса больниц и исследовательских учреждений — Melbourne Genomics. По словам представителей организации, Cromwell улучшил масштабируемость их системы геномного тестирования. Впоследствии разработчики Cromwell стали сотрудничать с биотех-организацией Verily для развития open source решений в области бионаук.
Martian
Язык и фреймворк для выполнения сложных вычислительных пайплайнов. Martian был разработан в 10xGenomics — биотех-компании, специализирующейся на создании технологий секвенирования. Там этот инструмент играет ключевую роль, обеспечивая работу более 30 пайплайнов.
Прототип Martian написали на JavaScript и Node.js, с Jison в качестве генератора парсеров. В дальнейшем Martian переписали на Go, а Jison заменили на goyacc. Как пишут авторы, фреймворк разработан с прицелом на простоту: минималистичный синтаксис и понятная структура, прозрачная логика работы.
Ключевой элемент фреймворка — stage (звено). Ввод каждого звена связан с выводом другого, формируя пайплайн в виде ациклического графа. Пример описания звена:
stage SORT_ITEMS(
in txt unsorted,
in bool case_sensitive,
out txt sorted,
src py "stages/sort",
)
Подробная документация, дополнительные примеры кода и описание всех концепций доступны на официальном сайте Martian.
Cylc

Универсальный планировщик рабочих процессов (лицензия GPL-3.0), разработанный для автоматизации систем прогнозирования погоды. Он применяется в метеорологических службах по всему миру.
В основе Cylc лежат два ключевых принципа: распределение и децентрализация. Каждый workflow выполняется независимо и управляется собственной серверной программой, что обеспечивает масштабирование.
Инструмент работает как с классическими Directed Acyclic Graphs (DAG), так и с циклическими процессами. Эта особенность полезна в тех случаях, когда повторяющиеся задачи зависят от результатов предыдущих запусков.
В то же время Cylc позволяет настраивать задачи с разными интервалами и сложными межцикловыми зависимостями. Пользователи могут контролировать процессы с помощью графического (GUI) или терминального интерфейса (TUI). С их помощью легко отслеживать выполнение задач, вносить изменения в конфигурации и анализировать логи.
Для желающих познакомиться с инструментом поближе, хорошей отправной точкой станет документация. Она достаточно исчерпывающая, поэтому её изучение может занять продолжительное время. Там описана установка и настройка, есть руководства по созданию и запуску рабочих процессов с примерами, компактные шпаргалки (cheat sheets), охватывающие большинство ключевых команд Cylc, и многое другое.
alexmihajlov
По заголовку статьи ожидал увидеть что-то типа про планировщики процессов epoll и kqueue