Русский
Русский
English
Статистика
Реклама

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

Перевод Забытый криотронный компьютер Дадли Бака

07.08.2020 18:11:02 | Автор: admin
В 1950-х годах аспирант Массачусетского технологического института убеждал инженеров создавать компьютеры с использованием сверхпроводящих магнитных переключателей вместо ламп или транзисторов.

Изобретение Бака пережило творца. Более того, оно живо и по сей день: криотрон лежит в основе проектов IBM по созданию сверхпроводящих кубитов.

Тем не менее, десятилетия работы над криотроном затерялись на страницах истории компьютеростроения. Многие современные инженеры даже не слышали об этой технологии. Давайте поговорим о работе Бака и его ныне забытом криотронном компьютере.



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

Недолго думая, из множества вариантов они выбрали электронные лампы для использования в качестве основного логического переключателя. При этом, чтобы построить всего одну машину, требовались тысячи этих ламп. Транзисторы тогда всерьез никто не рассматривал они только-только были разработаны Bell Telephone Laboratories.

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

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

Одним из самых примечательных радикальных ученых был Дадли Аллен Бак. Он работал в МТИ с 1950 по 1959 год вплоть до своей трагической смерти в возрасте 32 лет. Он успел сделать важный вклад в ранние исследования в области создания микросхем. Кроме того, ему принадлежит разработка криотрона сверхпроводящего переключателя. По мнению Бака, его детище должно было стать основным строительным блоком для всех цифровых компьютеров будущего. Ему поверили гиганты: GE, IBM, RCA и военные ведомства США. В конце 1950-х были развернуты крупные исследовательские проекты, посвященные криотрону. Завершились они только после того, как индустрия однозначно выбрала преемника ламп кремниевые микрочипы.


Сделано вручную: Бак создал множество прототипов, включая схему мультивибратора [крупный план, cверху], схема которого состоит из 19 отдельных криотронов [cнизу].



В 1948 году Дадли Бак получил степень бакалавра в области электротехники Вашингтонского университета. Его первым местом работы стала криптологическая организация ВМС США. Там он познакомился с первыми цифровыми компьютерами. В 1950 году он устроился в Массачусетский технологический институт и поступил в аспирантуру по электротехнике к физику Артуру фон Хиппелю. Баку довелось поучаствовать в проекте Whirlwind Массачусетского технологического института технологического монстра, предназначенного для военных целей.

Джей Ласт, аспирант Бака в МТИ, впоследствии возглавивший команду создателей первой планарной кремниевой интегральной схемы Fairchild Semiconductor, вспоминает его как великого провидца и хорошего человека до неприличия хорошего. Подтверждение впечатлению Ласта можно найти в письме Бака, написанном в 1954 году, когда ему было всего 27 лет:
У меня есть приемный сын. Из своих 17 лет 4 он прожил со мной. 6 лет я был скаутмастером, а теперь хожу в методистскую церковь. Иногда по воскресеньям я даже встаю за кафедру. Я одинаково люблю работать и с человеческими, и с инженерными ценностями.

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

А 1952 году внимание Бака привлек химический элемент висмут, известный сильным магнитным сопротивлением: его удельное электрическое сопротивление резко возрастает в ответ на магнитное поле, особенно при низких температурах. При температуре кипения жидкого гелия (4,2 кельвина) электрическое сопротивление висмута изменяется в десятки миллионов раз при приложении сильного магнитного поля. Такое поведение может быть полезно для сборки компьютеров подумал Бак. Относительно небольшой ток в контрольном проводе и создаваемое им магнитное поле могут вызвать огромное изменение удельного сопротивления висмута, внезапно запретив или позволив току проходить через него. Это будет настоящий электронный переключатель!

К 1954 году Бак обратил внимание на еще более интересное свойство электромагнетизма, обнаруженное при низких температурах жидкого гелия: сверхпроводимость. Это явление, хотя и своеобразное, уже было изучено ранее. С начала XX века физикам было известно, что при охлаждении до температур, близких к температуре кипения жидкого гелия, различные металлы полностью теряют свое электрическое сопротивление.

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

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

Бак в духе футуризма 1950-х назвал свое изобретение криотроном смесь слов cryo (, греч. ледяной холод, мороз) и electronics. Но придумать технологию и дать ей имя было мало. Бак моментально приступил к строительству и тестированию десятков прототипов.

Первые криотроны Бака были до умопомрачения просты. Состояли они из отрезка танталовой проволоки в тугой медной обмотке. К концам медной и танталовой проволоки были подключены электрические выводы, и криотрон погружался в контейнер с жидким гелием.

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

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

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

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


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

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



28-летний инженер, по сути, предложил уменьшить Whirlwind до размеров радиоприемника, погрузить его в ванну с жидким гелием и запустить. По его словам, компьютер будет потреблять столько же, сколько обыкновенная лампочка на рождественской елке. Заявление смелое, однако энтузиазм молодого ученого и крепкая аргументация убедили коллег дать его проекту зеленый свет.

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

Для памяти с адресацией по содержанию (позднейшее название) Бак предложил схему из 75 000 криотронов. Сам Бак назвал её recognition unit, так как каждая ячейка памяти проверялась на наличие в ней желаемой информации.

Такой вид памяти был полезен для криптоанализа, в котором важна идентификация шаблонов. Полностью собранный криотронный блок распознавания должен был быть не больше портфеля и при этом иметь сопоставимый с Whirlwind объем памяти 3,2 килобайта.

Когда в середине 1955 года Бак готовил патентную заявку на криотрон, слух о его работе по созданию адресуемой по содержанию памяти просочился в криптологические и компьютерные круги США, вызвав немалый ажиотаж. В июле того же года Джон Макферсон, вице-президент IBM и ведущий специалист в области электронных вычислений, написал Баку, что Уильям Фридман, главный криптолог АНБ, очень заинтересован в сверхпроводящих компонентах компьютера Бака. Спустя всего несколько дней криотрон (Magnetically Controlled Gating Element) был запатентован. В заявке содержался широкий список возможностей криотрона и вариантов применения его в компьютерах.

К этому моменту исследования Бака по криотрону вышли за пределы Массачусетского технологического института. Он подписал консалтинговое соглашение по технологии криотронов с исследовательской фирмой Arthur D. Little. Компания находилась в двух шагах от кампуса МТИ и в 1950-х годах была ведущим производителем криостатов для производства жидкого гелия. При спонсорской поддержке АНБ Бак и сотрудники из A.D. Little начали разработку криотронной памяти. Их первым совместным проектом был небольшой массив памяти для проверки концепции.

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

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

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

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


Сравним размеры: Бак держит на ладони прототип криотрона, электровакуумную лампу и транзистор.

К моменту публикации статьи в Proceedings of the IRE (апрель 1956 г.) тонкопленочные криотроны уже проходили испытания. Под руководством Бака инженер АНБ Альберт Слэйд начал собственные исследования криотронных схем.

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

Вплоть до своей смерти в 1959 году Бак активно занимался разработкой интегрированных криотронных микросхем. Альберт Слейд перевелся из АНБ в Arthur D. Little специально, чтобы работать над криотронной памятью. Другой специалист АНБ, Гораций Тарп Манн, при поддержке Бака занялся изучением тонкопленочных криотронов. В 1957 году IBM и RCA запустили собственные программы, финансируемые АНБ, по разработке высокоскоростного тонкопленочного криотрона. GE тоже не осталась в стороне, начав внутренние исследования. Бак, все еще бывший аспирантом МТИ, впервые столкнулся с жесткой конкуренцией.

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

Они проработали вместе до середины 1958 года. Бак получил докторскую степень и должность доцента на кафедре электротехники МТИ, а Шоулдерс перешел в Стэнфордский исследовательский институт в Менло-Парке.

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

Спустя всего пять месяцев после представления доклада Бак скоропостижно скончался. Последняя запись в его лабораторной записной книжке, датированная 18 мая 1959 года, описывает его попытку создать напыление из бора. 21 мая Бак умер от дыхательной недостаточности ему только-только исполнилось 32 года.

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


Фрагмент доклада Бака 1956 года.

Исследования криотрона со смертью Бака не закончились. Активные работы продолжались до 1960-х годов. Манн, который работал над тонкопленочными криотронами в АНБ, устроился в лабораторию космических технологий TRW в Лос-Анджелесе. Там вплоть до 1966 года он занимался электронно-лучевой литографией для создания тонкопленочных криотронов. Сотрудники A.D. Little также продолжали разрабатывать криотронную память, пытаясь воплотить идею Бака.

GE, IBM и RCA в начале 1960-х годов разрабатывали микросхемы тонкопленочных криотронов, в частности, для создания памяти. К 1961 году исследователи GE построили рабочий интегрированный сдвиговый регистр из тонкопленочных криотронов. В сложности он не уступал кремниевым интегральным схемам того времени. А через два года криотронная микросхема GE превзошла кремниевые микрочипы по уровню интеграции. Ученые изготовили даже экспериментальный рабочий компьютер из трех массивов интегрированных криотронов.

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

Тем не менее, кто-то остался верен криотрону. Особый интерес для ученых представляли криотроны, в которых наблюдалось квантово-механическое явление, называемое эффектом Джозефсона. В начале 1970-х исследователи IBM создали модифицированные криотроны, известные как джозефсоновские переходы. Исследования по ним продолжались до 1980-х годов. А джозефсоновские переходы до сих пор являются краеугольным камнем современных исследований IBM и других компаний в области квантовых вычислений.

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


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

Например, Amazon Braket открывает доступ к квантовым вычислениям на трех суперкомпьютерах компаний Rigetti Computing, IonQ и D-Wave Systems. Microsoft запустила Azure Quantum, облачную экосистему с доступом к разнообразным квантовым ресурсам, включая аппаратные системы. Не стоит забывать и про IBM Quantum Experience, облачную платформу, которая позволяет подключиться к квантовому процессору IBM из любой точки мира.
Подробнее..

Подкаст квантовый хакинг и распределение ключа

25.07.2020 16:11:23 | Автор: admin
В третьем выпуске принял участие Антон Козубов, руководитель теоретической группы лаборатории квантовых процессов и измерений. Мы обсудили его работу и специфику отрасли.

Аудиоверсия: Apple Podcasts Яндекс.Музыка PodFM Google Podcasts YouTube.


На фото: Антон Козубов



Пара слов о специфике отрасли


Таймкод 00:16



dmitrykabanov: Насколько я знаю, вы занимаетесь узкоспециализированной тематикой.

Антон: Да, бытует такое мнение, но мы стараемся переходить к более фундаментальным вещам. Хотя сферой квантовой криптографии интересуется все больше людей, это не самое горячее направление науки. Здесь есть хороший фундамент, но технологии уже вышли на инженерный этап развития.

Все начало развиваться еще в 80-х годах прошлого века, и по научным меркам прошло достаточно много времени. Ученые перешли от теории и экспериментов к реальным макетам и полностью функционирующим устройствам. Такие системы уже давно существуют в Швейцарии, где работает ID Quantique. Они запустились в 2005 или 2006 году, а в этом десятилетии начали поставки систем квантовой криптографии в швейцарские и австрийские банки. Это уже не технологии будущего.

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

Дмитрий: Можете ли вы рассказать, что подтолкнуло специалистов к детальному изучению этой области? Как они описывали изначальные проблемы и задачи, которые перед ними стояли?

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

Дмитрий: Вопросы защиты стояли и раньше, взять хотя бы времена холодной войны. Но был ли близок старт этой отрасли к моменту появления относительно массовых сетей?

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

Дмитрий: Как вы пришли в эту сферу? Какова была ваша мотивация?

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



Возможности для ученых из смежных областей


Таймкод 06:24



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

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

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

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

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



Какие задачи стоят перед сообществом


Таймкод 10:37



Дмитрий: Над какими вопросами вы работаете сегодня? Какие задачи есть на переднем крае? Что сейчас представляет ту планку, которую нужно сдвинуть дальше?

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

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

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

У них есть три свойства. Это минимальные порции энергии, их нельзя разделить, а потом, например, усилить. Их нельзя скопировать. Неизвестное квантовое состояние нельзя скопировать, потому как для этого его нужно измерить, а сделать это не выйдет без разрушения квантового состояния. Когда мы его измеряем, оно разрушается.

За счет этих свойств можно смотреть на возможности злоумышленника мы его называем Ева (от eavesdropper) с другой точки зрения. Мы говорим, что отдаем Еве все, что только можно в пределах законов физики. Квантовая память, идеальные детекторы у нас этого даже близко нет, но ей мы даем такие возможности. И даже с учетом этого мы говорим, что она не получит данные о ключе так, чтобы мы этого не узнали. На этом изначально строилась парадигма квантовой криптографии.

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

Дмитрий: И как это бьется с теми свойствами, о которых вы говорили?

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

Дмитрий: Учитывает ли этот подход оборудование на концах канала связи?

Антон: Изначально в квантовом распределении ключей использовали приближения вроде того, что Ева не может залезть в коробки Алисы и Боба, а имеет доступ только к каналу связи. Это не очень жизнеспособное приближение. Сегодня есть квантовый хакинг. Он нам говорит о том, что в оптоволокне или квантовом канале сбить настройки с помощью засвета вполне возможно.


Это направление учитывают в вопросах сертификации. У нас в Москве есть большая лаборатория, где работает Вадим Макаров, наверное самый известный квантовый хакер в мире. В других странах этим очень активно занимаются. Я к этому и подводил. Как Ева может залезть в наши коробки, это для больше инженерная задачка. Я привык считать себя ученым, поэтому мне интересно смотреть на Еву с другой стороны. Например, изучить, как она может сделать так, чтобы залезть в канал связи и все украсть, чтобы мы этого не заметили. Мне больше нравится работать не за хороший парней, Алису и Боба, а исследовать возможные атаки на системы квантового распределения ключа.



Краткое знакомство с квантовым хакингом


Таймкод 21:42



Дмитрий: Можете ли вы описать характеристики таких атак?

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

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

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

Суть квантового распределения ключа в том, чтобы при всех атак Евы, мы могли выделить такой объем распределенных бит, который будет известен только Алисе и только Бобу. Ева о нем не будет знать. Это главная цель нашей работы. Но мне интересно придумывать такие атаки, чтобы Алиса с Бобом были уверены в безопасности, а Ева устраивала бы все так, чтобы обходить защиту.



Нельзя так просто взять и не помешать коллегам


Таймкод 26:18



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

Антон: Та, заметка о канадском семинаре, о которой вы говорили, она как раз об этом. Там я рассказывал, что ровно это мы и сделали, что вызвало шквал негатива. Это объяснимо. Люди двадцать пять лет занимаются наукой, а тут приходит кто-то и говорит, что их результаты были не совсем правильные. Еще и показывает, как будет правильно. Это было очень самонадеянно с моей стороны. Но я считаю, что мы смогли сделать такую атаку, которую многие даже не рассматривают и не учитывают.

Дмитрий: Могли бы вы о ней рассказать и описать хотя бы в общих чертах?

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

Что важно, в таком случае все измерения квантовых состояний происходят уже после этого распределения. Мы предлагаем описывать квантовый канал так, чтобы в нем было измерение, относительно которого изменяются состояния и навязываются Бобу. Условно говоря, у нас есть посередине канала что-то, оно пытается различить состояния, что различает отправляет Бобу, что не различает блокирует. Таким образом, все, что приходит к Бобу, известно Еве. Казалось бы, очевидная идея, но почему-то никто в мире об этом не говорит.

Дмитрий: И вы показали теоретическую возможность осуществления такой атаки.

Антон: Да, об этом я рассказывал в Торонто. У нас были очень жаркие дискуссии с людьми, которые в этой области работают столько, сколько я живу. Это было интересно, очень полезный опыт.



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


Таймкод 29:50



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

Антон: Очень справедливый вопрос. Тут я должен внести ясность. Конечно, мне интереснее придумывать способы атаки. Но мы все работаем в сфере квантового распределения ключей, нам за это платят деньги, и ставить самим себе палки в колеса не очень хочется. Это логично. Когда ты придумываешь новую атаку на системы квантового распределения ключа, то хорошо бы придумать и какой-то метод противодействия. Мы это сделали, нашли способ того, как с этим можно бороться. Он не самый тривиальный, но он есть. Закрывать такие проблемы можно, но другой вопрос, что когда люди не говорят о проблемах, то очевидно, что они их и не учитывают. Значит, контрмер у них нет.


На фото: Антон Козубов

Дмитрий: Является ли такой подход каким-то негласным кодексом вашего сообщества?

Антон: Да, но я считаю, что не очень правильно предлагать решение. Важно поднять проблему. Тогда кто-то может найти побочные решения, помимо того, что есть у тебя. Если ты выложишь все сразу, люди возьмут готовое и не будет развития мысли.

Дмитрий: Можно ли тогда говорить о том, что ваше решение может быть чем-то вроде бета-версии, и где-то в рукаве может быть что-то еще более интересное, что вы для себя сберегли?

Антон: Возможно.



Немного о взаимодействии с контролирующими организациями


Таймкод 33:09



Дмитрий: К этой сфере приковано внимание всевозможных контролирующих органов и спецслужб. Все это отнимает время с точки зрения согласования каких-то разработок?

Антон: Очень хороший вопрос! Я попытаюсь ответить на него максимально уклончиво. Это занимает существенную часть времени, которую можно было бы потратить на действительно научные проекты. Но я понимаю, почему это важно.

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

Антон: Да, все именно так. Это правильный подход. Никто лучше тебя самого не объяснит, что же ты сделал. Если ты не можешь это сделать, возникают вопросы относительно реальности твоих достижений. Но если бы была возможность заниматься просто наукой, я бы предпочел заниматься просто наукой. Но все это важная часть нашей работы, которой мы тоже занимаемся.

Дмитрий: Остается ли у вас время на личные проекты?

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



О разграничении на фундаментальную и прикладную науку


Таймкод 36:07



Дмитрий: Если попробовать оценить скорость изменений в вашей области, объем научных публикаций. Как он влияет на вашу работу и интерес к смежным отраслям?

Антон: Наша область это hot topic. Статей выходит дикое количество. Даже число действительно актуальных статей огромно. Их все сложно отследить, это просто невозможно.

Дмитрий: Сильна ли зависимость от такого процесса отслеживания? Или ваши проекты изолированы достаточно, чтобы бить в точку и не отвлекаться?

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

Дмитрий: Но работа идет в относительно замкнутом круге лиц? Это не сотни человек?

Антон: Справедливо, но не всегда. В нашей группе доказательствами стойкости занимается три человека я, мой коллега и наш научный руководитель. Если брать области шире квантовую оптику, теорию информации нас пять человек. Если говорить про системы квантовой рассылки ключа, есть люди в Москве, Новосибирске, Казани. Но в Европе и США это большие теоретические группы.

Дмитрий: Чем охарактеризована такая разница в масштабе?

Антон: Это разные пути развития науки. У нас он отличается от европейского. Наука здесь идет по пути прикладных исследований, которые нужны и актуальны прямо сейчас. Я не осуждают такой подход, но считаю его не очень научным. Мне более импонирует западный четкое разграничение на фундаментальную и прикладную науку. Когда не нужно требовать от фундаментальной науки каких-то результатов в практическом плане уже сейчас. Она на то и фундаментальная, чтобы не заниматься прикладными вещами.

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

Дмитрий: Такая необходимость задается зависит от горизонта планирования контролирующей организации, научным сообществом или как-то еще?

Антон: Это регулируется тем, кто выделяет деньги. Кто платит, тот и заказывает музыку. Мы видим большую заинтересованность в том, чтобы иметь какое-то оборудование здесь и сейчас. В Европе есть фонды, направленные на фундаментальные исследования. Это зависит от тех, кто дает деньги.



Другие выпуски нашего подкаста на Хабре:



Подробнее..

Из песочницы Постквантовый блокчейн

19.11.2020 20:15:16 | Автор: admin

Введение




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


Устройство блокчейна




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


Такой вычислительно сложной задачей может быть, например, поиск коллизий хеша: нахождение некоего числа, proof-of-work (англ.: доказательство работы), при добавлении которого хеш от блока начинается с нескольких нулей. Данная задача с помощью классического компьютера может решаться лишь перебором, из-за чего среднее время нахождение такого числа экспоненциально растет с ростом требуемого количества нулей. Более подробно об этом можно прочитать в оригинальной статье С. Накамото, предложившего данную идею.


Блоки состоят из сформированных пользователями транзакций, которые подписываются ими с использованием асимметричной криптографии. Каждый пользователь имеет два ключа: приватный, известный только этому пользователю, с помощью которого он подписывает транзакции, и публичный, известный всем пользователям, с помощью которого кто угодно может проверить подпись. Например, биткоин использует для подписи транзакций алгоритм ECDSA (англ.: Elliptic Curve Digital Signature Algorithm), схожий с алгоритмом DSA (англ.: Digital Signature Algorithm), но определенный в группе точек эллиптической кривой. Криптографическая стойкость данного логарифма основывается на сложности задачи дискретного логарифмирования, которая на классическом компьютере решается за экспоненциальное время относительно размера ключа. Другой вычислительно сложной задачей является задача факторизации больших чисел, на которой, например, основан алгоритм RSA (англ.: Rivest Shamir Adleman), также обеспечивающий криптографическую стойкость цифровой подписи, поскольку лежащая в основе него задача решается за время, которое экспоненциально зависит от размера ключа. Таким образом, пока эта криптографическая стойкость существует, пользователям гарантируется, что никто другой не сможет сгенерировать транзакции от их имени.


Уязвимость перед квантовым компьютером




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


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


Алгоритм Гровера




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


Суть алгоритма Гровера заключается в следующем. Допустим, мы имеем некую функцию $inline$f(x)$inline$, корень которой мы собираемся найти. Пусть эта функция реализуема на классическом компьютере, тогда в теории представляется возможным реализовать обратимую функцию $inline$U_f(x)$inline$, которая равняется $inline$0$inline$, если $inline$x$inline$ является корнем функции $inline$f$inline$, и $inline$1$inline$ в противном случае. Такая функция называется оракулом, а её обратимость обеспечивает то, что её можно реализовать на квантовом компьютере, например, при помощи вентилей Тоффоли. В таком случае на вход этой функции можно подавать не одно значение $inline$x$inline$, как в классическом переборе, а суперпозицию всех возможных значений $inline$x$inline$, а значит, получать на выходе суперпозицию всех возможных выходных значений оракула. Далее с помощью элементарных квантовых вентилей можно усилить амплитуду вероятности состояния, соответствующего корню оракула. После определенного количества таких итераций в результате измерения будет получен корень исходной функции $inline$f$inline$ с вероятностью, практически равной $inline$1$inline$. Ситуация несколько осложняется в случае, когда у функции $inline$f$inline$ имеется несколько корней, что соответствует задаче поиска коллизий хеша, однако и в таком случае алгоритм Гровера показывает значительное ускорение по сравнению с простым перебором.


Атака на proof-of-work




Несмотря на то, что алгоритм Гровера способен обеспечить квадратичное ускорение при подсчете блоков, атака с его помощью не является для блокчейна критической, что утверждается в недавнем отчете группы канадских и австралийских ученых. Дело в том, вычислительная мощность интегральных схем специального назначения (англ.: ASIC), находящаяся в настоящий момент в руках майнеров, способна свести на нет практически любые попытки получить ускорение майнинга при помощи квантового компьютера. Допускается, однако, что дальнейшее развитие квантовых технологий может способствовать тому, что квантовые компьютеры получат серьезное преимущество над существующими вычислительными мощностями, но это, по оценкам авторов работы, наступит лишь после повсеместного распространения квантовых компьютеров. Когда же это настанет, майнеры также получат возможность использовать их, тем самым возможность доминирования с помощью квантового компьютера снизойдет на нет.


Кроме того, существуют и другие подходы к генерации блоков, в основе которых не лежат вычислительно сложные задачи, а значит, блокчейны на их основе могут рассматриваться как устойчивые к атакам на proof-of-work. Наиболее популярным таким подходом, который в настоящий момент уже используется, например, в BlackCoin, является proof-of-stake (англ.: доказательство доли владения), заключающийся в том, что блоки с большей вероятностью генерируются теми пользователями, которые владеют большей частью средств в блокчейне. Proof-of-stake не требует поиска коллизий хеша, поэтому с этой точки зрения является устойчивой к атакам с помощью квантового компьютера.


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


Алгоритм Шора




Теперь перейдем к краткому рассмотрению Алгоритма Шора, который способен разлагать большие числа на простые множители и производить дискретное логарифмирование, причем делать всё это за полиномиальное время, сводя обе эти задачи к поиску периода функции. Из-за этого вычислительно сложные задачи, лежащие в основе криптографической стойкости алгоритмов создания цифровой подписи, таких как RSA, ECDSA, ECDH, DSA, оказываются решаемыми за вменяемое время с помощью квантового компьютера, обладающего достаточной мощностью. Наличие такого квантового компьютера позволит злоумышленнику создавать ложные транзакции, тем самым получая доступ ко всем средствам, хранящимся в блокчейне, поэтому в настоящее время именно атаки с помощью алгоритма Шора считаются наиболее опасными для безопасного функционирования блокчейна.


Постквантовый блокчейн


Требования, предъявляемые к постквантовому блокчейну




Прежде чем перейти к обозрению различных подходов к созданию цифровой подписи, устойчивой к квантовым атакам, рассмотрим, какие требования предъявляются к постквантовому блокчейну в целом, чтобы в дальнейшем иметь представление, какие методы могут быть использованы, а какие нет. С одной стороны, кажется, что можно лишь увеличивать размеры ключей и хеша, чтобы отсрочить момент когда квантовые компьютеры смогут окончательно взломать блокчейн, однако такой подход имеет ряд недостатков. Во-первых, это будет требовать от устройств большого количества памяти и вычислительных ресурсов, что неприемлемо в случаях, когда с блокчейном необходимо взаимодействовать устройствам Интернета вещей, поскольку зачастую они не обладают большой памятью и мощностью, а наоборот, должны работать несколько лет от одной батарейки. Во-вторых, увеличение размера хешей и подписей влечет за собой увеличение размера блокчейна, который необходимо хранить всем пользователям, что может занимать довольно много памяти. Такая проблема уже сейчас возникла в Bitcoinе, размер блокчейна которого увеличился на целых 60Гб за один год и на момент написания статьи составил 310Гб, причем его рост лишь продолжает увеличиваться и, можно предположить, примерно к 2030 году он превысит 1Тб. Конечно, существует вариант использовать так называемые легкие кошельки, позволяющие не хранить весь блокчейн, но это уменьшает надежность системы. Таким образом, основные требования к постквантовому блокчейну касаются размеров подписей, ключей и хешей: они не должны быть слишком большими. Кроме того, постквантовый блокчейн должен иметь достаточно большую скорость исполнения операций, чтобы обеспечивать стабильное функционирование системы с огромным количеством транзакций в секунду.


Постквантовые алгоритмы цифровой подписи


В настоящее время ведутся активные работы по разработке алгоритмов шифрования, в том числе и алгоритмов создания цифровой подписи, которые будут устойчивы к атакам с помощью квантового компьютера. Интерес исследователей подогревается тем, что в 2016 году NIST (англ.: Национальный институт стандартов и технологий) запустил конкурс таких алгоритмов, результаты которого будут объявлены к 2022 году. Приведем далее наиболее известные из предложенных алгоритмов, устойчивых к квантовым атакам.




Начнем рассмотрение с механизмов цифровой подписи на основе кода (англ.: code based), примером которой является система McEliece, предложенная примерно в то же время, что и повсеместно используемый алгоритм RSA, однако не получившая тогда широкого распространения. В настоящее время данная система, а также ряд её улучшений, таких как система Niederreiterа, обретают всё большую популярность, поскольку они являются устойчивыми к атакам с помощью алгоритма Шора. В их основе лежит задача декодирования линейных кодов, что является NP-полной задачей, при этом пока что нерешаемой на квантовом компьютере. Несмотря на то, что подписи, сгенерированные по данным методам, обладают относительно маленьким размером и могут быть проверены достаточно быстро, они требуют хранения огромных матриц, которые выступают в роли ключей, что в свою очередь также увеличивает время генерации подписи, затрудняя её использование в блокчейне. В связи с этим исследуются различные методы сжатия матриц или использования других кодов, например, LDPC кодов (англ.: Low Density Parity Check), особенностью которых является малая плотность проверочной матрицы.




Другим механизмом создания цифровой подписи является так называемый механизм на основе решеток (англ.: lattice based), который был отдельно выделен в недавнем отчете NIST как наиболее перспективный. Так называемую решетку можно представить себе как набор точек в n-мерном пространстве с периодической структурой. В данном случае математической задачей, на которой основана криптографическая стойкость, является, например, задача нахождения в этой решетке кратчайшего вектора (Shortest Vector Problem) или же схожая с ней задача нахождения ближайшего вектора (Closest Vector Problem), причём обе эти задачи обладают огромной вычислительной сложностью. Однако недостатком таких систем является тот факт, что необходимо хранить ключи большого размера, что приводит к значительным накладным расходам шифротекста и делает практически невозможным использование подобных систем в блокчейне. Существуют, однако, системы на основе решеток, основанные на задаче краткого целочисленного решения (англ.: Short Integer Solution), благодаря чему удается уменьшить размер ключа, позволяя тем самым использовать такие системы в блокчейне.




Последним механизмом создания цифровой подписи, рассматриваемым в данной статье, является механизм на основе хеша (англ.: hash based), безопасность которого основывается не на сложности некоей математической задачи, а на лежащей в его основе криптографической хеш-функции. Подобный подход был предложен ещё в 70-х годах прошлого века как альтернатива алгоритмам RSA и DSA, однако он не пользовался большим интересом, поскольку накладывает ограничение на количество повторных использований подписей. Однако сейчас этот подход обретает всё большую популярность, поскольку он является устойчивым к квантовым атакам. Недостатком же такого подхода является тот факт, что генерация ключа занимает достаточно длительное время, что делает его неприменимым для использования в блокчейне.


Заключение


В рамках данной статьи были рассмотрены атаки с помощью квантового компьютера, к которым блокчейн оказывается уязвимым. Было выяснено, что хоть алгоритм Гровера и показывает квадратичное ускорение по сравнению с классическими подходами, атака с его помощью не несет практически никакой угрозы для существующих систем на основе proof-of-work, не говоря уже о других методах генерации блоков, таких как proof-of-stack. В то же время главной угрозой, способной свести на нет безопасное функционирование не только блокчейна, но и практически всех цифровых финансовых операций, является атака с помощью алгоритма Шора, методы борьбы с которой были также освещены в данной статье. Кроме того, были рассмотрены требования, предъявляемые к квантовому блокчейну, которые определяют, какие методы борьбы с данной атакой являются приемлемыми, а какие нет.

Подробнее..

Квант Вселенной

25.07.2020 16:11:23 | Автор: admin


Нагородили мы огород! Цифровую систему построили с помощью цифровой системы. На ней сформировали аналоговую систему, и с помощью аналоговой системы пытаемся вычислять первичную цифровую, сказал профессор Петренко.

Вы, как всегда, замудрёно высказываетесь, ответил профессор Колосов.

Она не аналоговая!

Кто Она?

Вселенная!!!

Ну как же! Цвета, звуки, да и прочие явления это все волны, которые прекрасно описываются комбинацией синусов или косинусов. Ана-ло-го-вые функ-ци-и!

Ха! Синус! Синус это выдумка математиков, которая так же легко выражается через другую выдумку математиков под названием Ряд Тейлора, которая, по сути, уже дискретная функция.

Ну, Вы тоже скажете! Ряд Тейлора Вы тут совершенно правы это выдумка математиков. Вы еще напомните, что тригонометрия описывается таблицами Брадиса, и припишите это к дискретности. Я Вас умоляю! Где связь с Real World?

Где где. Вез де! Так называемая длина волны напрямую связана с частотой или размером атомовэнергией их электронов. Красный цвет или звук 440 герц это количество импульсов в единицу времени, попавших на наш зрительный или звуковой анализатор. А наш мозг интерпретирует их как цвета и звуки.

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

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

Допустим. А где у нас тут бит?

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

Ну, это я помню! Это касается не только электронов и других частиц. Они просто синтезируются и аннигилируют в определенный момент.

Не просто в определенный момент, а постоянно. Мы не можем регистрировать это, так как и мы и наши приборы состоят из этого вещества. Но самое интересное мы может строить подобные догадки!

Хорошо. Догадки-догадками А где же все таки тут Бит?

Бит как раз и есть процесс синтез-аннигиляция или 1 и 0.

Ого! Зачем так сложно то! В компьютерах бит совсем простая штука.

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

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

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

Что ж тут хорошего? Мы не можем сделать больше элементов, повысить объем памяти и скорость вычислений.

Мы пришли к созданию квантового компьютера. Он пока может выполнять примитивные комбинаторные алгоритмы, но на порядки быстрее современных компьютеров. Он как раз и использует квантовую запутанность и самоорганизацию. Мы более не экранируемся от Среды, а пытаемся ее использовать.

То есть от чего бежали к тому и вернулись?

Да. Так же мы пришли к очень интересному пониманию живой материи. Самое интересное об этом знали еще наши предки. Играя с машинами мы как-то про это забыли.

Вы прямо заинтриговали меня! О чем речь?

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

Вы серьезно?

Да. И самое удивительное это мозг! Особенно мозг человека.

Согласен. Мозг не перестает удивлять. Хотите сказать, что и он использует квантовые эффекты?

Использует. Еще как! Мозг на материальном уровне выстраивает цепочки и закидывает их, подобно квантовому компьютеру, в подпространство.

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

И это и плюс и минус.

Почему?

Потому что полное взаимодействие со Средой дает давление и шум. В основном происходит достаточно рефлекторная деятельность.

Ничего себе рефлекторная! Дома строим высотой в километр, на Юпитер летаем.

Ага. Дома. А могли бы звездные системыодной силой мысли!

Хм. А почему же не можем?

Фокус. Умение концентрироваться. Похоже, это дает хорошее экранирование от Среды и, в то же время, возможность влиять на Среду. Очевидно, этот механизм недостаточно изучен и развит.

Это точно! Взять одних художников и музыкантов. Они что-то там творят, мечутся, а зачем это все не понятно. Никакой концентрации. То ли дело ученые и инженеры.

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

Музыканты развили информатику вот это нонсенс! Они только и могут, что пьянствовать, пиликать и глотки рвать.

Если так смотреть на вещи, то да. А можно взглянуть иначе
Художники были первыми, кто выделил визуальный алфавит: различные цвета, их смешивание, палочки, закорючки, мазки и комбинацию всего этого. Это в итоге дало понимание цветового спектра и привело к созданию сверточных нейросетей.
Музыканты выделили звуковой алфавит. Теперь у нас есть целая теория обработки сигналов.
Поэты и писатели были, по сути, первыми программистами. Они группировали слова в блоки, алгоритмы.
Философы всегда очень хорошо генерировали идеи, концепции.

Ааа! Паттерны. Это Вы имеете виду?

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

Хм. Я как-то не думал в таком ракурсе. А зачем нам тогда машины, компьютеры ИИ?

Судя по всему, это очередная попытка взглянуть на себя со стороны. С нового ракурса. Возможно, это усталость от рутины. Чтобы брать очередные рубежи, нам нужно перестать вращать колеса вручную. Когда-то паровая машина была странным новшеством, а теперь мы не мыслим себя без смартфона.

Новые возможности?

Да. Конечно.

Что ж Это понятно. А если вернуться к Цифровой Вселенной. Почему же мы видим синусоиды на наших приборах.

Не синусоиду, а аппроксимированную синусоиду функцию, которую мы хотим увидеть. За счет инерции Среды пачки импульсов превращаются в уровень сигнала. Помните, как ШИМ превращается в скорость вращения двигателя?

Что-то вроде диалектического перехода количество в качество?

Именно! Вот тут философы предвосхитили физиков и математиков.

А если взять волну в океане? Где тут дискретность?

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

Вычислимость?

Да. Громадный объем информации. Поэтому мы и объединяемся для решения крупных проблем. Мы все разные и видим свой кусочек Мира. Каждый на своей волне.

Волне? Вы ведь утверждаете, что нет никаких волн.

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

Вы имеете виду частоту дискретизации и фреймы?

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

Другими словами мы антенна радара, где СВЧ излучение принимается, а потом обрабатывается высокоскоростной электроникой?

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

Машины А как же наш мозг? Почему у него получается так эффективно вычислять наше пространство и взаимодействовать с ним? Находить алгоритмы?

Потому что мозг видит квант Вселенной.

-Прикольные диалоги генерирует Алиса, когда говорит сама с собой, - сказал DS Петренко.-Ага, - согласился DevOps Колосов. - В разговорах с людьми такого не увидишь. Надо будет запостить на какой-нибудь гиковский портал.

25.07.2020
Подробнее..

Учимся квантовому программированию на Python с помощью примеров. Доклад Яндекса

09.07.2020 14:06:35 | Автор: admin
Сегодня любой желающий может воспользоваться методами квантового программирования, написать простой код на Python и запустить его на реальном квантовом вычислителе. Ришат Ибрагимов rishat_ibrahimov разобрал основы квантовых вычислений на примерах с кодом, показал, как запускать программы на локальном симуляторе и удаленном квантовом компьютере.


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

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

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

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



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



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



Уже сложнее. Его фамилия очень часто идет рядом с фамилией Тьюринга. Это Алонзо Чёрч, он тоже занимался проблемами вычислимости, и даже немножко раньше Тьюринга придумывал свои модели вычислений. Но более популярными стали работы Тьюринга. И вообще, Чёрч в какой-то момент был научным руководителем Тьюринга. Взятые вместе, их фамилии обычно связывают вот с этим тезисом.

Тезис Чёрча-Тьюринга говорит: любой процесс может быть эффективно смоделирован на машине Тьюринга. Это конец 30-х начало 40-х, и все очень хорошо. Примерно 30 лет всё очень хорошо, пока не появились вот эти два человека. Кто-нибудь их знает?



Это уже 70-е, совсем близко к современности. Их фамилии часто встречаются в курсах криптографии. Это Роберт Соловей и Фолькер Штрассен. Эти два человека знамениты тем, что они придумали вероятностный алгоритм проверки числа на простоту, тест Соловея-Штрассена.

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

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



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

Это такой небольшой экскурс в историю, чтобы вы понимали: это взялось не на ровном месте. В этой облассте есть реальные проблемы, теоретические, конечно, которые мучают людей, с которых все началось.

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

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



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

Второй и очень большой раздел, которому сейчас посвящено много сил, квантовое машинное обучение. Есть очень большая надежда, что квантовые вычисления помогут ускорить сами процессы обучения и усовершенствовать алгоритмы. Тут очень много работы. Сейчас, например, наша квантовая группа работает вместе с одним ученым из Китая. Он очень сильный ML-инженер, а мы немного с квантовым уклоном, пытаемся что-то вместе придумать.

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

Но квантового компьютера у нас нет. К сожалению, мы не можем прийти домой и так же просто, как мы программируем на Python, запустить программы.

Что делать? О том, что делать, я думал еще на третьем курсе, когда писал свою первую курсовую работу. Я писал эмулятор квантовых вычислений. Конечно, все пишут эмуляторы и все ими как-то пользуются. На четвертом курсе я писал эмулятор, который имитирует помехи, шумы и всякое прочее. А потом мне надоело.

Я попробовал поискать в поисковике и понял, что эмуляторов много. Здесь несколько ссылок, они достаточно простые и интересные:


Но я хочу остановиться на qiskit. Он особенный, выделяется из всех. Чем?



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



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

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

Тут наверняка многие из вас думают: все, хочу! Но придется немного вспомнить математику. Немного алгебры, но совсем чуть-чуть, как я и обещал.

Чтобы начать программировать на квантовом компьютере, нужно понять, что вообще такое кубит. Это просто вектор в двумерном векторном пространстве. Но раз уж мы говорим о векторных пространствах, в них есть базис.



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

$[\frac{1}{0}]$

и

$[\frac{0}{1}]$

. И есть стандартное обозначение в нотации Дирака, вот в таких угловых скобочках.

То есть, чтобы вы не путались, сокращать я дальше буду так.



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



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

Можно не обращать внимания на картинку, это просто способ визуализации для привлечения внимания.

Про кубиты поговорили. Самое главное, что кубит это вектор. Вектор в комплексном векторном пространстве. Что с ним можно делать?



Первое, что мы привыкли делать, попробовать посчитать значение нашей переменной, например, в Python. Мы хотим прочитать, в каком состоянии находится кубит. Но мы никогда не узнаем точные значение и .

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

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



Операции присваивания нет, и это очень связано с тем, о чем я говорил только что: мы даже не сможем посмотреть точное значение. Это фундаментальный результат. Доказывается он очень просто: буквально две строчки сравнений, от противного.



Есть кубит, который мы не можем прочитать, не можем склонировать. Что можно вообще делать?

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

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

Посмотрим, какие операции могут быть. То, к чему мы привыкли в классическом случае. Есть нолик, можно превратить его в единичку и наоборот.



Это оператор отрицания, он очень простой. Записывается вот такой матричкой. Если мы попробуем перемножить, получим ровно то, что хотим.



У меня тут даже нарисовано. Ничего сложного. У оператора отрицания есть стандартная запись, оператор X. Если подумать, это просто вращение вокруг одной из осей. И есть операторы Y и Z, вращение вокруг других осей, но это сейчас не так важно.

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

Но мы в квантовой информатике, конечно, очень редко пишем на Python. Чаще мы пользуемся схемами.



Схема обычно выглядит так. Горизонтальные линии это просто значения кубит. У меня тут их нарисовано пять. А в блоке операция, которую мы будем делать.

Первый блок. Здесь нарисован измерительный прибор. Это значит, что мы просто хотим измерить, что же находится в первом кубите.



Если мы эту штуку запустим, то получим, что с вероятностью единичка у нас там стоит нолик, потому что они инициализированы в таком состоянии и мы больше ничего с ними не делали.



Такую штуку можно написать на Python с помощью библиотечки qiskit. Давайте по строчкам посмотрим, что здесь происходит. Сначала мы заводим квантовый регистр. Я здесь завожу его из одного кубита. И классический регистр. Классический регистр нужен, чтобы куда-то записать результат измерения. То есть я с квантовым регистром делаю преобразования, результат получаю классический нолик или единичку. И потом создаю свою схему, в которой есть этот квантовый классический кубит. Я просто говорю: давайте измерим кубит q в C. Запустим все это дело, и все будет хорошо. Но внимательный читатель увидит: здесь написано, что у меня backend это локальный эмулятор.



То же самое можно сделать и с IBM Q, но здесь чуть больше кода. Здесь всякая лапша по поводу того, чтобы выбрать девайс, который нам побыстрее ответит, токены какие-то передать, вот это все. Но ничего хитрого нет.



То же самое можно сделать с оператором отрицания. Это оператор X, как я сказал. На схеме выглядит точно также, запустим то же самое.



Теперь с вероятностью единичка получим единичку, как и планировали. Никакой магии.



Код такой же. Просто здесь я еще применяю оператор X к кубиту q.

Хорошо, попробуем пойти дальше.



Здесь есть очень хитрая штука. Попробуем получить вот такое состояние. Это состояние очень интересное. Мы получим такую суперпозицию. Если мы попробуем ее измерить, то с вероятностью получим или нолик, или единичку. То есть это будет такая равномерная суперпозиция, можем получить что угодно.

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



Легко проверить, но мы, конечно, не будем. Нарисуем схему. Оператор H в честь Адамара.



Замерим и получим примерно то, что ожидаем. Примерно с вероятностью , нолик и единичка. Чуть больше, чуть меньше, но так уж получается.

Вот код на Python, просто чтобы был, мы же на конференции про Python.



Есть такая суперпозиция. К ней применяем оператор Адамара и замеряем.

Но монетку можно бросить два раза, к этому мы все привыкли. Если бросить монетку два раза, ничего не поменяется. Давайте попробуем это сделать в квантовом случае.



Два раза подряд применим оператора Адамара и всегда получим нолик.



То есть если квантовую монетку бросить два раза, то всегда получится нолик, потому что оператор Адамара обратный сам к себе. Если вы умножите самого на себя, всегда получите единичку. Вот такая штука.

Итак, с одним кубитом можно что-то делать. Можно крутить, вертеть и измерять. Давайте попробуем добавить побольше кубит. Что мы привыкли делать в классическом мире? Брать и выполнять простые логические операции, или и и.



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

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



Если бы мы писали на Python, это выглядело бы так. Если в первом кубите единичка, давайте инвертировать второй кубит. Это не матричка, это то, как выглядит оператор. Но в принципе то, что я сказал, тут и написано. Там, где в первом кубите единичка, второй инвертируется.



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



Эту штуку можно даже запрограммировать. Никакого rocket science. Нужно просто взять, создать схему с двумя кубитами, с двумя классическими, и сделать, только не CNOT, а CX, контролируемое отрицание.

Отрицание было оператором X, поэтому в принципе все логично. И можно нарисовать схему. Схема такая.



То есть контролируемое отрицание это такой плюсик на кубите, который мы хотим менять. И точечка, которая является контрольной. Здесь, если кубит в единичке, то второй будем менять.



Тут я специально первый сначала инвертирую, чтобы он был единичкой, и потом замеряю оба и получаю результат |11. Все как мы и предполагали.

Но теперь самое время использовать все наши знания вместе.



Возьмем и все три или четыре оператора, которые мы знаем, залепим в одну схему. То есть мы к первому оператору применим оператор Адамара. Второй инвертируем, потом все вместе, сделаем контролируемое отрицание и измерим.

Давайте не будем пока запускать, а попробуем угадать, что же получится.



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



Состояние запутанное. А все почему? Попробуем произвести измерение. Смотрите, если я измеряю первый кубит и он у меня в состоянии ноль, я тогда могу сказать, что второй кубит обязательно в состоянии один.

То есть если я сделаю такое преобразование своими кубитами, один кубит отдам своему другу, он улетит в Нью-Йорк, а я второй кубит измерю у себя, я буду точно знать, в каком состоянии его кубит. Это называется эффектом квантовой запутанности или квантовой связанности. И это основной механизм, с помощью которого квантовые вычисления работают. Он изменится, они связаны очень жестко, и во время измерения мы можем получить только |00 или |11.

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



Рассеянность заключалась в том, что он все время носил разные носки. И коллеги над ним шутили: если он заходит в комнату одной ногой и мы видим, что носок розовый, то можем точно сказать, что второй носок не розовый. Такие дела.



Если мы эту штуку запустим, получим ровно то, что хотим. Здесь уже совсем смешно получилось. Вероятность ровно 0,5, но это совпадение.



Если мы будем честно запускать на квантовом компьютере, получим вот такую картину. Вроде бы мы говорим: никогда не может получиться состояние |00 и никогда не может получиться состояние |11. Но оно все-таки получается: текущее состояние техники таково, что там есть шумы, которые не всегда можно легко подавить. И с этим борются.

Но если вы вспомните классическую информатику, там то же самое: коды, исправляющие ошибки и все такое. Просто кубит пока слишком мало, чтобы тратить дополнительные биты на исправление ошибок.

Теперь, как я и обещал, несколько примеров алгоритмов. Но это будут просто голословные примеры без разборов алгоритмов, чтобы вы посмотрели, подумали, заинтересовались.



Первый алгоритм как раз связан с Дойчем, о котором мы говорили вначале. Это алгоритм Дойча-Йожи. И он делает следующее. Представьте, что у нас есть булева функция от n переменных. И мы точно знаем, что она или константная, или сбалансированная. Сбалансированная значит, ровно на половине аргументов она равна нулю, а на другой половине единичке. Попробуем классически проверить, константна она или нет.

Для этого нам нужно проверить хотя бы половину всех возможных вариантов: 2n1+1 вариант. Квантовый алгоритм позволяет это сделать за n обращений к самой функции, за n вычислений самой функции. Это экспоненциально меньшее количество обращений.

Второй пример, наверное, хорошо всем известен, из-за него говорят, что квантовые компьютеры сломают всю криптографию: мы можем квантово очень быстро факторизовать числа.



Здесь приведены оценки сложности, и есть просто фантастический пример. В 2011 году на реальном компьютере факторизовали число 15. Потребовалось семь кубит.



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

Самое интересное: на этой штуке основан алгоритм New Hope, новая надежда всея человечества. В 2016 году в Chrome была включена поддержка этого алгоритма. Здесь есть ссылочка на блог. Это не я придумал, все на самом деле есть. Будущее уже здесь.

В конце немножко ссылок:


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

Если вы попробуете вбить в своем любимом поисковике, то уже сегодня можете найти вакансии для квантового программиста. Конечно, там больше исследований, но тем не менее. Спасибо.
Подробнее..

Перевод Как разобраться с пауками в квантовой программе

26.10.2020 08:23:53 | Автор: admin

image


Продолжаем рубрику тем для первого свидания. На сегодняшней повестке дня упрощение схем для квантовых программ методами ZX-исчисления.


Далее от имени автора

Прежде всего, я хотел бы поблагодарить моих наставников Роджера Ло и Цзиньго Лю за то, что они курировали меня во время Google Summer of Code 2020. В этом проекте GSoC я разрабатываю новый пакет Julia ZXCalculus.jl, который реализует ZX-исчисление, и интегрирую его в качестве инструмента упрощения схем и квантовых программ в YaoLang.jl DSL (предметно-ориентированный язык) для Yao.jl. Yao.jl современный квантовый симулятор со множеством продвинутых функций, такими как автоматическое дифференцирование и символьные вычисления. Как пользователь "Yao.jl", я рад возможности внести свой вклад в его развитие. В этом блоге я подытожу результаты проделанной работы.


Квантовые схемы и ZX-исчисление


Квантовое программирование использует принципы квантовой механики для вычислений. Для описания квантовых алгоритмов мы часто используем модель квантовой схемы, которая является аналогом модели классической логической схемы. Квантовые схемы состоят из набора основных квантовых элементов, таких как вентили Паули, Адамара, T, CNOT.


В общем, будет много эквивалентных квантовых схем, представляющих одну и ту же операцию. С точки зрения квантового оборудования, нужно найти схему, которая минимизирует использование аппаратных ресурсов. К сожалению, поиск наиболее желаемой схемы является очень сложной задачей в плане вычислительной сложности, так как проверка эквивалентности между двумя квантовыми схемами является coQMA-трудной (квантовый аналог coNP) [1], [2]. Несмотря на это, у нас все еще есть некоторые эвристические эффективные алгоритмы для упрощения квантовых схем. В этом блоге я представлю мощный инструмент для этой проблемы ZX-исчисление.


Квантовая схема это граф, представляющий тензорные и матричные произведения. Например


$ \mathrm{CNOT}(2,3)\cdot\mathrm{CNOT}(1,2)\cdot(H\otimes I\otimes I). $



Кроме того, квантовые схемы можно рассматривать как особый тип тензорной сети. В ZX-исчислении мы вводим два вида тензоров: Z-пауков и X-пауков. Тензорные сети, состоящие из этих тензоров, называются ZX-диаграммами. Поскольку все основные квантовые элементы могут быть представлены ZX-диаграммами, мы можем преобразовать все квантовые схемы в ZX-диаграммы.



Более того, по определению Z-пауков и X-пауков, существуют основные эквивалентные правила, с помощью которых можно упростить ZX-диаграммы.



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


Во время GSoC 2020 я собираюсь добиться реализации на Джулии ZX-исчисления. В следующих разделах я кратко объясню причины и методы этого проекта.


Цель GSoC проекта


Основная цель этого проекта заключается в реализации ZX-исчисления и связанного с ним алгоритма на языке Julia. И мы выпустим пакет Julia ZXCalculus.jl. Существует Python-реализация ZX-исчисления, PyZX. Как и PyZX, ZXCalculus.jl должна предоставлять API для перевода на ZX-диаграммы, извлечения схем из ZX-диаграмм, упрощения и визуализации. Большинство функций PyZX будут реализованы в ZXCalculus.jl. Кроме того, мы интегрируем ZXCalculus.jl в квантовый компилятор YaoLang.jl и реализуем механизм упрощения схем на уровне компиляции.


В YaoLang.jl можно определить гибридные квантовые программы с классической информацией (например, классические параметры, классические потоки управления). Эти квантовые программы будут преобразованы в промежуточное представление (Yao IR), которое содержит квантовые схемы наряду с формой SSA (Статическая форма единого назначения) классической программы. Эти схемы будут упрощены с помощью ZXCalculus.jl. Затем YaoIR будет скомпилирован в бэкенд-инструкции, такие как QASM или инструкции симулятора Yao.


Для достижения наилучшей производительности при компиляции и обеспечения возможности дальнейшей настройки процедуры упрощения необходима чистая реализация ZX-исчисления на языке Julia.


Методы


Метод извлечения схем является каноническим методом алгоритмов упрощения схем на основе ZX-исчисления. Я тут буду в основном обсуждать его реализую.


Структуры данных


Для реализации этих алгоритмов нам необходимо реализовать структуры данных для хранения ZX-диаграмм и правила изменения ZX-диаграмм. ZX-диаграмму можно рассматривать как мультиграф с дополнительной информацией о его вершинах. Каждая вершина может быть представлена чем-то из Z-пауков, X-пауков или H-коробок. В исходных ZX-диаграммах допускаются открытые ребра. Для простоты мы добавили 2 специальных вида вершин, входную границу и выходную границу для записи этих ребер. Мы используем представление списка смежности для хранения мультиграфов. Список смежности хранится в виде "Dict", ключами которого являются идентификаторы вершин.


struct Multigraph{T<:Integer} <: AbstractMultigraph{T}    adjlist::Dict{T, Vector{T}}end

Поскольку нам нужно переписать мультиграфы с помощью правил ZX-исчисления, будет удобнее фиксировать идентификаторы вершин. Поэтому мы используем Dict вместо Array. Еще бывают фазы для Z- и X-пауков. Нам нужен еще один словарь для хранения этих фаз. Структура данных ZX-диаграммы аналогична следующей:


struct ZXDiagram{T<:Integer, P} <: AbstractZXDiagram{T, P}    mg::Multigraph{T}    st::Dict{T, SpiderType.SType}    ps::Dict{T, P}    ...end

В статье предложены графоподобные ZX-диаграммы. Они включают в себя только Z-пауков и имеют разные типы граней: адамаровские и неадамаровские. Мы также можем использовать мультиграфы для представления графоподобных ZX-диаграмм и различные кратности ребер для представления различных типов ребер. Мы определяем ZXGraph для графоподобных ZX-диаграмм так:


struct ZXGraph{T<:Integer, P} <: AbstractZXDiagram{T, P}    mg::Multigraph{T}    st::Dict{T, SpiderType.SType}    ps::Dict{T, P}    ...end

С этого момента мы создали структуры данных, которые нам нужны.


Правила преобразований


Чтобы упростить ZX-диаграммы, нам нужно реализовать правила перезаписи в ZX-исчислении. Существует два шага: сопоставление правил и переписывание ZX-диаграмм с соответствующими правилами. Мы использовали для этого благословенную джулианскую множественную диспетчеризацию. API-интерфейсы выглядят как-то так:


match(r::AbstractRule, zxd::AbstractZXDiagram)rewrite!(r::AbstractRule, zxd::AbstractZXDiagram{T, P}, matches::Vector{Match{T}}) where {T, P}

Здесь match вернет все совпадающие вершины, которые будут сохранены в структуре


struct Match{T<:Integer}    vertices::Vector{T}end

А rewrite! попытается использовать правило, чтобы переписать ZX-диаграмму на всех совпадающих вершинах. Так как некоторые совпадающие вершины могут стать неудовлетворяющими соответствующему правилу после переписывания некоторых вершин, нам нужно проверить, доступно ли еще правило для совпадающих вершин.


check_rule(r::AbstractRule, zxd::AbstractZXDiagram{T, P}, vs::Vector{T}) where {T, P}

Для упрощения ZX-диаграммы с помощью правила мы определили simplify! так:


function simplify!(r::AbstractRule, zxd::ZXDiagram)    matches = match(r, zxd)    while length(matches) > 0        rewrite!(r, zxd, matches)        matches = match(r, zxd)    end    return zxdend

На этапе упрощения [3], мы должны конвертировать ZX-диаграмму в графоподобный вариант с правилами i1, i2, h, и f. После, упрощаем графоподобную ZX-диаграмму локальным дополнительным правилом и правилом замещения. Мы можем выполнить эти шаги с помощью вышеуказанных функций. Упрощенные графоподобные ZX-диаграммы будут просто маленькими скелетами по сравнению с первоначально большой схемой. Единственное, что остается это извлечение схем из ZX-диаграмм.


Извлечение схем


Это самая сложная часть схемы упрощения. Для получения более подробной информации можно прочитать оригинал статьи. Я только кратко объясню алгоритм извлечения схемы.


Существует особенность для любой ZX-диаграммы квантовой схемы. Мы можем определить на ней g-поток. С помощью g-потока мы можем узнать порядок всех пауков. Правила, которые мы использовали для упрощения ZX-диаграммы, сохранят это хорошее свойство. Это дает нам возможность извлекать схемы из упрощенных ZX-диаграмм.


Кроме того, любая графоподобная ZX-диаграмма локально представима по CNOT + H. Мы можем извлечь эти схемы CNOT с гауссовским устранением над $F_2$. Вместе с остальными H-, CZ-гейтами и Z-вращениями мы получаем схему, эквивалентную исходной.


Demo


Демонстрационная схема взята из приложения к статье [3]. Все коды можно найти в разделе examples\ex1.jl у ZXCalculus.jl.


# this is the original circuit.zxd = generate_example()ZXplot(zxd)


# convert a ZX-diagram to a graph-like ZXdiagramzxg = ZXGraph(zxd)ZXplot(zxg, linetype = "curve")


# simplify with local complementary rule simplify!(Rule{:lc}(), zxg)ZXplot(zxg, linetype = "curve")


# simplify with pivoting rulesimplify!(Rule{:p1}(), zxg)ZXplot(zxg, linetype = "curve")


# removing all Paulis adjancent to boundariesreplace!(Rule{:pab}(), zxg)ZXplot(zxg, linetype = "curve")


# extract circuitcir = circuit_extraction(zxg)ZXplot(cir)


Наконец, мы получили упрощенную схему.





Метапрограммирование, квантовая компиляция и оптимизация схем при квантовой компиляции


В прошлом месяце я в основном работал над интеграцией с YaoLang.jl для ZXCalculus.jl. Это был мой первый опыт работы с метапрограммированием Джулии на практике. Я хочу поблагодарить своего наставника Роджера Ло за то, что он научил меня основным понятиям и полезным методам метапрограммирования.


Согласно Википедии, метапрограммирование это метод программирования, при котором компьютерные программы имеют возможность обрабатывать другие программы как свои данные. чтобы понять метапрограммирование в Julia, необходимо знать, как работает компилятор Julia.


Как Julia работает


Все коды Джулии по сути строки (Strings), которые хранятся на диске. Когда мы запускаем коды Julia, Джулия сначала разбирает этот код на AST (абстрактные синтаксические деревья). AST будет храниться в виде выражений в структуре данных Expr в Julia. На этом уровне синтаксического анализа мы называем эти выражения IR (промежуточные представления) поверхностного уровня.


julia> s = "1 + 1 * 2""1 + 1 * 2"julia> ex = Meta.parse(s):(1 + 1 * 2)julia> dump(ex)Expr  head: Symbol call  args: Array{Any}((3,))    1: Symbol +    2: Int64 1    3: Expr      head: Symbol call      args: Array{Any}((3,))        1: Symbol *        2: Int64 1        3: Int64 2

В этом примере ex это AST. Его head это :call, что означает, что это вызов функции. Он вызывает функцию + с аргументами 1 и еще одним Expr.


Затем опускаемся на уровень. На этом уровне макросы будут расширены, а "синтаксический сахар" Джулии будет преобразован в вызовы функций. Например, a[i] будет заменено на getindex(a, i). После серии преобразований, IR поверхностного уровня будет преобразован в SSA (Статическая форма единого назначения). IR также называется "пониженным" IR. В SSA IR каждая переменная может быть назначена только один раз. В Julia мы можем использовать макрос @code_lowed, чтобы увидеть SSA IR объекта Expr:


julia> @code_lowered 2 + 3CodeInfo(1  %1 = Base.add_int(x, y)      return %1)

Джулия сделает вывод типа на SSA IR и оптимизирует его. А затем преобразует его в LLVM коды. Мы можем использовать макросы @code_typed и @code_llvm, чтобы увидеть эти IRs.


julia> @code_typed 2 + 3CodeInfo(1  %1 = Base.add_int(x, y)::Int64      return %1) => Int64julia> @code_llvm 2 + 3;  @ int.jl:53 within '+'; Function Attrs: uwtabledefine i64 @"julia_+_15307"(i64, i64) #0 {top:  %2 = add i64 %1, %0  ret i64 %2}

Наконец, LLVM преобразует эти коды в собственные машинные коды.


julia> @code_native 2 + 3        .text;  @ int.jl:53 within '+'        pushq   %rbp        movq    %rsp, %rbp        leaq    (%rcx,%rdx), %rax        popq    %rbp        retq        nopw    (%rax,%rax); 

Вот пикча из JuliaCon 2018, которая демонстрирует, как работает компилятор Julia.



Как работает YaoLang.jl


Цель YaoLang.jl построить удобный квантовый компилятор для гибридных квантово-классических программ в Julia. То есть, используя только несколько макросов и добавляя их к собственным функциям Julia, можно определить квантовые программы. В YaoLang.jl функция, украшенная макросом device, будет рассматриваться как функция с квантовыми операциями. В этих функциях макросы @ctrl, @measure, @expect и "синтаксический сахар" locs => gate доступны для определения квантовых операций. Например, представим схему для квантового преобразования Фурье n кубитов:


@device function qft(n::Int)    1 => H    for k in 2:n        @ctrl k 1 => shift(2 / 2^k)    end    if n > 1        2:n => qft(n - 1)    endend

Подобно процедурам компиляции Julia, макрос device будет анализировать функцию в IR поверхностного уровня в YaoLang.jl. Затем все макросы и синтаксический сахар для квантовых операторов будут заменены вызовами функций. Эти вызовы функций будут помечены меткой :quantum. Теперь IR поверхностного уровня будет преобразован в пониженный SSA IR. В YaoLang.jl SSA IR будет храниться в структуре данных YaoIR.


Остальные части это оптимизация YaoIR и преобразование из него в коды аппаратного уровня. ZXCalculus.jl предназначен для оптимизации квантовых схем и должен быть интегрирован на уровне оптимизации.



Интеграция ZXCalculus.jl


Теперь мы рассматриваем только чисто квантовые программы. Как только мы получим YaoIR, чтобы оптимизировать квантовую схему, все, что нам нужно сделать, это следующие шаги


  1. преобразовать его в ZX-диаграмму
  2. Упростить ZX-диаграмму
  3. Перевести упрощенную ZX-диаграмму обратно в YaoIR

Второй шаг уже реализован в ZXCalculus.jl. Нам нужно только реализовать преобразование между ZXDiagram и YaoIR.


YaoIR в ZXDiagram


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


function ZXDiagram(ir::YaoIR)    if ir.pure_quantum        n = count_nqubits(ir)        circ = ZXDiagram(n)        stmts = ir.body.blocks[].stmts        for stmt in stmts            # push gates        end        return circ    endend

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


ZXDiagram в YaoIR


Мы предполагаем, что получаем ZXDiagram, представляющую квантовую схему. Чтобы преобразовать ее в YaoIR, нам нужно извлечь последовательность квантовых вентилей в ZXDiagram.


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


Параметры оптимизации


В "ZXCalculus.jl" существует несколько методов упрощения схем. И мы предлагаем реализовать другие методы упрощения, которые не основаны на ZX-исчислении. Необходимо предоставить пользователю возможность выбирать, какие методы оптимизации будут применяться.


Мы добавили эти параметры в макрос @device. Параметры оптимизации можно задать следующим образом


@device optimizer = [opt...] function my_circuit(args...)    ...end

Так optimizer вполне представим как подмножество [:zx_clifford, zx_teleport]. И мы добавим больше методов в будущем.


Примеры


К настоящему времени, ZXCalculus.jl была интегрирована с YaoLang.jl. Мы можем использовать YaoLang.jl для проверки правильности алгоритмов в ZXCalculus.jl. Данный пример представляет собой арифметическую схему.


Сначала мы определим два контура. Один оригинальная схема, другой оптимизированная.


Кооод
using YaoLang@device function test_cir()    5 => H    5 => shift(0.0)    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    5 => shift($(1/4*))    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    4 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 1 4 => X    4 => shift($(7/4*))    1 => shift($(1/4*))    @ctrl 1 4 => X    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 3 5 => X    5 => shift($(1/4*))    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 3 5 => X    4 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 3 4 => X    4 => shift($(7/4*))    5 => H    3 => shift($(1/4*))    @ctrl 3 4 => X    5 => shift(0.0)    @ctrl 4 5 => X    5 => H    5 => shift(0.0)    @ctrl 3 5 => X    5 => shift($(7/4*))    @ctrl 2 5 => X    5 => shift($(1/4*))    @ctrl 3 5 => X    5 => shift($(7/4*))    @ctrl 2 5 => X    3 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 2 3 => X    3 => shift($(7/4*))    5 => H    2 => shift($(1/4*))    @ctrl 2 3 => X    5 => shift(0.0)    @ctrl 3 5 => X    5 => H    5 => shift(0.0)    @ctrl 2 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    5 => shift($(1/4*))    @ctrl 2 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    2 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 1 2 => X    2 => shift($(7/4*))    5 => H    1 => shift($(1/4*))    @ctrl 1 2 => X    5 => shift(0.0)    @ctrl 2 5 => X    @ctrl 1 5 => Xendcir = test_cir()@device optimizer = [:zx_teleport] function teleport_cir()    5 => H    5 => shift(0.0)    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    5 => shift($(1/4*))    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    4 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 1 4 => X    4 => shift($(7/4*))    1 => shift($(1/4*))    @ctrl 1 4 => X    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 3 5 => X    5 => shift($(1/4*))    @ctrl 4 5 => X    5 => shift($(7/4*))    @ctrl 3 5 => X    4 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 3 4 => X    4 => shift($(7/4*))    5 => H    3 => shift($(1/4*))    @ctrl 3 4 => X    5 => shift(0.0)    @ctrl 4 5 => X    5 => H    5 => shift(0.0)    @ctrl 3 5 => X    5 => shift($(7/4*))    @ctrl 2 5 => X    5 => shift($(1/4*))    @ctrl 3 5 => X    5 => shift($(7/4*))    @ctrl 2 5 => X    3 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 2 3 => X    3 => shift($(7/4*))    5 => H    2 => shift($(1/4*))    @ctrl 2 3 => X    5 => shift(0.0)    @ctrl 3 5 => X    5 => H    5 => shift(0.0)    @ctrl 2 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    5 => shift($(1/4*))    @ctrl 2 5 => X    5 => shift($(7/4*))    @ctrl 1 5 => X    2 => shift($(1/4*))    5 => shift($(1/4*))    @ctrl 1 2 => X    2 => shift($(7/4*))    5 => H    1 => shift($(1/4*))    @ctrl 1 2 => X    5 => shift(0.0)    @ctrl 2 5 => X    @ctrl 1 5 => Xendtp_cir = teleport_cir()

С помощью пакета YaoArrayRegister.jl, мы можем вычислить матрицу для каждой схемы.


Код
using YaoArrayRegistermat = zeros(ComplexF64, 32, 32)for i = 1:32    st = zeros(ComplexF64, 32)    st[i] = 1    r0 = ArrayReg(st)    r0 |> cir    mat[:,i] = r0.stateendtp_mat = zeros(ComplexF64, 32, 32)for i = 1:32    st = zeros(ComplexF64, 32)    st[i] = 1    r1 = ArrayReg(st)    r1 |> tp_cir    tp_mat[:,i] = r1.stateend

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


sum(abs.(mat - tp_mat) .> 1e-14) == 0

Итого


Во время второго этапа кодирования я реализовал преобразование между "ZXDiagram" и "YaoIR", что обеспечивает интеграцию ZXCalculus".jl с YaoLang.jl. Кроме того, документация теперь доступна здесь. И во время испытания ZXCalculus".jl с помощью YaoLang.jl и YaoArrayRegister.jl я нашел несколько ошибок в реализации извлечения контуров и фазовой телепортации. Эти ошибки уже исправлены.


На следующем этапе я буду работать над компиляцией кодов OpenQASM в коды YaoIR. Это позволит нам читать схемы из кода OpenQASM. А также протестирую результативность ZXCalculus.jl на некоторых эталонных схемах и сравню его с PyZX.




Упрощение квантовой схемы



Предположим, что у нас есть квантовая схема с 24 гейтами, как описано выше. Мы можем определить эту схему с помощью YaoLang.jl используя макрос @device. YaoLang.jl это компилятор для гибридных квантово-классических программ, которые очень практичны в нынешнюю эпоху NISQ (noisy intermediate-scale quantum). Кроме того, YaoLang.jl интегрирован с ZXCalculus.jl.


Код
julia> using YaoLang;julia> @device optimizer = [:zx_teleport] function demo_circ_simp()           1 => shift($(7/4))           1 => H           1 => Rx($(/4))           4 => H           @ctrl 1 4 => Z           @ctrl 4 1 => X           1 => H           4 => H           1 => T           4 => shift($(3/2))           4 => X           1 => H           4 => S           4 => X           2 => S           @ctrl 2 3 => X           2 => H           @ctrl 2 3 => X           2 => T           3 => S           2 => H           3 => H           3 => S           @ctrl 2 3 => X       enddemo_circ_simp (generic circuit with 1 methods)

Можно добавить аргумент optimizer = [opts...] в макрос @device, чтобы упростить эту схему во время компиляции. В настоящее время существует только два этапа оптимизации: :zx_clifford для упрощения Клиффорда [1] и :zx_teleport для фазовой телепортации [2]. Например, с помощью optimizer = [:zx_teleport] компилятор вызовет алгоритм фазовой телепортации в ZXCalculus.jl для упрощения схемы.


Мы можем использовать макрос @code_yao, чтобы увидеть, какая схема у нас есть. В этом примере количество гейтов схемы было уменьшено с 24 до 20.


julia> using YaoLang.Compilerjulia> gate_count(demo_circ_simp)Dict{Any,Any} with 8 entries:  "YaoLang.Rx(3.141592653589793)"     => 2  "YaoLang.H"                         => 6  "YaoLang.Rx(0.7853981633974483)"    => 1  "YaoLang.shift(4.71238898038469)"   => 1  "YaoLang.shift(1.5707963267948966)" => 4  "YaoLang.shift(0.7853981633974483)" => 1  "@ctrl YaoLang.Z"                   => 1  "@ctrl YaoLang.X"                   => 4

Мы можем использовать YaoArrayRegister.jl чтобы применить эту упрощенную схему к квантовому состоянию:


julia> using YaoArrayRegister;julia> circ_teleport = demo_circ_simp()demo_circ_simp (quantum circuit)julia> r = rand_state(4);julia> r |> circ_teleportArrayReg{1, Complex{Float64}, Array...}    active qubits: 4/4

Можно также загрузить схемы из OpenQASM. OpenQASM это квантовая инструкция. Коды OpenQASM можно запускать на квантовых устройствах IBM. А квантовые схемы могут храниться в виде кодов OpenQASM. Я использовал пакет Джулии RBNF.jl (парсит код в ограниченную форму Бэкуса-Наура) для перевода OpenQASM кодов в AST, с последующим преобразованием его в YaoIR, промежуточное представление для смешанной квантово-классической программы YaoLang.jl. Это делает возможным чтение схем из OpenQASM в ZXCalculus.jl через YaoLang.jl.


using YaoLang: YaoIR, is_pure_quantumusing ZXCalculuslines = readlines("gf2^8_mult.qasm")src = prod([lines[1]; lines[3:end]])ir = YaoIR(@__MODULE__, src, :qasm_circ)ir.pure_quantum = is_pure_quantum(ir)circ = ZXDiagram(ir)pt_circ = phase_teleportation(circ)

Здесь мы загрузили схему в виде ZXDiagram из файла .qasm, который можно найти тут. И мы использовали алгоритм фазовой телепортации, чтобы упростить его. Мы видим, что Т-число в цепи уменьшилось с 448 до 264.


julia> tcount(circ)448julia> tcount(pt_circ)264

Приведенные выше примеры показали, как ZXCalculus.jl работает в качестве механизма упрощения схем в YaoLang.jl. А теперь давайте посмотрим, что скрывается за сценой.


Низкоуровневые интерфейсы ZXCalculus


В ZX-исчислении мы будем иметь дело с ZX-диаграммами и мультиграфами с некоторой дополнительной информацией. Каждая вершина ZX-диаграммы называется пауком. Есть два типа пауков, Z-паук и X-паук. Каждый паук связан с числом, называемым фазой. По нотации Дирака Z-паук и X-паук представляют собой следующие матрицы ранга 2.



ZX-диаграммы можно рассматривать как особый тип тензорной сети. Как и квантовые схемы. А квантовые схемы могут быть преобразованы в ZX-диаграммы по следующим правилам.



Желтая коробка, H-box, это простая нотация следующих пауков в ZX-исчислении



Для представления общих ZX-диаграмм мы определили структуру ZXDiagram в ZXCalculus.jl. Мы можем построить ZX-диаграмму, которая представляет собой пустую квантовую схему с n кубитами с помощью ZXDiagram(n). Например, если мы хотим упростить приведенную выше схему с помощью ZXCalculus.jl вручную, то сначала мы построим ZX-диаграмму схемы из 4 кубитов.


using ZXCalculuszxd = ZXDiagram(4)

Затем мы добавляем некоторые элементы к ZX-диаграмме, которую мы только что построили. Просто используем push_gate! и push_ctrl_gate!


Код
push_gate!(zxd, Val(:Z), 1, 7//4)push_gate!(zxd, Val(:H), 1)push_gate!(zxd, Val(:X), 1, 1//4)push_gate!(zxd, Val(:H), 4)push_ctrl_gate!(zxd, Val(:CZ), 4, 1)push_ctrl_gate!(zxd, Val(:CNOT), 1, 4)push_gate!(zxd, Val(:H), 1)push_gate!(zxd, Val(:H), 4)push_gate!(zxd, Val(:Z), 1, 1//4)push_gate!(zxd, Val(:Z), 4, 3//2)push_gate!(zxd, Val(:X), 4, 1//1)push_gate!(zxd, Val(:H), 1)push_gate!(zxd, Val(:Z), 4, 1//2)push_gate!(zxd, Val(:X), 4, 1//1)push_gate!(zxd, Val(:Z), 2, 1//2)push_ctrl_gate!(zxd, Val(:CNOT), 3, 2)push_gate!(zxd, Val(:H), 2)push_ctrl_gate!(zxd, Val(:CNOT), 3, 2)push_gate!(zxd, Val(:Z), 2, 1//4)push_gate!(zxd, Val(:Z), 3, 1//2)push_gate!(zxd, Val(:H), 2)push_gate!(zxd, Val(:H), 3)push_gate!(zxd, Val(:Z), 3, 1//2)push_ctrl_gate!(zxd, Val(:CNOT), 3, 2)

Теперь давайте нарисуем ZX-диаграмму, которую мы построили. Инструмент визуализации ZXCalculus.jl в настоящее время предоставляется в YaoPlots.jl.


using YaoPlotsplot(zxd)


Заодно поднимем алгоритмы упрощения clifford_simplification [1] и phase_teleportation [2]


ex_zxd = clifford_simplification(zxd);pt_zxd = phase_teleportation(zxd);plot(ex_zxd)plot(pt_zxd)


Схема после упрощения Клиффорда

Схема после фазовой телепортации


Алгоритм фазовой телепортации может уменьшить число Т-вентилей квантовой схемы. Воспользуемся tcount чтобы показать количество Т-вентилей. В этом примере число Т уменьшилось с 4 до 2.


julia> tcount(zxd)4julia> tcount(pt_zxd)2

Эти алгоритмы используют правила ZX-исчисления для упрощения ZX-диаграмм. Эти правила определяют, как ZX-диаграммы могут быть преобразованы. Вот некоторые основные правила для ZXDiagram.



В работе [1] определен особый тип ZX-диаграммы графоподобная ZX-диаграмма. Мы используем ZXGraph, чтобы представить ее в ZXCalculus.jl. И вот некоторые правила для ZXGraph



Можно применить правила на ZX-диаграмме вручную. Для этого мы предоставляем различные API.


Функция match найдет все вершины соответствующие заданному правилу. Применение rewrite! переписывает ZX-диаграмму на некоторых совпадающих вершинах. replace! функция просто сопоставляет и переписывает все совпадающие вершины один раз. simplify! функция будет сопоставлять и переписывать ZX-диаграмму с правилом до тех пор, пока не останется сопоставимых вершин.


В clifford_simplification, мы сначала преобразуем заданную ZX-диаграмму в графоподобную ZX-диаграмму


zxg = ZXGraph(zxd)plot(zxg)


Затем, мы упрощаем ее с помощью правил :lc, :p1, и :pab


simplify!(Rule{:lc}(), zxg)simplify!(Rule{:p1}(), zxg)replace!(Rule{:pab}(), zxg)plot(zxg)


Наконец, мы извлекаем новую схему из упрощенной графоподобной ZX-диаграммы


ex_circ = circuit_extraction(zxg)plot(ex_circ)


Почему именно ZXCalculus.jl?


Вышеприведенные алгоритмы уже реализованы в пакете Python PyZX. PyZX это полнофункциональная библиотека для манипулирования крупномасштабными квантовыми схемами и ZX-диаграммами. Он предоставляет множество удивительных возможностей визуализации и поддерживает различные формы квантовых схем, включая QASM, Quipper и Quantomatic.


Так почему же мы разработали ZXCalculus.jl? Это связано с тем, что ZXCalculus.jl является не только полнофункциональной библиотекой для ZX-исчисления, но и одним из механизмов упрощения схем для YaoLang.jl. Легкая нативная реализация ZX-исчисления необходима, так как зависимость от пакета Python сделает работу компилятора медленнее и сложнее.


Benchmarks


Мы провели сравнительный анализ алгоритма фазовой телепортации на 40 схемах с различным числом вентилей (от 57 до 91642). ZXCalculus.jl имеет ускорение от 6 до 50 раз в этих примерах (время выполнения ZXCalculus.jl масштабируется до 1 для каждой схемы на этом рисунке). Эти тесты выполняются на ноутбуке с процессором Intel i7-10710U и 16 ГБ оперативной памяти. Код для бенчмарков можно найти здесь.



В большинстве примеров T-число оптимизированных схем, производимых ZXCalculus.jl, совпадает с PyZX. Однако в 2 примерах ZXCalculus.jl имеет больше T-count, чем PyZX. Это может быть вызвано различными стратегиями упрощения между ZXCalculus.jl и PyZX. Мы продолжим исследовать это в будущем.



Кроме того, YaoLang.jl поддерживает гибридные квантово-классические программы. Можно оптимизировать гибридные квантово-классические программы с помощью ZXCalculus.jl.


Резюме и дальнейшей работы


В течение GSoC 2020 я в основном выполнил следующие работы.


  • Представление и манипулирование ZX-диаграммами с высокой производительностью.
  • Реализация двух алгоритмов упрощения на основе ZX-исчисления.
  • Добавление визуализации в ZX-схемы в YaoPlots.jl.
  • Интеграция ZXCalculus.jl с YaoLang.jl.
  • Добавление поддержки OpenQASM в YaoLang.jl.

Есть еще кое-что, что нужно отполировать.


  • Поиск лучшей стратегии упрощения, чтобы получить более низкие значения T.
  • Полная поддержка визуализации "ZXGraph" (сценарий построения графика может потерпеть неудачу на некоторых "ZXGraph" с фазовыми гаджетами).
  • Преобразование на ZX-схемы для тензорных сетей без YaoLang.jl.
  • Преобразование между "YaoIR" и "ZXDiagram" может привести к тому, что схема отличается от глобальной фазы. Мы должны записать эту глобальную фазу в более поздней версии.

Кроме того, я буду продолжать работать над YaoLang.jl с Роджером Ло, Чтобы поддерживать больше методов упрощения схем (методы сопоставления шаблонов, методы на основе Quon и т.д.).


Благодарности


Я хочу поблагодарить своих наставников, Роджера Ло и Цзиньго Лю. Без их помощи я не смог бы осуществить этот проект. ZXCalculus.jl очень вдохновлен PyZX. Спасибо Алекс Киссинджер и Джон ван де Ветеринг, авторам PyZX. Они дали мне полезные советы по алгоритму фазовой телепортации и рассмотрели бенчмарки между PyZX и ZXCalculus.jl. Благодарю Google за проведение Google Summer of Code, которое способствует развитию сообщества с открытым исходным кодом.


[1]: Graph-theoretic Simplification of Quantum Circuits with the ZX-calculus
[2]: Reducing T-count with the ZX-calculus

Подробнее..

Из песочницы Вводная по квантовым компьютерам (перевод с сайта Explaining Computers)

07.11.2020 20:18:47 | Автор: admin
Привет, Хабр! Представляю вашему вниманию перевод статьи Quantum Computing автора Christopher Barnatt.

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


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

Основы квантовых вычислений


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

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

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

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

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

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

Квантовые первопроходцы


image

К компаниям, которые в настоящее время разрабатывают оборудование для квантовых компьютеров, относятся: IBM, Alibaba, Microsoft, Google, Intel, D-Wave Systems, Quantum Circuits, IonQ, Honeywell, Xanadu и Rigetti. Многие из них работают совместно с исследовательскими группами крупных университетов, и все они продолжают добиваться значительных успехов. Дальше приводится обзор работы каждой из этих компаний.

IBM


IBM работает над созданием квантового компьютера уже более 35 лет. Она добилась значительного прогресса с несколькими работающими машинами. Согласно веб-сайту IBM-Q: Сегодня квантовые вычисления это игровая площадка для исследователей, но через пять лет они станут мейнстримом. Через пять лет эффект квантовых вычислений выйдет за рамки исследовательской лаборатории. Он будет широко использоваться новыми категориями профессионалов и разработчиков, которые используют этот новый метод вычислений для решения проблем, которые когда-то считались неразрешимыми.

В 2016 году IBM запустила сайт под названием IBM Q Experience, который показал 5-кубитный квантовый компьютер всему интернету. С этого времени, к нему присоединились вторая машина на 5 кубитов и машина на 16 кубитов, обе из которых доступны для экспериментов. Чтобы помочь тем, кто хочет узнать о квантовых вычислениях и принять участие в их разработке, IBM предлагает программную платформу для квантовых вычислений с открытым исходным кодом под названием Qiskit.

В ноябре 2017 года IBM объявила, что к её квантовому облаку добавляются две 20-кубитные машины. Их могут использовать клиенты, которые являются зарегистрированными членами IBM Q Network. IBM описывает это как всемирное сообщество ведущих компаний, стартапов, академических институтов и национальных исследовательских лабораторий из списка Fortune 500, работающих с IBM над продвижением квантовых вычислений и изучением практических приложений для бизнеса и науки.

Также в ноябре 2017 года IBM объявила что сконструировала квантовый процессор на 50 кубитов, который на тот момент считался самым мощным квантовым оборудованием.

image
50-кубитный квантовый компьютер IBM

В январе 2019 года IBM объявила о выпуске своей IBM Q System One как первой в мире интегрированной универсальной системы приближенных квантовых вычислений, разработанной для научного и коммерческого использования. Эта модульная и относительно компактная система предназначена для использования вне лабораторных условий. Вы можете узнать больше о IBM Q System One в этом пресс-релизе.

Google


Ещё один технологический гигант, который усердно работает над тем, чтобы квантовые вычисления стали реальностью, это Google, у которой есть лаборатория квантового ИИ. В марте 2017 года инженеры Масуд Мохсени, Питер Рид и Хартмут Невен, которые работают на этом объекте, опубликовали статью в Nature. В ней они рассказали, что квантовые вычисления возможны на относительно небольших устройствах, которые появятся в течение следующих пяти лет. Это подтверждает взгляды IBM на сроки появления коммерческих квантовых вычислений.

На раннем этапе развития квантовых вычислений компания Google использовала машину от канадской компании D-Wave Systems. Однако сейчас компания активно разрабатывает собственное оборудование, а в марте 2018 года анонсировала новый 72-кубитный квантовый процессор под названием Bristlecone.

В июне 2019 года директор лаборатории квантового искусственного интеллекта Google Хартмут Невен отчитался, что мощность их квантовых процессоров в настоящее время растет вдвое экспоненциально. Это было названо законом Невана и предполагает, что мы можем достичь точки квантового превосходства, когда квантовый компьютер может превзойти любой классический компьютер к концу 2019 года.

В октябре 2019 года команда инженеров Google опубликовала в Nature статью, в которой утверждала, что достигла квантового превосходства. В частности, учёные Google использовали квантовый процессор под названием Sycamore для выборки выходного сигнала псевдослучайной квантовой схемы. Sycamore потребовалось около 200 секунд, чтобы выполнить выборку одного экземпляра схемы миллион раз. Для сравнения, команда Google подсчитала, что классическому суперкомпьютеру потребуется около 10 000 лет для выполнения тех же вычислений. Далее команда пришла к выводу: Квантовые процессоры на основе сверхпроводящих кубитов теперь могут выполнять вычисления за пределами досягаемости самых быстрых классических суперкомпьютеров, доступных сегодня. Этот эксперимент знаменует собой первое вычисление, которое может быть выполнено только на квантовом процессоре. Таким образом, квантовые процессоры достигли режима квантового превосходства.

Это откровение инженеров Google было большой новостью, но вскоре вызвало споры. IBM опубликовала сообщение в блоге, сказав, что вычисления в эксперименте Google могут быть выполнены на классическом компьютере за два с половиной дня, а не за 10 000 лет. И по утверждению IBM: Поскольку первоначальное значение термина квантовое превосходство, предложенное Джоном Прескиллом в 2012 году, заключалось в описании точки, в которой квантовые компьютеры могут делать то, что не могут классические компьютеры эта граница ещё не преодолена.

Alibaba


В Китае главным интернет-гигантом является Alibaba, а не Google. А в июле 2015 года они объединилась с Китайской Академией Наук, чтобы сформировать Лабораторию квантовых вычислений CAS Alibaba. Как пояснил профессор Цзянвэй Пан, их цель состоит в том, чтобы провести передовые исследования систем, которые кажутся наиболее многообещающими для реализации практических приложений квантовых вычислений, а также разрушить узкие места закона Мура и классических вычислений. Вы можете посетить сайт лаборатории здесь.

Как и IBM, Alibaba сделала экспериментальный квантовый компьютер доступным в Интернете. В частности, в марте 2018 года китайский гигант электронного бизнеса запустил своё сверхпроводящее облако квантовых вычислений, чтобы обеспечить доступ к 11-кубитному квантовому компьютеру. Он был разработан с Китайской Академией Наук и позволяет пользователям запускать квантовые программы и загружать результаты.

Microsoft


Как и следовало ожидать, Microsoft тоже заинтересована в квантовых вычислениях и работает с некоторыми ведущими учёными и университетами мира. С этой целью Microsoft создала несколько лабораторий Station Q, например лабораторию в Калифорнийском университете. В феврале 2019 года компания также анонсировала Microsoft Quantum Network, чтобы объединить вместе все партнёрские коалиции.

Ключевым элементом стратегии Microsoft является разработка квантовых компьютеров на основе топологических кубитов, которые, по мнению компании, будут менее подвержены ошибкам (следовательно, для исправления ошибок потребуется меньшее количество системных ресурсов). Microsoft также считает, что топологические кубиты будет легче масштабировать для коммерческого применения. Согласно статье в Computer Weekly за май 2018 года, вице-президент Microsoft, отвечающий за квантовые вычисления, считает, что коммерческие квантовые компьютеры могут появиться на их облачной платформе Azure всего через пять лет.

Что касается программного обеспечения, то в декабре 2017 года Microsoft выпустила предварительную версию своего инструмента разработчика вычислительной техники. Его можно загрузить бесплатно, он включает язык программирования под названием Q# и симулятор квантовых вычислений. В мае 2019 года Microsoft сообщила, что собирается открыть исходный код инструмента разработчика. А в мае 2020 года компания анонсировала свой сервис облачных вычислений Azure Quantum.

Intel


Intel, как ведущий производитель микропроцессоров в мире, тоже работает над созданием микросхем для квантовых вычислений. Компания применяет два различных подхода. Одно из этих направлений проводится совместно с ведущим голландским пионером квантовых вычислений QuTech. 17 ноября 2017 года Intel объявила о поставке своему партнеру в Нидерландах тестового чипа на 17 кубитов. Затем, в январе 2018 года на выставке CES, компания объявила о поставке тестового квантового процессора на 49 кубитов под названием Tangle Lake.

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

image

Спиновые кубиты Intel имеют диаметр всего около 50 нанометров, или 1/1500 ширины человеческого волоса. Это означает, что, возможно, через десять лет Intel сможет производить крошечные квантовые процессоры, содержащие тысячи или миллионы кубитов. В отличие от обычных процессоров, их нужно охлаждать почти до абсолютного нуля. Но потенциал поистине захватывающий. Согласно разделу сайта Intel, посвященному квантовым вычислениям, компания нацелена на производство квантовых процессоров в течение десяти лет и ожидает, что технология начнет входить в свою коммерческую фазу примерно в 2025 году.

D-Wave Systems


D-Wave Systems пионер квантовых вычислений, базирующийся в Канаде, и ещё в 2007 году продемонстрировавший 16-кубитный квантовый компьютер. В 2011 году компания продала 128-кубитную машину D-Wave One за 10 миллионов долларов американской военно-промышленной корпорации Lockheed Martin. В 2013 году 512-кубитные D-Wave Two ведомству NASA и компании Google. К 2015 году D-Wave преодолела барьер в 1000 кубитов со своим D-Wave 2X, а в январе 2017 года продала свою первую 2000-кубитную машину D-Wave 2000Q фирме, специализирующейся в кибербезопасности, Temporal Defense Systems.

Читая этот список достижений, вы, возможно, пришли к выводу, что D-Wave должен быть ведущим производителем квантовых компьютеров в мире. В конце концов, это единственная компания, которая торгует такими машинами. Тем не менее, работа компании остаётся спорной. Это потому, что их оборудование основано на адиабатическом процессе, называемом квантовый отжиг, который другие пионеры отвергли как ограничительный и тупиковый. IBM, например, использует подход к квантовым вычислениям на основе затвора, который позволяет ей управлять кубитами аналогично тому, как транзистор управляет потоком электронов в обычном микропроцессоре. Но в системе D-Wave такого контроля нет.

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

В августе 2016 года в статье Physical Review X сообщалось, что некоторые алгоритмы работают до 100 миллионов раз быстрее на D-Wave 2X, чем на одноядерном классическом процессоре. Одним из авторов этого исследования оказался технический директор Google. Всё это говорит о том, что мнение о ценности работы D-Wave для развития квантовых вычислений остаётся спорным.

Компания продолжает продвигать свои квантовые компьютеры. В октябре 2018 года D-Wave запустила облачную квантовую среду приложений под названием Leap. Она обеспечивает доступ в реальном времени к квантовому компьютеру D-Wave 2000Q, а в марте 2019 года доступ был расширен, чтобы предоставить такую возможность Японии и всей Европе.

Rigetti



image

Ещё один игрок в области квантовых вычислений это стартап под названием Rigetti. В компании уже работает более 120 сотрудников, и они собрали 19-кубитный квантовый компьютер доступный онлайн через свою среду разработки под названием Forest.

Quantum Circuits


image

Другой стартап Quantum Circuits, основанный ведущим профессором квантовых вычислений Робертом Шёлкопфом и другими коллегами из Йельского университета. Компания привлекла 18 миллионов долларов венчурного капитала и планирует победить гигантов компьютерной индустрии в гонке за создание жизнеспособного квантового компьютера.

IonQ


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

Xanadu


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

Honeywell


image

Еще одна компания, которая применяет способ квантовых вычислений с захваченными ионами, является Honeywell. У компании огромный опыт в области бизнес-вычислений. В июне 2020 года Honeywell объявила о создании самого высокопроизводительного квантового компьютера в мире. Остальные компании отнеслись к этому скептически. Но, тем не менее, это ещё одна важная разработка особенно потому, что как стало известно, американский финансовый холдинг JPMorgan Chase уже экспериментирует со этой системой для разработки приложений финансовых услуг, включая обнаружение мошенничества и торговлю под управлением ИИ.

Amazon


Amazon не объявила о разработке аппаратного или программного обеспечения для квантовых вычислений. Однако, 2 декабря 2019 года гигант запустил ряд квантовых сервисов Amazon Web Services. К ним относится Amazon Bracket, который позволяет учёным, исследователям и разработчикам начинать эксперименты с квантовыми компьютерами от нескольких поставщиков оборудования. В частности, клиенты могут получить доступ к оборудованию от Rigetti, Ion-Q и D-Wave Systems, что означает, что они могут экспериментировать с системами, основанными на трёх различных технологиях кубитов.

Помимо Bracket, Amazon также запустила лабораторию Amazon Quantum Solutions Lab. Она предназначена, чтобы помочь компаниям подготовиться к квантовым вычислениям, позволяя им работать с ведущими экспертами. Таким образом, ключевая вещь, которую Amazon делает со своими предложениями по квантовым вычислениям, это действовать в качестве облачного брокера. То есть стать посредником между производителями квантовых компьютеров и теми, кто захочет воспользоваться их мощностями.

Разработчики программного обеспечения для квантовых компьютеров


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

1QBit


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

CQC


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

QC Ware


QC Ware разрабатывает корпоративное программное обеспечение и услуги для квантовых вычислений с клиентами, включая Airbus, BMW и Goldman Sachs, и партнерами по оборудованию, включая AWS, D-Wave Systems, Google, IBM, Microsoft и Rigetti.

QSimulate


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

Rahko


Rahko создаёт ПО, которое предназначено для использования квантового машинного обучения (квантового ИИ) под решения задач квантовой химии.

Zapata


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

Пользователи приложений квантовых компьютеров


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

image

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

Другой автомобильный гигант Volkswagen работает с Google и с D-Wave Systems, чтобы применить квантовые компьютеры в решении проблем оптимизации транспортного потока и в разработке лучших аккумуляторов.

В финансовом секторе, JPMorgan работает с IBM, чтобы изучить, как квантовые компьютеры смогут помочь в разработке торговых стратегий, оптимизации портфеля, ценообразования на активы и анализа рисков. Другой финансовый конгломерат Barclays участвует в сети IBM Q Network, чтобы выяснить, можно ли использовать квантовые компьютеры для оптимизации расчётов по крупным пакетам финансовых транзакций.

В 2011 году аэрокосмический гигант Lockheed Martin стал первым покупателем квантового компьютера, произведенного D-Wave Systems, и продолжил изучение возможности использования этой технологии для приложений, включая управление воздушным движением и проверку системы. Airbus аналогичным образом исследует, как квантовые компьютеры могут ускорить его исследовательскую деятельность, и вложил средства в компанию QC Ware, производящую программное обеспечение для квантовых машин.

Тем временем Accenture Labs и биотехнологическая компания Biogen сотрудничают с 1QBit, исследуя, как можно ускорить открытие лекарств, применив квантовые компьютеры для молекулярных сравнений. В сентябре 2017 года IBM использовала своё 7-кубитное оборудование для моделирования структуры трёхатомной молекулы гидрида бериллия. В октябре 2017 года Google и Rigetti также анонсировали OpenFermion, программу для моделирования химических процессов на квантовом компьютере.

Квантовое будущее


image

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

Для тех, кто хочет узнать больше, приведу несколько избранных источников для получения дополнительной информации:


В книге Digital Genesis Кристофера Барнатта автора этой статьи и сайта explainingcomputers.com, вы сможете прочитать о квантовых вычислениях и многом другом, связанном с будущими вычислительными разработками, например органическими компьютерами.

image
Подробнее..

Перевод Понимание квантовых вычислений через случайное блуждание пьяненьких людей

18.04.2021 14:12:21 | Автор: admin
image

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

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

image

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

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

Познакомьтесь с квантовым пьяницей


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

image

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

image

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

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

image

Форма колоколообразная, и интересной особенностью колоколообразной кривой является то, что разброс середины (наиболее вероятное место, где можно найти пьяницу) представляет собой квадратный корень из количества шагов, которые делает пьяный ходок. Когда пьяница проходит девять барных стульев, разброс кривой равен трем; служба безопасности, вероятно, найдет их в пределах трех барных стульев от того места, где пьяница сидел изначально. Когда пьяница сделает 100 попыток, служба безопасности скорее всего найдет пьяницу в радиусе 10 табуретов от того места, откуда стартовал пьяница. Эти статистические данные помогают службам безопасности узнать, где они, скорее всего, найдут пьяного ходока, который находится где-то недалеко от точки старта.

image

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

Суперпозиция одно из фундаментальных понятий квантовой механики и один из инструментов, позволяющих различать квантовую информацию и классическую информацию. Чтобы получить больше удовольствия от суперпозиций, прочтите этот пост Strangeworks о некоторых основах кубитов.

Квантовый пьяница будет идти в суперпозиции левого и правого одновременно без определенного местоположения, пока служба безопасности не найдет его.

image

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

image

В отличие от гладкого распределения колоколообразной кривой, они обнаружат распределение клыков, показанное ниже:

image

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

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

image

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

image

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

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

image

По мере того, как мы отправляем все больше и больше пьяниц, квантовые справятся с этой проблемой экспоненциально лучше, чем классические!

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

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

Начните программировать квантовые компьютеры


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

Вот несколько отличных отправных точек:

Поиграйте с кодом для упрощенного квантового случайного блуждания

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

Начало работы с платформой Strangeworks

Если вы просто хотите окунуться в мир квантовых вычислений, нет ничего лучше, чем совершить экскурсию по платформе Strangeworks Quantumcomputing.com. Это руководство является идеальной отправной точкой для этой новой парадигмы вычислений.



Наши серверы можно использовать для вычислений.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Квантовое машинное обучение знакомимся с Tensorflow Quantum

19.10.2020 18:20:51 | Автор: admin

На Хабре практически нет информации про квантовое машинное обучение (Quantum Machine Learning), и в этой статье я постараюсь подробнее раскрыть тему. Сразу скажу, что промышленных квантовых компьютеров сегодня не существует, все основные разработки в этой области носят теоретический характер, а задачу, которую мы будем разбирать в статье можно решить по классике за доли секунд. Но ведь еще 30 лет назад была так называемая зима искусственного интеллекта, а сегодня нейронные сети буквально окружают нас. Кто знает, может быть вскоре и квантовые компьютеры станут неотъемлемой частью нашей жизни? К тому же область квантовых вычислений, а тем более область QML, обладает особой притягательностью и таинственностью и, как минимум, стоит быть замеченной.


Head image


В статье я постарался рассказать о QML в целом, а также об основном строительном блоке QML Variational Quantum Circuit. Большую часть статьи я постарался сделать практической, c примерами кода на Cirq, а в конце добавил реализацию одного из базовых алгоритмов QML на Tensorflow Quantum.


Введение


Гипотетически QML имеет ряд существенных преимуществ, по сравнению с классическим машинным обучением. Variational Quantum Circuit, или VQC, которые можно назвать аналогом классических полносвязных слоев в обычных нейронных сетях, являются более выразительными и при этом содержат меньше обучаемых параметров. Ряд квантовых алгоритмов потенциально также дает существенное ускорение по сравнению с обычными аналогами:


Метод Ускорение
Bayesian Inference $O(\sqrt{N})$
Online Perceptron $O(\sqrt{N})$
Least Square Fitting $O(\log(N))$
Classical Boltzman Machine $O(\sqrt{N})$
Quantum Boltzman Machine $O(\log(N))$
Quantum PCA $O(\log(N))$
Quantum SVM $O(\log(N))$
Quantum RL $O(\sqrt{N})$

Для наиболее полного ознакомления с темой я рекомендую обзор 2017-го года в журнале Nature или препринт той же работы в arXiv. Именно из этой работы я взял данную таблицу. В ней указано ускорение по сравнению с классическим аналогом. Так, $O(\sqrt{N})$ подразумевает, что квантовый алгоритм квадратично быстрее, чем его классический аналог, а $O(\log(N))$ означает экспоненциальное ускорение.


Маленькая ремарка про Дираковскую нотацию

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


  • Вектор столбец $\vec{\Psi} := \left | \Psi \right >$
  • Вектор строка $\vec{\Psi}^T := \left < \Psi \right |$
  • Скалярное произведение это $\vec{\Psi}^T\cdot\vec{\Phi} := \left < \Psi \Phi \right >$
  • Умножение матрицы на вектор или действие оператора на состояние $ \mathbf{H}\cdot \vec{\Psi} := \hat{\mathbf{H}}\left | \Psi \right >$
  • Ожидаемое значение оператора в состоянии $\vec{\Psi}^T\cdot\mathbf{H}\cdot\vec{\Psi} := \left < \Psi \right | \hat{\mathbf{H}} \left | \Psi \right > $

Основа QML


Как я уже говорил, основной строительный блок в QML это Variational Quantum Circuit. Их мы детально рассмотрим чуть позже, но в целом любая статья или любой новый алгоритм по QML будет так или иначе содержать набор VQC или их вариаций. Такие блоки не являются чисто квантовыми схемами, и в этом они сильно отличаются, например, от широко известных квантовых алгоритмов Шора или Гровера. В основном QML строится по гибридной схеме, когда у нас есть параметризованные квантовые схемы, такие как VQC, и они составляют собой квантовую часть. Классическая часть обычно отвечает за оптимизацию параметров квантовых схем, например, градиентными методами, так, чтобы VQC, подобно слоям нейронных сетей, выучивали нужные нам преобразования входных данных. Именно так построена библиотека Tensorflow Quantum, где квантовые слои сочетаются с классическими, а обучение происходит как в обычных нейронных сетях.


Variational Quantum Circuit


VQC это простейший элемент систем квантово-классического обучения. В минимальном варианте представляет собой квантовую схему, которая кодирует входным вектором данных $\vec{X}$ квантовое состояние $\left | {\Psi} \right >$ и далее применяет к этому состоянию параметризованные параметрами $\theta$ операторы. Если проводить аналогию с обычными нейронными сетями, то можно представить себе VQC как некий черный ящик, или слой, который выполняет преобразование входных данных $\vec{X}$ в зависимости от параметров $\theta$. И тогда, можно сказать, что $\theta$ это аналог весов в классических нейронных сетях.


Вот так выглядит простейшая VQS, где вектор $\vec{X}$ кодируется через вращения кубитов вокруг оси $\mathbf{X}$, а параметры $\theta$ кодируют вращения вокруг оси $\mathbf{Y}$:


Simple VQC scheme


Разберем этот момент подробнее. Мы хотим закодировать входной вектор данных $\vec{X}$ в состояние $\left | \Psi \right >$, по сути своей, выполнить операцию перевода классических входных данных в квантовые. Для этого мы берем $N$ кубитов, каждый из которых исходно находится в состоянии $\left | 0 \right >$. Состояние каждого отдельного кубита мы можем представить как точку на поверхности сферы Блоха:


Сфера Блоха


Мы можем вращать состояние $\left | \Psi \right >$ нашего кубита, применяя специальные однокубитные операции, так называемые гейты $Rx$, $Ry$, $Rz$, соответствующие поворотам относительно разных осей сферы Блоха. Мы будем поворачивать каждый кубит, например, по оси $\mathbf{X}$ на угол, определяемый соответствующей компонентой входного вектора $\vec{X}$.


Получив квантовый входной вектор, мы хотим теперь применить к нему параметризованное преобразование. Для этого мы будем вращать соответствующие кубиты уже по другой оси, например, по $\mathbf{Y}$ на углы, определяемые параметрами схемы $\theta$.


Это наиболее простой пример VQC, и, как мы увидим дальше, есть более сложные модификации, но суть у всех приблизительно одна.


В библиотеке для квантовых вычислений Cirq от компании Google, которой мы будем активно пользоваться, это можно реализовать, например, так:


Код на Cirq для простейшей VQC
import cirqimport sympyqubits = cirq.LineQubit.range(10)x = sympy.symbols("x0:10")thetas = sympy.symbols("t0:10")circuit = cirq.Circuit()for i in range(10):    circuit.append(cirq.rx(x[i])(qubits[i]))    circuit.append(cirq.ry(thetas[i])(qubits[i]))

  • cirq.LineQubit это кубит на одномерной цепочке, а метод range создает нам сразу нужное число кубитов;
  • В Cirq все кубиты изначально находятся в состоянии $\left | 0 \right >$, так что нам не нужно специально их инициализировать;
  • cirq.Circuit это как раз наша схема, объединенный набор квантовых гейтов (или по другому вентилей) квантовых операций над кубитами;
  • cirq.rx, cirq.ry это наши вращения фазы на нужный угол в радианах.

Тут мы также воспользовались библиотекой символьной алгебры SymPy, просто Cirq позволяет параметризовывать схемы лишь через нее.


Таким образом, мы получаем квантовую ячейку circuit, которая параметризируется классическими параметрами и применяет преобразование к классическому входному вектору. Именно на таких блоках и строятся алгоритмы квантово-классического обучения. Мы будем применять преобразования к классическим данным на квантовом компьютере (или симуляторе), измерять выход нашей VQC и далее использовать классические градиентные методы для обновления параметров VQC.


Variational Quantum Eigensolver


Основой многих алгоритмов квантового машинного обучения является Harrow-Hasssidim-Loloyd алгоритм (есть препринт в arXiv) для поиска решения систем линейных уравнений. Именно на основе этого алгоритма построен, например, квантовый SVM наиболее известный и многообещающий алгоритм QML. Однако HHL достаточно сложный и начинать рассказ с него было бы странно. Вместо этого, далее, мы посмотрим как устроен другой алгоритм Variational Quantum Eigensolver, алгоритм поиска минимальных собственных значений эрмитовых матриц, который лежит в основе HHL.


Почему именно проблема собственных значений? Ответ прост:


  • поиск минимальных собственных значений эрмитовых операторов важная задача физики, именно для нее Р. Фейнман впервые предложил модель квантового компьютера;
  • Variational Quantum Eigensolver является ключевой частью HHL-алгоритма, итерация HHL сводится к задаче о собственных значениях;
  • Сам алгоритм достаточно прост как для понимания, так и для реализации.

Опишем задачу формально.


Дана эрмитова матрица $\hat{\mathbf{H}}$, или, другими словами, самосопряженный эрмитив оператор. Требуется найти $\lambda_0$, которое является минимальным собственным значением оператора $\hat{\mathbf{H}}$.


Для решения этой задачи мы воспользуемся так называемой Вариационной теоремой (Variational theorem), которая для оператора $\hat{\mathbf{H}}$ дает нам следующее:


$\left < \hat{\mathbf{H}} \right >_{\left | \Psi \right >} = \left < \Psi \right | \hat{\mathbf{H}} \left | \Psi \right > \geq \mathbf{E}_0$


где $\mathbf{E}_0$ это минимальное собственное значение оператора. По сути тут сказано, что ожидаемый результат измерения оператора $\hat{\mathbf{H}}$ в состоянии $\left | \Psi \right >$ всегда больше или равен минимальному собственному значению этого оператора. На этом и строится наш процесс:


  1. Готовим состояние $\left | \Psi(\theta_k) \right >$, параметризованное вектором параметров $\theta_k$
  2. Измеряем ожидаемое значение $\lambda_k$ оператора $\hat{\mathbf{H}}$ в этом состоянии $\left | \Psi(\theta_k) \right >$
  3. Оцениваем градиент $g_k = \frac{\partial\lambda}{\partial\theta}$, ожидаемого значения по весам $\theta$
  4. Обновляем вектор $\theta$: $\theta_{k + 1} = \theta_k - \gamma \cdot g_k$

Таким образом, наш параметризованный вектор $\left | \Psi(\theta_k) \right >$ каждый раз будет все ближе к первому собственному вектору оператора, а $\lambda_k$ будет (с погрешностью на оценку ожидания) приближаться к минимальному собственному значению $\mathbf{E_0}$.


Надеюсь, больше понимания станет, когда мы посмотрим, как это выглядит в коде.


Реализация на Tensorflow Quantum


Для начала краткие обозначения импортов:


Код импортов
import tensorflow as tfimport tensorflow-quantum as tfq

Tensorflow Quantum специальная библиотека, которая позволяет использовать схемы Cirq как тензоры Tensorflow, а также содержит специализированные варианты tf.keras.Layers для квантово-классического обучения. Библиотека совместима со стилем и другими слоями tf и позволяет задействовать систему автоматического диффиренцирования Tensorflow. Одним из таких tfq.layers мы и воспользуемся это tfq.layers.SampledExpectation.


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


Сигнатура и описание слоя tfq.layers.SampledExpectation
layer = tfq.layers.SampledExpectation()res = layer(    circuit,    symbol_names,    symbol_values,    operators,    repetitions,)

  • cicuit схема (cirq.Circuit), параметризирующая состояние $\left | \Psi \right >$
  • symbol_names символы sympy, которые параметризируют состояние
  • symbol_values значения символов-параметров (обычно tf.Variable)
  • operators операторы (например, cirq.PauliSum)
  • repetitions число измерений, по которым оценивается значение оператора

Этот слой явно реализует нам для оператора $\hat{\mathbf{Op}}$ оценку значения оператора в конкретном состоянии по определенному числу измерений:


$\left < \Psi(\theta) \right | \hat{\mathbf{Op}} \left | \Psi(\theta) \right >$


А параметры в формуле связаны с сигнатурой метода call следующим образом:


Формула Сигнатура tfq.layers.SampledExpectation.call
$\theta$ symbol_values значения параметров
$\Psi$ circuit квантовая схема готовит нам состояние
$\Psi(\theta)$ symbol_names связь параметры схемы с symbol_values
$\hat{\mathbf{Op}}$ operators оператор, например cirq.PauliSum

Параметр repetition не имеет прямой связи с математическим формализмом, но именно он показывает нам насколько хорошо мы оцениваем значение оператора.


Но перед началом всего обучения необходимо решить, как именно мы будем параметризовать состояние. В вышеописанных терминах нам надо определить $\left | \Psi(\theta) \right >$, который мы будем передавать в качестве параметра circuit в tfq.layers.SampledExpectation. В данном случае воспользуемся более сложной параметризацией, где на каждый спин у нас будет три параметра: $\theta_x, \theta_y, \theta_z$, а не один:


Код VQC для Eigensolver-а
qubits = cirq.GridQubit.rect(dim, 1)params_x = sympy.symbols(f"x0:{dim}")params_y = sympy.symbols(f"y0:{dim}")params_z = sympy.symbols(f"z0:{dim}")cirquit = cirq.Circuit()for i in range(dim):    cirquit.append(cirq.rx(params_x[i])(qubits[i]))    cirquit.append(cirq.ry(params_y[i])(qubits[i]))    cirquit.append(cirq.rz(params_z[i])(qubits[i]))

Выглядит наша схема так:
Наша реализация VQC


Для примера, найдем минимальное собственное значение оператора Transverse-field Ising, так называемой квантовой модели Изинга. Этот оператор строится применением операторов Паули (в нашем варианте это будут $\sigma^z$ и $\sigma^x$) и имеет два классических параметра $J, h$. Параметры $J, h$ на самом деле имеют физический смысл, а сам оператор часто применяют для описания Гамильтонианов реальных физических систем, то есть это не просто абстрактная задача. Но сейчас аспекты физики нас интересуют в меньшей степени. На самом деле любой эрмитов оператор можно определить в терминах матриц Паули, так что выбрав Изинга мы не теряем общности рассуждений.


$TFI = -J \cdot \sum_{i=1}^{n - 1} \sigma^z_i \cdot \sigma^z_{i + 1} + h \cdot \sum_{i=1}^n \sigma^x_i$


Это оператор размерности $2^N \times 2^N$, где $N$ это число кубитов, на которое он действует. Так как квантовые симуляторы достаточно прожорливы, а доступ к реальным кубитам в Google Cloud Platform стоит денег, то не будем брать большую размерность $N$. Сейчас нам интересно просто посмотреть, как оно работает, о каком-то превосходстве квантовых алгоритмов на реальных задачах речи не идет. Запишем реализацию этого оператора в коде Cirq.


TFI оператор (матрица) в коде Cirq
def get_ising_operator(    qubits: List[cirq.GridQubit], j: float, h: float) -> cirq.PauliSum:    op = h * cirq.X(qubits[-1])    for i, _ in enumerate(qubits[:-1]):        op -= j * cirq.Z(qubits[i]) * cirq.Z(qubits[i + 1])        op += h * cirq.X(qubits[i])    return op

Хотелось бы еще раз обратить внимание на тот факт, что для $N$ кубитов оператор TFI это матрица размера $2^N \times 2^N$ (а не $N \times N$, как можно было бы подумать!) Чтобы убедится в этом, ниже, под спойлером, будет код определения такого же оператора на чистом NumPy в виде разреженной комплексной матрицы:


Код TFI на чистом NumPy и еще немного формул

Рассмотрим, например, оператор Паули $\sigma^z$. Согласно определению, это матрица $2 \times 2$:


$\sigma^z = \begin{matrix}1 & 0 \\ 0 & -1\end{matrix}$


Но, как можно было заметить, у нас система из $N$ кубит, а оператор, который действует на такую систему, это оператор размерности $2^N \times 2^N$. Чтобы понять, как мы от матрицы $2 \times 2$ переходим к матрице $2^N \times 2^N$, рассмотрим оператор $\sigma^z_k$, который действует на $k$-й кубит в системе. Это эквивалентно тому, что мы действуем оператором $\sigma^z$ на $k$-й кубит, а на остальные мы действуем единичными операторами $\mathbf{1}$. Запишем это явно, используя произведение Кронекера $\otimes$:


$\sigma^z_k = \mathbf{1}\otimes\mathbf{1}\otimes ... \otimes \sigma^z \otimes ... \otimes \mathbf{1} \otimes \mathbf{1}$


Определив схожим образом другие матрицы Паули, мы можем определить наш TFI оператор просто через операции привычной линейной алгебры:


import numpy as npfrom scipy import sparsedef sigmaz_k(k, N) -> sparse.csr_matrix:    res = 1    for i in range(N):        if i == k:            res = sparse.kron(                res,                sparse.csr_matrix(                    np.array([[1, 0], [0, -1]], dtype=np.complex)                )            )        else:            res = sparse.kron(res, sparse.eye(2, dtype=np.complex))    return resdef sigmax_k(k, N) -> sparse.csr_matrix:    res = 1    for i in range(N):        if i == k:            res = sparse.kron(                res,                sparse.csr_matrix(                    np.array([[0, 1], [1, 0]], dtype=np.complex)                )            )        else:            res = sparse.kron(res, sparse.eye(2, dtype=np.complex))    return resdef tfi_op(N, j, h) -> sparse.csr_matrix:    res = sparse.csr_matrix((2 ** N, 2 ** N), dtype=np.complex)    for i in range(N - 1):        res += -j * sigmaz_k(i, N) * sigmaz_k(i + 1, N)        res += h * sigmax_k(i, N)    res += h * sigmax_k(N - 1, N)    return res

Это как раз и будет наша матрица $2^N \times 2^N$. В лоб перемножать матрицы не самый эффективный метод, моя реализация наивная, но идейно это то же самое, что происходит в Cirq.


Как я уже писал, минимальное собственное значение этого оператора мы легко найдем классическими методами (например, алгоритм Арнольди) в пару строчек кода, используя готовые рутины:


Код классического решения нашей задачи

Для определенного выше оператора Cirq op мы можем явно получить его матрицу, вызвав метод op.matrix(). Ну и рутины из scipy.sparse.linalg.


from scipy import sparsefrom scipy.sparse import linalgexact_sol = linalg.eigs(    sparse.csc_matrix(op.matrix()), k=1, which="SR", return_eigenvectors=False)[0]print(f"Exact solution: {np.real(exact_sol):.4f}")

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


Это значение нам потом пригодится для оценки того, куда и как сходится наш квантовый алгоритм.


Ну и наконец самое интересное, код для обучения нашей VQC на Tensorflow Quantum.


Код обучения
# Операторop = get_ising_operator(qubits, j, h)# Модельmodel = tfq.layers.SampledExpectation()# Вектор обучаемых параметровthetas = tf.Variable(np.random.random((1, 3 * dim)), dtype=tf.float32)log_writer = tf.summary.create_file_writer("train")for epoch in tqdm(range(epochs)):    with tf.GradientTape() as gt:        out = model(            cirquit,            symbol_names=params_x + params_y + params_z,            symbol_values=thetas,            operators=op,            repetitions=5000,        )    grad = gt.gradient(out, thetas)    thetas.assign_sub(lr * grad)    with log_writer.as_default():        tf.summary.scalar("Eigen Val", out[0, 0], step=epoch)        tf.summary.histogram("Gradients", grad, step=epoch)

lr тут это параметр, отвещающий за скорость градиентного спуска и являющийся гиперпараметром.


Это простейший стандартный цикл обучения в Tensorflow, а model это объект класса tf.keras.layers.Layer, для которого можно применять все наши привычные оптимизаторы, логгеры и приемы из классического глубокого обучения. Параметры VQC хранятся в переменной типа tf.Variable и обновляются по простому правилу $\theta_{k+1} = \theta_k - \gamma \cdot g_k$, это минимальная реализация градиентного спуска со скоростью $\gamma$. Каждый раз мы используем 5000 измерений для максимально точной оценки ожидаемого значения нашего оператора $\hat{\mathbf{Op}}$ в состояниии $\left | \Psi(\theta_k) \right >$. Все это в течение 350 эпох. На моем ноутбуке для $N = 5$, $j = 1.0$ и $h = 0.5$ процесс занял порядка 40 секунд.


Визуализируем графики обучения (scipy дал точное решение $\simeq -0.47$): tensoboard --logdir train/


Результат по эпохам обучения
Гистограмма градиентов по эпохам обучения


Это уже привычные всем специалистам по машинному обучению картинки Tensorboard. Можно видеть, как собственное значение хорошо сходится к точному, а градиенты идут к нулю.


Замечание про точное решение

Внимательный читатель мог заметить, что решение VQC оказалось ниже решения прямой диагонализации. Я думаю причин тут две:


  1. tfq.layers.SampledExpectation, скорее всего, производит измерения $\left < \Psi(\theta) \right | $ и $ \hat{\mathbf{Op}} \left | \Psi(\theta) \right > $, после чего вычисляет ожидание прямым перемножением восстановленных волновых функций. Я думаю, основная погрешность живет именно в вероятностном характере квантовых измерений и их симуляций, потому что обычно мы измеряем все по оси $\mathbf{Z}$, а фазу определяем, решая задачу квантовой томографии. Ну, по крайней мере, я бы делал такой слой именно так, хотя не берусь утверждать, что именно под капотом у Tensorflow Quantum.
  2. Итеративные алгоритмы дают нам ответ с мнимой частью отличной от нуля, что говорит о том, что они тоже не до конца точны (на то они и итеративные), так как из физики мы знаем, что наблюдаемые это все же реальные числа. В свою очередь, это тоже может давать некий сдвиг, так как в сигнатуре вызова scipy.linalg.eigs мы явно просили алгоритм найти собственные числа с минимальной действительной частью (which="SR"), а, возможно, надо было просить что-то другое.

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


Еще пара слов о потенциале такого Eigensolver-а


Несмотря на игрушечность примера с 5-ю кубитами, я бы хотел еще раз напомнить, что мы работаем с матрицей $2^N \times 2^N$. Более того, в сравнении с классическими методами глубокого обучения, сама идея о том, что мы параметризуем преобразование $\mathbf{C}^{2^N} \to \mathbf{C}^{2^N}$ при помощи всего лишь $O(N)$ параметров (в нашем случае ровно $3N$) выглядит очень перспективно. Для сравнения в классическом глубоком обучении такое преобразование кодировалось бы квадратной матрицей весов $W \in \mathbf{C}^{2^{N + 1}}$, то есть экспоненциально большим числом параметров. При этом в ряде работ было показано, что в сравнении с обычными полносвязными слоями нейронных сетей VQC даже более выразительны при столь меньшем числе параметров! Именно этим, как мне кажется, обусловлен такой живой интерес к этой области: если бы имели бы реальный квантовый компьютер, QML на основе таких VQC, вероятно, были бы гораздо круче классических нейронных сетей во многих задачах.


Заключение


Несомненно, сейчас не идет речи о каком-то реальном применении QML. Для сравнения наша VQC обучалась около 45 секунд на моем ноутбуке, а scipy.sparse.eigs потребовались доли секунд, чтобы найти минимальное собственное значение. К тому же, даже на симуляторе, где нет шума, оценка tfq.layers.SampledExpectation явно хромает, что уж говорить о реальных квантовых компьютерах. Но сейчас очень многие частные компании, такие как Google, IBM, Microsoft и другие, а также правительства и институты тратят огромные ресурсы на исследования в данном направлении. Квантовые компьютеры уже сегодня доступны для тестирования в облачных серверах IBM и AWS. Многие ученые высказывают уверенность в скором достижении квантового превосходства на практических задачах (напомню, превосходство на специально выбранной удобной для квантового компьютера задаче было достигнуто Google в прошлом году). Все это, а также таинственность и красота квантового мира, делает эту область такой привлекательной. Надеюсь, эта статья поможет и вам погрузиться в дивный квантовый мир!


Весь используемый код можно посмотреть в моем GitHub.

Подробнее..

Программирование квантовых компьютеров джентльменский набор издательства Питер

30.09.2020 08:10:03 | Автор: admin

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

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

В 2016 году к нам в издательство от зарубежных коллег пришла очень занимательная книга: The Future X Network: A Bell Labs Perspective. Если вы раньше не слышали о Лаборатории Белла обязательно поинтересуйтесь. Весьма незаурядная организация!

К сожалению, на русском языке она издана так и не была. И всё же мы её внимательно изучили. Это не абстрактная футурология, а очень серьёзное исследование с прогнозами до 2025 года, которые глупо игнорировать. Более того, проверяя сейчас, спустя 5 лет после составления этих прогнозов (книгу писали в 2015-м, ещё до того как их купила Nokia), соответствие их действительности очень впечатляет.

Среди многих тем наше внимание особо привлекли те, что касались вычислений. Спрос и предложение, технологии и перспективы. Здесь-то мы и получили первые серьёзные сигналы о том, что облачные вычисления и инфраструктура, квантовые компьютеры из предположений и экспериментов превращаются в осязаемый, ускоряющийся фактор трансформации всего IT (а чуть позже и не IT тоже).

С этими мыслями и чувствами мы начали искать.

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

Наконец ближе к концу 2018 года желания сошлись с возможностями. Мы нашли и приняли в план издательства нашу первую книгу из этого портфеля: "Квантовые вычисления для настоящих айтишников".

Почти год прошёл от принятия решения до постановки книги на полки розничных и виртуальных магазинов.

Раз уж с практикой на тот момент было затруднительно, ведь ещё не было работающих машин с адекватного размера квантовым объёмом, мы рассудили, что нашей аудитории больше пригодится понятный и точный путеводитель по теории квантовых вычислений. В книге соблюдён тонкий баланс между количеством вопросов, которые необходимо обсудить с читателем, и глубиной дебрей, в которые придётся залезть, чтобы результат не был обманчиво упрощён.

В качестве нашей утренней звезды выступила книга от The MIT press, впоследствии ставшая бестселлером на Amazon. К слову, мы приняли книгу к изданию почти за полгода до её релиза на Западе.

Дальше случилось неожиданное!

На CES 2019 был представлен Первый коммерческий квантовый компьютер - IBM. То есть мы, конечно, предполагали, что IBM будет активно работать в этом направлении. Однако их успехи превзошли наши ожидания.

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

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

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

"Разработка с использованием квантовых компьютеров" подойдёт для разработчиков, уже владеющих хотя бы базовыми знаниями в CS и основами языка Python. Книга предназначена для формирования навыков работы как с симулятором, так и с настоящим квантовым компьютером, к которому безвозмездно даёт доступ IBM. Автор учит нас пользоваться специальным фреймворком от IBM (пишем код на Python, фреймворк сам транслирует его в команды для железа и оптимизирует их), а также предлагает минимальный необходимый набор теории. Есть и несколько небольших учебных проектов, в которых наглядно реализован особый подход к решению задач, с использованием преимуществ квантовых вычислений. В общем, идеальный вариант для тех, кто любит сначала поиграть, покрутить и лишь потом решать, сколько тратить времени на углубленное изучение.

Эту книгу мы успели выпустить вовремя, в этом же месяце прошёл CES 2020, IBM и первое настоящее коммерческое применение нового квантового компьютера. Прошёл и полностью подтвердил все предположения и заявления, которыми мы руководствовались.

Научного редактора для этого издания я нашёл на Хабре (Михаил Коробко akaShkaff). Наверняка многие из вас читали его увлекательные посты о гравитационной астрономии и квантовых технологиях, благодаря которым она (астрономия) стала возможна.

Кстати, тираж книги уже почти распродан. Если она заинтересовала убедительно советую не откладывать покупку, иначе придётся довольствоваться электронным вариантом.

Третьей книгой в нашем портфеле стала "Программирование квантовых компьютеров. Базовые алгоритмы и примеры кода".

Как понятно из названия, это нечто среднее между предыдущими двумя. С одной стороны, мы изучаем что-то довольно фундаментальное алгоритмы. Хотя и гораздо более динамичное, чем сами основы квантовой физики и квантовых вычислений, которые обсуждали в "Квантовых вычислениях для настоящих айтишников". Практические задачи перед квантовыми компьютерами только начинают ставить, и ансамбль алгоритмов ещё долго будет пополняться. Что не мешает приступить к изучению уже созданных, а возможно, и внести собственный вклад и предложить алгоритм сообществу.

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

Автор выбрал в качестве основной инфраструктуру Microsoft второго, на наш взгляд, игрока этой гонки. Публичные инструменты, тот же Q#, они начали развивать раньше IBM, он даже замечен в профильных российских программах подготовки магистров. Таким образом, это решение использовать наработки Microsoft не идеологическое, а вполне прагматичное. Тем не менее, это не книга с игрой в одни высокотехнологичные ворота. Например, вот так автор соединяет квантовую физику, железо, софт и теорию программирования:

Если вы хотите освоить телепортацию, лучше всего опробовать ее в деле. Учтите, что на протяжении всей человеческой истории до момента написания книги лишь несколько тысяч людей выполняло физическую телепортацию какого-либо рода, так что даже выполнение следующего кода ставит вас в число первопроходцев. Для данного примера вместо системы моделирования мы воспользуемся реальным пятикубитным QPU компании IBM (рис. 4.1). Вы сможете скопировать пример кода из листинга 4.1 на сайт IBM Q Experience, щелкнуть на кнопке и убедиться в том, что телепортация прошла успешно.

Рис. 4.1. Микросхема IBM очень мала, так что перемещение кубита будет довольно коротким; на иллюстрации и схеме выделены части QPU, между которыми будет происходить телепортацияРис. 4.1. Микросхема IBM очень мала, так что перемещение кубита будет довольно коротким; на иллюстрации и схеме выделены части QPU, между которыми будет происходить телепортация

Для программирования IBM Q Experience можно использовать OpenQASM и Qiskit. Обратите внимание: в листинге 4.1 содержится не код JavaScript, предназначенный для выполнения в QCEngine, а код OpenQASM, предназначенный для выполнения в облачном интерфейсе IBM (рис. 4.2). Выполнение этого кода позволит вам не смоделировать, а реально выполнить телепортацию кубита в исследовательском центре IBM в Йорктаун Хайтс (Нью-Йорк). Мы подробно опишем, как это делается. Подробное рассмотрение этого кода также поможет вам точно понять, как работает квантовая телепортация.

Пример кода

Этот пример можно выполнить онлайн по адресу http://oreilly-qc.github. io?p=4-1.

Листинг 4.1. Телепортация с проверкой

include "qelib1.inc";qreg q[5]; creg c[5];// Шаг 1: создать запутанную пару h q[2]; cx q[2],q[4]; barrier q[0],q[1],q[2],q[3],q[4];// Шаг 2: подготовить данные x q[0]; h q[0]; t q[0]; barrier q[0],q[1],q[2],q[3],q[4];// Шаг 3: отправить h q[0]; h q[2]; cx q[2],q[0];h q[2]; measure q[0] -> c[0]; measure q[2] -> c[2]; barrier q[3],q[4];// Шаг 4: получить x q[4]; z q[4]; barrier q[3],q[4];// Шаг 5: проверить tdg q[4]; h q[4]; x q[4]; measure q[4] -> c[4];

Научным редактором книги выступил уже известный вам Михаил Коробко akaShkaff

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

Автор Роберт Сатор (привет TENET, привет Нолан!), вице-президент направления IBM по квантовым компьютерам.

CV автора

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

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

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

Ilyas Khan, CEO, Cambridge Quantum Computing

Подробнее о книге вы сможете прочитать в нашем блоге в период предзаказа/старта продаж. К сожалению, точной даты я сейчас назвать не могу, сориентирую на начало 2021 года. Советую подписаться на наш блог и/или почтовую рассылку, чтобы не пропустить!

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

Резюмируем. Примерно таким образом в издательстве "Питер" мы работаем над тем, чтобы наши читатели получал доступ к сливкам компьютерной литературы. Конечно, не получится избавиться от некоторого лага с англоязычным миром. Однако мы работаем на опережение, отсматриваем книги зачастую ещё на этапе концепции от западных издательств и вместо вас сортируем сотни книг, вылавливая лучшее! Могу уверенно сказать, что среди локальных (национальных) книжных рынков русскоязычный читатель от IT получает самый широкий и актуальный выбор.

Подробнее..

Разрабы. Новая точка отсчета

20.07.2020 18:22:00 | Автор: admin


В мире что-то не так или это у меня в голове?
Невидимые пятна на солнце, какая-то пыль на траве
Счастье не греет; оно где-то за стеклянной стеной
Иногда мне кажется тяжелый рок висит надо мной

БГ

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

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

Сначала коротко сформулирую основную мысль: наконец-то кто-то не побоялся снять сериал о философских, моральных и научных проблемах, связанных с квантовыми теориями и квантовыми вычислениями.

Если позволите, я не буду сильно заострять внимание на жутких рожах, убивающих друг друга различными способами, а также на современного вида героине, которую мы часто можем видеть в современного вида нижнем белье. Мне это все тоже безумно понравилось :) Но хотелось бы большую часть обсуждения посвятить темам в которых сериал действительно силен.


Проклятие детерминизма


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

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

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

Но в сериале есть еще одна тема, которая на мой взгляд отработана очень интересно и с филигранной точностью.

Безвременный уход в миры Эверетта


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

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

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

Квантовый пулемет оружие смелых


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

Исследователь направляет квантовый пулемет на себя и отдает команду на стрельбу. Если многомировая интерпретация верна, то исследователь услышит лишь серию холостых выстрелов. Живым и невредимым он вернется в круг своих родных и близких, а в научном мире (в том мире где он выжил) он станет кем-то вроде святого и Нобелевские премии в течении ста лет будут выплачиваться именно ему.

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

Хрупкие шестеренки вселенной


Центральным устройством в сериале является квантовый компьютер (почему-то немного похожий на устройство из фильма Иван Васильевич меняет профессию :). Поэтому хочется также затронуть тему квантовых вычислений.

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

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

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

Власть сознания над материей


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

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

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

Финал, которого не было


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

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

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

Но этого почему-то не произошло.
Подробнее..

Перевод Измерение прогресса в эпоху зашумлённых квантовых вычислений

03.11.2020 16:17:49 | Автор: admin

Концепция квантового объёма от IBM предлагает вынести измерение прогресса в квантовых вычислениях за пределы простого подсчёта кубитов



В IBM придумали термин квантовый объём для измерения прогресса в квантовых вычислениях, пока квантовые технологии ещё далеки от идеала

Измерение прогресса квантовых компьютеров в эпоху зашумлённых квантовых вычислений может оказаться сложной задачей. Некоторые компании, в частности, IBM и Honeywell, остановились на такой мере прогресса, как квантовый объём. Однако не все компании и исследователи соглашаются с полезностью этой меры в мире квантовых вычислений.

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

Можно представить себе квантовый объём как среднее количество цепей квантового компьютера, работающих в наихудших условиях, говорит Джей Гамбетта, научный сотрудник и вице-президент по квантовым вычислениям в IBM. Результат означает, что если это наихудшее условие возможно, то квантовый объём будет мерой качества цепей. Чем выше качество, тем более сложные цепи смогут работать на квантовых компьютерах.

Если точнее, то команда IBM определяет квантовый объём как два в степени, соответствующей размеру самой крупной цепи с одинаковой шириной и глубиной, способной пройти определённые испытания на надёжность. В испытаниях проверяются случайные двухкубитовые шлюзы, говорит Дэниел Лидар, директор центра квантово-информационных наук и технологий при Южно-Калифорнийском университете в Лос-Анджелесе. Размер цепи определяется либо по ширине, на основе количества кубитов, либо по глубине на основе количества шлюзов. При этом ширина и глубина количественно совпадают.

Это означает, что у квантовой вычислительной системы из 6 кубитов квантовый объём будет равен 2 в степени 6, или 64 но только если её кубиты будут относительно мало зависеть от шума, не выдавая связанных с ним ошибок. Поэтому для определения квантового объёма важен выбор конкретного испытания на надёжность.

Лидар, не участвовавший в создании концепции квантового объёма, считает её полезной мерой для сегодняшних квантовых компьютеров. Их технологию называют зашумлённой квантовой технологией среднего масштаба (Noisy Intermediate-Scale Quantum, NISQ). Такая метрика прекрасно описывает быстродействие квантовых компьютеров эпохи NISQ. Эта эра характерна тем, что шум всё ещё выступает одним из главных факторов, ограничивающих глубину надёжно работающих цепей.

Поскольку IBM начала активно использовать этот термин с конца 2019 года, квантовый объём уже довольно часто встречается в работах по квантовым вычислениям и пресс-релизах от IBM и других компаний, в частности, Honeywell. Однако по крайней мере один директор технокомпании уже высказал идею о том, что полезность термина скоро будет исчерпана.

Обсуждая последние разработки в области квантовых компьютеров компании IonQ в интервью, Питер Чапмен рассказал, как уменьшение шума может позволить сделать высокоточную 32-кубитную систему с квантовым объёмом порядка 4 млн. Он предположил, что всего через 18 месяцев значения квантового объёма вырастут так сильно, что исследователям придётся поменять определение, чтобы оно могло оставаться полезным.

Однако Лидар не согласен с тем, что термин " квантовый объём" довольно быстро уйдёт в небытие. Он указывает на тот факт, что квантовый объём будет расти так быстро только из-за той части определения, в которой двойку возводят в степень. Он добавил, что IBM даже не использовала это возведение в степень в первой своей работе на эту тему, опубликованной в 2017 году. Это просто недостаток самого определения, говорит Лидар.

Лидар говорит, что проще всего было бы определить квантовый объём в соответствии с самым большим количеством кубитов или шлюзов, и не использовать возведение в степень.

Не все считают квантовый объём таким важным или необходимым мерилом для оценки прогресса квантовых вычислений. Непонятно, нужно ли вообще сводить прогресс квантовых компьютеров к единственной мерке, говорит Скотт Ааронсон, специалист по информатике и директор квантового информационного центра в Техасском университете в Остине. Этот и другие вопросы по теме он осветил в своей статье "Прикрутите квантовый объём" [volume объём, а также громкость / прим. перев.].

Это просто ещё один из возможных обобщённых потребительских индексов крутизны квантовых компьютеров, среди бесчисленного множества альтернатив, говорит Ааронсон.

С практической точки зрения квантовым объёмом озабочены только крупные игроки в этой индустрии такие, как IBM. Так считает Джавад Шабани, адъюнкт-профессор физики и председатель лаборатории Шабани в Нью-Йоркском университете. У него и у других исследователей обычно нет доступа к таким крупным квантовым системам, даже учитывая то, что всё больше компаний предоставляет облачный доступ к подобным системам для программистов.

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

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru