Úvod do Azure Quantum  

6. 11. 2023 Azure, IT Pro

O kvantových počítačích už jste pravděpodobně někdy slyšeli, byť jsou stále zastřeny jakousi tajuplnou rouškou budoucnosti. Možná vás proto překvapí, že můžete i vy už dnes napsat a spustit svůj první kvantový program. Jak to celé přibližně funguje, k čemu to je a proč byste si měli vyzkoušet zrovna Azure Quantum, se dozvíte v tomto článku. 

Co je kvantové programování a jak se liší od toho klasického? 

Klasické počítače využívají jako základní jednotku informace bity, které mohou nabývat hodnot 0 a 1. Oproti nim kvantové počítače fungují na principu kvantových bitů neboli qubitů (z anglického quantum bit), které mohou existovat nejen ve stavu 0 nebo 1, ale i ve speciálním stavu tzv. kvantové superpozice, kdy mají hodnotu 0 i 1 zároveň v určitém “poměru“.  

Ilustrace rozdílu mezi bitem a qubitem
Bit vs qubit | Zdroj: 1qbit

Kvantové počítače musí mít nejen specifický hardware, ale i software. Klasické programovací jazyky počítači slouží jako sekvenční instrukce, kdežto kvantové programovací jazyky (Q#, Qiskit, Cirq…) qubitům udávají soubor matematických operací. Jednodušeji řečeno je klasický program čten řádek po řádku jako seznam instrukcí, zatímco kvantový program dokáže provádět několik výpočtů najednou. Tato schopnost qubitů se nazývá kvantový paralelismus. 

Kvantový paralelismus spočívá v tom, že princip superpozice umožňuje provádět výpočty na všech kombinacích stavů provázaných qubitů najednou. Toto vede k efektivnějšímu a rychlejšímu zpracovávání informací, a proto je kvantový paralelismus v srdci mnohých kvantových algoritmů. 

K čemu to je a proč to ještě není? 

Především díky kvantovému paralelismu kvantové počítače otevírá zcela nové možnosti v oblasti výpočetní techniky. Tyto oblasti zahrnují například kryptografii, optimalizaci, simulaci molekulárních systémů a umělé inteligence, kde je žádoucí právě velké množství souběžných výpočtů. Jak ale pravil strýček Ben mladému Peteru Parkerovi, „s velkou mocí přichází velká zodpovědnost“. Musíme mít na mysli to, že kvantové programy mohou v budoucnosti sice akcelerovat medicínský výzkum modelováním interakcí libivolných částic, ale i prolomování kdejakého současného šifrování založeného na faktorizaci velkých čísel. 

Ačkoliv mají kvantové počítače bezesporu obrovský potenciál a přední technologické firmy do něj investují miliardy dolarů, budeme si muset na plné využití prozatím převážně teoretické kvantové výhody muset ještě chvíli počkat. Jednou z hlavních překážek je v současnosti velká náchylnost k dekoherenci. To je jev, při kterém kvantový systém ztrácí svou kvantovou povahu a přechází do klasického stavu kvůli vnějším vlivům. Vědci se navíc shodují, že kvantové počítače nikdy nebudou schopné ty klasické zcela nahradit. K úkonům, jako je přehrávání videí, jsou sekvenční programy zkrátka lépe uzpůsobené a žádný kvantový algoritmus je už nezrychlí.  

Proč Azure Quantum? 

Microsoft se v oblasti kvantových počítačů vyznačuje silným zaměřením na výzkum tzv. topologických qubitů. Ty by měly vynikat přirozenou spolehlivostí a přístupnou škálovatelností a řešit tak dvě nejfundamentálnější překážky v honbě za kvantovou výhodou. Přestože zprvu nebylo vůbec zřejmé, jestli tento výzkum je krok správným směrem, kvantovému týmu Microsoftu se v březnu 2022 podařilo qubity “zabalit“ do uměle vytvořeného ochranného stavu Majorana zero modes.

Tento stav by měl za správných podmínek umožnit produkci skutečných topologických qubitů. V příštích letech je proto v Microsoft Azure Quantum určitě na co se těšit. Partnerství Azure Quantum s předními výrobci kvantových zařízení, jako jsou Rigetti, IonQ a Quantinuum, dále umožňuje uživatelům přístup k různým kvantovým zařízením s různými technologiemikapacitami a vybrat tu nejvhodnější konfiguraci pro konkrétní aplikaci. 

Síla Azure Quantum spočívá i v plynulém propojení kvantového a klasického programování. Uživatel může volně míchat například klasický Python s kvantovým Q# a využívat tak to nejlepší z obou světů. Quantum Development Kit, postavený kolem open-source Q# z dílen samotného Microsoftu, pak nabízí celou řadu nástrojů a knihoven pro vývoj, ladění a testování kvantových algoritmů. V neposlední řadě je Azure Quantum plně integrováno do ekosystému Azure a je možné ho propojit s dalšími Azure službami. 

Dost teorie – teď je čas na praxi! 

Jak jsem slíbil v úvodu článku, pojďme si teď sami nějaký ten kvantový program vyzkoušet. 

Stejně jako u jakékoliv jiné Azure služby začneme kliknutím na tlačítko „vytvořit prostředek“, které nás přesměruje na Azure Marketplace. Tam stačí najít Azure Quantum a znovu kliknout na „vytvořit“. 

Od domovské stránky Microsoft Azure k vytvoření nového prostředku
Domovská stránka Azure | Zdroj: Azure Portal
Vyhledaný prostředek Azure Quantum v Azure Marketplace
Azure Marketplace | Zdroj: Azure Portal
Stránka prostředku Azure Quantum s ukazatelem na tlačítko "vytvořit"
Stránka prostředku Azure Quantum | Zdroj: Azure Portal

Pokud byste se chtěli ponořit hlouběji do nastavení této služby a vybrat například cílený úložný prostor, nic vám v tom nebrání, ale pro naše účely nám bude nyní zcela stačit „rychlé vytvoření” s přednastavenou konfigurací. 

Výběr mezi rychlým a rozšířeným způsobem vytvoření Azure Quantum
Výběr způsobu vytvoření Azure Quantum | Zdroj: Azure Portal

Prostředku přiřadíme libovolné jméno a oblast a vytvoření můžeme potvrdit. 

Nastavení názvu a oblasti rychlého vytvoření
Nastavení rychlého vytvoření | Zdroj: Azure Portal

Může trvat několik minut, než je proces vytváření dokončen a v záložce na levé straně lze přejít do sekce „Poznámkové bloky“ k programování ve známém prostředí Jupyter Notebook. Ihned se nám nabízí kolonka „Sample gallery“ se šablonami jednoduchých programů na vyzkoušení. Jak je vidno, různí poskytovatelé hardwaru nabízí vlastní „Hello, world“ úvodní programy v jiných programovacích jazycích. Jelikož všechny plní tu stejnou funkci, projdeme si tady jen tím od IonQ napsaným v Pythonu a Q#. 

Galerie ukázkových poznámkových bloků v prostředku Azure Quantum, mezi nimiž jsou i různé Hello, world programy
Galerie ukázkových poznámkových bloků | Zdroj: Azure Portal

Hello, world!

Jakmile máme šablonu zkopírovanou do vlastních bloků, můžeme si ji projít buňku po buňce. Příkazy v první sekci importujeme potřebnou Q# knihovnu pro práci v Azure a připojíme se k našemu vytvořenému prostředku. 

1. sekce nazvaná "Connect to the Azure Quantum workplace" v bloku Hello, world spuštěná tlačítkem "Run cell"
1. sekce v bloku Hello, world | Zdroj: Azure Portal

Dále si ověříme, jaký hardware máme k dispozici. 

Výsledek 1. sekce v bloku Hello, world
1. sekce v bloku Hello, world | Zdroj: Azure Portal

Druhá sekce nás provádí inicializací Q# prostředí a vytvořením jednoduchého programu k simulaci idealizovaného qubitu a zjištění pravděpodobnosti naměření jednotlivých klasických hodnot – tedy té, která “převládá“. 

2. sekce nazvaná "Build the quantum program" v bloku Hello, world spuštěná tlačítkem "Run cell"
2. sekce v bloku Hello, world | Zdroj: Azure Portal

A nyní tento program můžeme poslat buď opravdovému kvantovému nebo, v této ukázce, simulovanému kvantovému počítači, aby ho vykonal. 

3. sekce nazvaná "Submit the quantum program to IonQ" v bloku Hello, world spuštěná tlačítkem "Run cell"
3. sekce v bloku Hello, world | Zdroj: Azure Portal

A na závěr pravděpodobnosti naměření 0 a 1 na idealizovaném qubitu vizualizujeme pomocí Python knihovny Matplotlib.  

4. sekce nazvaná "Visualize job results" v bloku Hello, world spuštěná tlačítkem "Run cell"
4. sekce v bloku Hello, world | Zdroj: Azure Portal

Gratuluji, právě jste spustili kvantový program ze svého vlastního účtu! 

Pokud vás však takové jednoduché demo neuspokojilo, doporučuji vám projít si poměrně čtivou dokumentací Azure Quantum.  

Kam dál? 

Teď už víte, v čem se kvantové počítače liší od těch klasických, proč je ještě nemáme, ač jsou tak vytoužené, čím vyniká Azure Quantum, a dokonce i jak napsat a spustit vlastní kvantový program. Pokud vás toto téma zaujalo a chcete o něm vědět více, najdete na internetu spoustu skvělých přístupných zdrojů o různých úrovních obtížnosti. Pro samotné kvantové programování doporučuji dokumentaci Azure Quantum, kde se dozvíte více i programovacím jazyku Q#.