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

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

Сегодня квантовые вычисления находятся на стадии между выходом из стен исследовательских учреждений и готовностью к промышленной эксплуатации — они обещают обеспечить стремительное развитие науки о данных, а также успехи в области распознавания шаблонов и в сфере информационной безопасности [1–3]. Однако разработка ПО для квантовых компьютеров сдерживается отсутствием наработанных методов и недостаточной масштабируемостью [2].

Квантовые вычисления

В основе квантовых компьютеров лежат явления атомного уровня, в частности спин электронов [1]. Для вычислений применяются квантовые биты (кубиты) — биты, находящиеся в состоянии суперпозиции. Двоичная единица информации всегда находится в одном из двух состояний: либо 0, либо 1. А кубит пребывает в суперпозиции этих состояний.

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

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

С алгоритмической точки зрения квантовые вычисления позволяют решать задачи большей сложности, чем классические компьютеры, причем быстрее и с меньшими энергозатратами. Первые квантовые компьютеры были построены еще в конце 1990-х годов. Для практической работы используются квантовые симуляторы, в которых выполнение квантовых алгоритмов имитируется на классическом оборудовании (центральных процессорах), а также физические квантовые компьютеры с процессорами на базе кубитов, которые реализуются с помощью различных технологий: ионных ловушек, сверхпроводимости, фотонов и пр. [1].

Стек квантового ПО и оборудования

Квантовые компьютеры в основном работают на одном из двух принципов (см. рисунок): квантовый отжиг (например, компьютеры D-Wave, которые подходят для решения задач оптимизации), при котором поиск наибольшего или наименьшего значения показателя позволяет свести к минимуму энергию системы; квантовый вентиль (например, компьютеры, построенные компаниями Google, IBM, Rigetti, IonQ и Honeywell). Особенности компьютера сильно влияют на методы разработки приложений. Существуют два класса подходов: основанные на построении бинарных квадратичных моделей для решения задачи и основанные на построении вентильных квантовых схем.

Поставщики квантового оборудования (например, IBM, Rigetti и Google) уже построили лабораторные системы примерно на 100 кубит — впечатляющее количество, демонстрирующее, насколько быстро развивается область. Однако для выполнения реальных приложений этого еще недостаточно, поэтому в нынешних квантовых приложениях реальный аппаратный стек пока отделяется от программного (см. рисунок).

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

Применение квантовых вычислений

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

К минусам можно отнести то, что массово-параллельные алгоритмы позволят с гораздо меньшими усилиями взламывать любые существующие на сегодня криптографические ключи. К примеру, квантовый алгоритм Шора позволяет раскладывать большие целые числа на простые множители. Его применение позволило бы взламывать многие системы шифрования, в связи с тем что широко применяемый криптографический алгоритм Ривеста — Шамира — Адлемана (RSA) как раз опирается на сложность факторизации больших целых чисел. Уже сегодня разработчики систем шифрования, предвидя появление квантового взлома, сильно увеличивают длину ключа. Начаты исследования в области постквантовой криптографии: разрабатываются методы шифрования, которые будут не по зубам даже очень большим квантовым компьютерам. В большинстве криптовалют используется шифрование на эллиптических кривых (Elliptic Curve Digital Signature Algorithm, ECDSA), а не RSA, поскольку оно считается более сложным для взлома (по крайней мере, с применением классических компьютеров), — в электронных валютах на основе блокчейна применяется цифровая подпись на базе алгоритма ECDSA. Правда, похоже, что квантовые компьютеры способны бросить вызов и ECDSA. При достаточном количестве кубитов квантовый алгоритм Гровера позволяет взломать шифр на эллиптических кривых с еще меньшими усилиями, чем шифр RSA. А с учетом того, что алгоритм Гровера также обещает ускорить майнинг, еще одно возможное применение квантовых компьютеров — замена графических процессоров, программируемых логических матриц и заказных СБИС, которые сейчас используются для этой цели.

Разрабатываются новые протоколы квантовых вычислений, направленные на повышение безопасности путем шифрования клиентом своих данных таким образом, чтобы хост-система или облачный компьютер не смогли их расшифровать, но выполняли бы над ними необходимые вычисления. После обработки клиент расшифровывает данные и получает реальные результаты вычислений. Так что еще одно применение квантовых технологий — ускорение работы сетевых алгоритмов с помощью запутанных кубитов, когда они могут совместно выполнять вычисления независимо от расстояния между ними [1]. Эта область исследований только начинает развиваться: в экспериментах в запутанное состояние приводят лишь несколько кубитов, находящихся на расстоянии метра друг от друга. Однако перспективы потрясающие, а без физических сетей эффект был бы еще более ощеломляющим.

Если следовать аналогии с законом Мура, достаточно большие квантовые компьютеры должны появиться уже через несколько лет. Алгоритм Шора работает с квантовыми компьютерами, имеющими 10–100 тыс. кубитов. Для использования алгоритма Гровера при поиске по базе данных и взломе ECDSA, понадобится приблизительно 100 тыс. кубитов. Чтобы прийти к этому, нужны устойчивый рост и преодоление специфических проблем, в том числе связанных с «шумом» и ошибками, которые вызываются квантово-механическими явлениями, описанными в мысленном эксперименте с котом Шредингера: наблюдение за состоянием суперпозиции влияет на результат. С учетом ожидаемого экспоненциального роста квантовых компьютеров, сегодня пришло время подготовить ПО и ИТ-системы к эре квантовых вычислений — в частности, разработать постквантовые криптографические механизмы.

Разработка ПО

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

На рисунке квантовые программные платформы обозначены цветом. Они предлагают следующие возможности и ресурсы:

  • доступ к квантовым компьютерам для выполнения на них вычислений через облачные сервисы;
  • слои абстрагирования между оборудованием и приложениями, в том числе библиотеки, помогающие работать с реальным квантовым компьютером или симулятором;
  • комплекты разработчика и вычислительные платформы, помогающие в освоении квантового программирования;
  • содействие в разработке и тестировании квантовых алгоритмов;

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

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

Программная инженерия квантовых компьютеров

Программная инженерия квантовых компьютеров

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

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

Microsoft, IBM и Google предлагают среды для квантовых компьютеров — Q#, Qiskit и Cirq соответственно. Во всех них в качестве языка программирования используется Python. В составе комплекта разработчика Microsoft Quantum Development Kit (QDK) есть библиотеки кода, отладчик и инструмент, помогающий оценить количество кубитов, которое понадобится для выполнения конкретного алгоритма. У каждого производителя — свои правила доступа к средам и версии одобренных языков. IBM предоставляет бесплатный доступ к компьютеру с пятью кубитами, а ее более мощные системы доступны в рамках сервиса Quantum Network. Microsoft предоставляет доступ к квантовым компьютерам других компаний на своей облачной платформе Azure Quantum.

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

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

В таблице перечислены атрибуты и возможности таких платформ. В строке «Работоспособность “из коробки”» указано, является ли инструментарий самостоятельным или для его использования необходимо дополнительно устанавливать стороннее ПО. Что касается интеграции с сервисами, все платформы предоставляют API для выполнения квантовых схем в случае компьютеров на базе квантовых вентилей или для выполнения решающих программ, если компьютер — на основе квантового отжига.

Трудности разработки ПО

Разработка ПО для квантовых компьютеров требует дополнительных навыков по сравнению с созданием традиционного. Учитывая высокие темпы эволюции квантового оборудования, необходимо активно развивать технологии и методы создания ПО для квантовых систем. Недостаточно только подчеркивать значимость такого ПО [1] — нужно продвигать дисциплину его инженерии. Параллельное развитие оборудования и ПО будет возможным, если работать с различными слоями сложных систем с использованием симуляции и дробления на меньшие компоненты [3].

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

Квантовые программные платформы и инструментарии пока еще сложны для практического применения, они не обеспечивают контекстуальную поддержку при разработке алгоритмов. Предполагается, что разработчик уже знает, каким образом задействовать каждый продукт на соответствующей платформе. Вместе с тем доступны наборы алгоритмов для квантового ПО — например, обширный каталог Quantum Algorithm Zoo. Однако, чтобы иметь возможность работать с различным квантовым оборудованием, необходимы знания о требованиях и библиотеках каждой архитектуры.

Перспективы

Программные и системные технологии квантовых вычислений будут развиваться быстрыми темпами, влияя на такие области, как нанотехнологии, биотехнологии и геномика [3]. Уже сегодня можно применять колоссальные вычислительные возможности квантовых компьютеров для решения задач, ранее считавшихся неподвластными классическим компьютерам. Квантовые системы ускоряют выполнение алгоритмов, требующих массово-параллельных вычислений, что позволяет более точно моделировать природные явления. В результате появятся принципиально новые разработки, обещающие принести немалую пользу.

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

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

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

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

***

Создатель основ квантовой механики Нильс Бор когда-то сказал: «Если квантовая теория не потрясла тебя, ты ее еще не понял». Это верно и сейчас, особенно по отношению к использованию квантово-механических явлений при разработке ПО. До создания качественных квантовых приложений еще предстоит пройти долгий путь, но начинать его надо уже сейчас. Чтобы разработка ПО перешла от исследовательской стадии к отраслевому применению, нужны постоянно развивающиеся, надежные методы программной инженерии, как это происходит с agile-разработкой.

Литература

1. J. D. Hidary. Quantum Computing: An Applied Approach. New York: Springer, 2019.

2. Quantum Software Manifesto. URL: https://www.qusoft.org/quantum-software-manifesto (дата обращения: 20.06.2021).

3. C. Ebert, B. Tavernier. Technology trends: Strategies for the new normal // IEEE Software. — 2021. — Vol. 38, N. 2. — P. 7–14. doi: 10.1109/MS.2020.3043407.

Хосе Луис Эвиа (jluis.hevia@alhambrait.com) — директор по квантовым технологиям, Гвидо Петерсен (guido.peterssen@alhambrait.com) — главный инженер по квантовым технологиям, Alhambra IT;  Кристоф  Эберт (christof.ebert@vector.com) — старший научный сотрудник IEEE; Марио Пьяттини (mario.piattini@uclm.es) — директор по исследованиям в области квантовой механики Alarcos Research Group.

Jose Luis Hevia, Guido Peterssen, Christof Ebert, Mario Piattini, Quantum Computing. IEEE Software, September/October 2021, IEEE Computer Society. All rights reserved. Reprinted with permission.