Co jsou Q# a ?Quantum Development Kit

Sada Quantum Development Kit (QDK) je sada SDK potřebná pro rozhraní se službou Azure Quantum. Je integrovaný na portálu Azure Quantum, kde můžete vyvíjet programy pomocí bezplatných hostovaných poznámkových bloků Jupyter. Sadu QDK můžete také nainstalovat místně do počítače, abyste mohli používat vlastní místní vývojové prostředí a pracovat online i offline se službou Azure Quantum. Quantum Development KitPomocí nástroje můžete vytvářet programy, které běží na kvantovém hardwaru, nebo formulovat problémy, které běží na řešitele optimalizace inspirované kvantovou mechanikou v Azure Quantum.

Sada QDK zahrnuje kvantový programovací jazyk Q#, což je opensourcový programovací jazyk vysoké úrovně, který umožňuje zaměřit se na vytváření kvantových programů na úrovni algoritmu a aplikace.

Sada QDK nabízí podporu pro Q#, ale také pro Qiskit a Cirq pro kvantové výpočty, takže pokud už pracujete v jiných vývojových jazycích, můžete své okruhy spouštět také v Azure Quantum.

Sada QDK obsahuje komponenty, které je možné používat samostatně nezávisle na službě Azure Quantum:

  • Q# akvantové knihovny, všechny open source.
  • Kvantové simulátory , které simulují aktuální a budoucí kvantové počítače, abyste mohli spouštět a ladit kvantové algoritmy napsané v Q#nástroji .
  • Rozšíření pro Visual Studio 2022 a Visual Studio Code a integrace s Jupyter Notebooks

Začínáme s Q# a Quantum Development Kit

Pokud chcete rovnou začít, můžete se podívat Q# na portálu Azure Quantum bez nutnosti instalace. Další informace najdete v tématu Začínáme s Q# a poznámkovým blokem Azure Quantum.

Další možnosti vývojového prostředí najdete v tématu Nastavení .Quantum Development Kit

Kvantový programovací jazyk Q#

Q# je opensourcový programovací jazyk vysoké úrovně pro vývoj a spouštění kvantových algoritmů. Je součástí Quantum Development Kit sady (QDK) a je navržená tak, aby byla nezávislá na hardwaru, škálovala se na celou řadu kvantových aplikací a optimalizovala provádění. Další informace o Q# projektu vývoje jazyků najdete v úložišti návrhuQ# základních knihoven a na GitHubu.

Jako programovací jazyk Q# kreslí známé prvky z Jazyků Python, C# a F# a podporuje základní procedurální model pro psaní programů se smyčkami, příkazy if/then a běžnými datovými typy. Zavádí také nové datové struktury a operace specifické pro kvantová data, jako je například odhad opakování do úspěchu a odhad adaptivní fáze, které umožňují integraci kvantových a klasických výpočtů. Například řízení toku klasického programu může být založeno na výsledku kvantového měření.

Integrace s kvantovými a klasickými výpočty

Q# je samostatný jazyk, který nabízí vysokou úroveň abstrakce. Neexistuje žádná představa kvantového stavu nebo okruhu; Q# místo toho implementuje programy z hlediska příkazů a výrazů, podobně jako klasické programovací jazyky. Různé kvantové funkce, jako je podpora funktorů a konstruktorů toku řízení, usnadňují například vyjádření odhadu fází a algoritmů kvantové chemie .

Jazyk Q# podporuje integraci bohatých klasických a kvantových výpočtů. To umožňuje čisté vyjádření adaptivních algoritmů, jako je operace odhadu fáze náhodného chodu , které je obtížné vyjádřit přímo v modelu obvodů pevné sekvence kvantových bran.

Q# podporuje obecné klasické řízení toku během provádění algoritmu. Zejména klasické řízení toku je založené na výstupech z kvantových měření, což výrazně usnadňuje psaní věcí, které závisí na průběžných měřeních. Například smyčka požadovaná pro pravděpodobnostní algoritmy, jako je Grover vyhledávání, může být snadno vyjádřena v Q#, místo toho, abyste se museli vrátit ke klasickému ovladači a otestovat, zda výsledek vyhovuje orákulum, a pokud ne, znovu spustit.

Qubity jako neprůvné odkazy

QubityQ#v systému představují prostředek, který se v případě potřeby požaduje z modulu runtime a vrací se, když se už nepoužívá. Je to podobné tomu, jak klasické jazyky pracují s pamětí haldy.

V Q# qubitech jsou modelovány jako neprůsedné datové typy, které představují odkaz na konkrétní dvoustavový kvantový systém, ať už fyzický nebo logický (opravený chybou), na kterém se můžou provádět kvantové operace. Toto je provozní zobrazení qubitů – to znamená, že qubity jsou definované tím, co s nimi můžete dělat.

O mapování z proměnné qubitu v programu na skutečný logický nebo fyzický qubit rozhoduje modul runtime a toto mapování může být odloženo, dokud nebudou známy topologie a další podrobnosti zařízení target . Modul runtime zodpovídá za určení mapování, které umožní spuštění algoritmu, včetně přenosu stavu qubitu a přemapování vyžadovaného během provádění.

Reprezentace použitá v Q# nástroji má zajímavý důsledek, že všechny skutečné kvantové výpočty se provádějí vedlejším účinkem. Neexistuje žádný způsob, jak přímo interagovat s kvantovým stavem počítače; nemá vůbec žádnou softwarovou reprezentaci. Místo toho provádíte operace s qubitovými entitami, které vedlejším účinkem jsou změny kvantového stavu. Kvantový stav počítače je vlastně neprůsažná globální proměnná, která je nepřístupná s výjimkou malé sady primitiv (měření) a dokonce i tyto přístupové objekty mají vedlejší účinky na kvantový stav, takže jsou ve skutečnosti "mutátory s výsledky" místo skutečných přístupových objektů.

Respektujte fyzikální zákony

Kvantové programy by měly být povinny respektovat fyzikální zákony. Například kopírování stavu qubitu nebo přímý přístup ke stavu qubitu není možné v Q#nástroji .

Q# Proto nemá schopnost přímo introspektovat stav qubitu nebo jiných vlastností kvantové mechaniky, což zaručuje, že Q# program lze fyzicky spustit na libovolném kvantovém počítači. Q# Místo toho má program schopnost volat operace a funkce, jako DumpOperation operationje , k extrakci klasických informací z qubitu, které umožňují ověřování a státní vyšetření, aby se usnadnilo ladění pomocí simulátoru. Další informace najdete v tématu testování a ladění.

Nezávislá na hardwaru

Q# je nezávislý na hardwaru, což znamená, že poskytuje prostředky k vyjádření a využití výkonných konceptů kvantových výpočtů nezávisle na tom, jak se hardware v budoucnu vyvíjí. Aby bylo možné je používat v široké škále aplikací, Q# umožňuje vytvářet opakovaně použitelné komponenty a vrstvy abstrakcí. K dosažení výkonu s rostoucí velikostí kvantového hardwaru Q# zajišťuje kvantový programovací jazyk škálovatelnost aplikací i úsilí při vývoji. I když úplná složitost takových výpočtů vyžaduje další vývoj hardwaru, Q# programy je možné targetspouštět na různých kvantových hardwarových back-endech v Azure Quantum.

Efektivní provádění

Jazyk Q# se zaměřuje na vyjádření informací za účelem optimalizace provádění kvantových komponent, a to nezávisle na kontextu, ve kterém jsou vyvolány. Q# umožňuje vývojáři sdělit své znalosti o výpočtu, aby kompilátor mohl učinit informované rozhodnutí o tom, jak ho přeložit na instrukce, a využít tak informace o komplexní aplikaci, které nejsou vývojáři k dispozici.

Další informace o funkcích sady QDK a obecných částech, které jsou součástí programu, najdete v Q#Q# uživatelské příručce pro kvantový programovací jazyk.

Pracovní postup kvantového vývoje s využitím sady QDK

Když zkompilujete a spustíte kvantový program, sada QDK vytvoří instanci kvantového simulátoru Q# a předá jí kód. Simulátor podle kódu Q# vytvoří simulované qubity a podle zadaných transformací bude manipulovat s jejich stavy. Výsledky kvantových operací ze simulátoru se pak vrátí do programu. Izolování kódu Q# v simulátoru zajišťuje, že algoritmy budou odpovídat zákonům kvantové fyziky a budou správně fungovat i na kvantových počítačích.

Všechno, co potřebujete k psaní a spouštění Q# programů, včetně kompilátoru Q#Q#, knihoven a kvantových simulátorů, je předem nasazené v hostovaných poznámkových blocích Jupyter v Azure Portal. Sadu QDK je také možné nainstalovat a spustit z místního počítače, takže můžete používat upřednostňované integrované vývojové prostředí a jazyk místně a odesílat úlohy do kvantových hardwarových nebo cloudových simulátorů v Azure Quantum nebo pracovat s místními simulátory. Další informace najdete v tématu konfigurace kvantového vývojového prostředí.

Následující diagram znázorňuje fáze, kterými kvantový program prochází od nápadu až po kompletní implementaci v Azure Quantum, a nástroje, které QDK nabízí pro jednotlivé fáze.

Diagram znázorňující pracovní postup vývoje kvantového programování

Poznámka

Stejný kód použijete Q# pro všechny kroky pracovního postupu. V krátkodobém horizontu možná budete muset některé části kódu upravit, aby se zohlednila aktuální hardwarová omezení. Ale z dlouhodobého hlediska budete moct přepínat mezi různými simulátory a poskytovateli hardwaru bez jakýchkoli úprav kódu.

Psaní kvantového programu

Program Q# se může zkompilovat do samostatné aplikace, spustit v Jupyter Notebook nebo být volána hostitelským programem napsaným v Pythonu nebo v jazyce .NET.

Pokud chcete začít s procvičováním a psaním Q# programů bez instalace dalšího softwaru, můžete použít hostované poznámkové bloky Jupyter, které jsou dostupné v pracovním prostoru Azure Quantum v Azure Portal. Galerie ukázek obsahuje kolekci ukázek poznámkových bloků s poznámkami – vyberte ukázku, kterou chcete prozkoumat, a spusťte ji v cloudových simulátorech nebo skutečných kvantových počítačích.

Pokud dáváte přednost místnímu vývojovému prostředí, můžete svůj Q# program vytvořit pomocí poznámkových bloků Jupyter s jádrem IQ# nebo rozšíření QDK pro Visual Studio Code a Visual Studio 2022 a pak je spustit na kvantovém hardwaru nebo cloudových nebo místních simulátorech.

Bez ohledu na to, kterému prostředí dáváte přednost, můžete postupovat podle Q# kurzů a začít psát kvantové programy, abyste prozkoumali kvantové koncepty, jako je superpozice, propletení, Groverův kvantový algoritmus a další kvantové jevy.

Pokud nemáte účet Azure a chcete to zkusit Q# bez místní instalace sady QDK, můžete pomocí Binderu Q# spustit ukázky v poznámkových blocích Jupyter Online.

Prozkoumání knihoven specifických pro doménu

KnihovnyQ# vám pomůžou udržet kód na vysoké úrovni a umožní vám spouštět složité kvantové operace, aniž byste museli navrhovat sekvence operací nízké úrovně. Nové Q# projekty automaticky zahrnují standardní knihovnuQ#, která poskytuje sadu základních a velmi užitečných funkcí a operací, které lze použít při psaní kvantových programů v nástroji Q#.

Kromě standardní knihovny obsahuje sada QDK kvantovou chemickou knihovnu pro simulaci kvantových dynamických a elektronických problémů se strukturou na kvantových počítačích, knihovnu kvantového strojového učení , která poskytuje implementaci sekvenčních klasifikátorů, které využívají kvantový computing ke spouštění hybridních kvantových/klasických experimentů strojového učení, a kvantovou číselnou knihovnu , která poskytuje podporu široké škály numerických funkcí.

Spouštění programů v simulátorech

Jakmile napíšete svůj program, QDK nabízí sadu kvantových simulátorů – klasických programů, které simulují chování kvantového systému – takže můžete spustit malou instanci programu a zjistit, co dělá bez skutečného přístupu k hardwaru. Kvantové programy můžete spouštět na plnohodnotném kvantovém simulátoru, simulátoru Toffoli s omezeným rozsahem, simulátoru zhuštěném pro systémy s větším počtem qubitů a dokonce můžete simulátor šumu použít k simulaci chování Q# programů pod vlivem hlučných prostředí.

Podívejte se na úplný seznam kvantových simulátorů.

Odhad prostředků

Před spuštěním na kvantovém hardwaru budete muset zjistit, jestli váš program může běžet na existujícím hardwaru a kolik prostředků bude spotřebovávat. Pomocí simulátoru trasování můžete odhadnout, kolik qubitů a kvantových bran potřebujete, a ladit klasický kód, který je součástí vašeho kvantového programu.

Svůj kvantový program můžete také odeslat do Nástroje protarget posouzení prostředků Azure Quantum v Azure Portal. Estimátor prostředků Azure Quantum vypočítá odhad fyzických prostředků po rozložení tím, že bere v úvahu předpoklady o parametrech qubitu, kódech oprav kvantových chyb a rozpočtu chyb. Je bezplatná a vyžaduje účet Azure.

Odesílání úloh do služby Azure Quantum

Azure Quantum je služba cloudových kvantových výpočtů v Azure s různorodou sadou kvantových řešení a technologií. Azure Quantum zajišťuje otevřenou, flexibilní a budoucí cestu ke kvantovým výpočtům, která umožňuje spouštět program na kvantovém hardwaru. Qiskit, Cirq a Q# programy můžete spouštět na několika kvantových systémech. Aktuální seznam podporovaných poskytovatelů hardwaru najdete v tématu Poskytovatelé kvantových výpočtů .

Tip

První uživatelé automaticky získají bezplatné kredity Azure Quantumve výši 500 USD pro použití u každého zúčastněného poskytovatele kvantového hardwaru. Pokud jste spotřebovali všechny kredity a potřebujete víc, můžete se přihlásit k programu Azure Quantum Credits.

Po vytvoření pracovního prostoru Azure Quantum můžete odesílat své Q# programy (označované také jako úlohy) do Azure Quantum prostřednictvím upřednostňovaného vývojového prostředí, a to místně i online. Další informace najdete v tématu o odesílání Q# úloh. Můžete také spouštět a odesílat kvantové obvody napsané v Qiskitu nebo Cirqu.

Následující diagram znázorňuje základní pracovní postup po odeslání úlohy:

Diagram znázorňující pracovní postup po odeslání úlohy do Azure Quantum

Azure Quantum nabízí některé z nejpůsobivějších a nejrozmanitějších kvantových prostředků, které jsou dnes k dispozici od špiček v oboru. Se službou Azure Quantum a QDK můžete psát kvantové výpočty a programy pro optimalizaci inspirované kvantovou mechanikou a odesílat je do Azure Quantum, aby bylo možné spouštět na kvantovém hardwaru a řešitele optimalizace.

Další kroky

Pokud se chcete dozvědět více, kvantové katy poskytují dobrý úvod do konceptů kvantových výpočtů , jako jsou běžné kvantové operace a jak manipulovat s qubity.