Mik azok és Q# a Quantum Development Kit?

A Quantum Development Kit (QDK) az Azure Quantum szolgáltatáshoz való kapcsolódáshoz szükséges SDK. Beépített az Azure Quantum Portalra, ahol az ingyenesen üzemeltetett Jupyter Notebookok használatával fejleszthet programokat. A QDK-t helyileg is telepítheti a számítógépre, hogy saját helyi fejlesztési környezetet használjon, és online és offline is dolgozzon az Azure Quantum szolgáltatással. A Quantum Development Kittel olyan programokat hozhat létre, amelyek kvantumhardveren futnak, vagy olyan problémákat fogalmazhatnak meg, amelyek kvantumalapú optimalizálási solvereken futnak az Azure Quantum-ban.

A QDK tartalmazza a kvantumprogramozási nyelvet Q#, egy magas szintű , nyílt forráskódú programozási nyelvet, amely lehetővé teszi, hogy a munkáját az algoritmusra és az alkalmazás szintjén összpontosítsa a kvantumprogramok létrehozásához.

A QDK támogatást nyújt a Q#, de a Qiskit és a Cirq számára is a kvantum-számítástechnikához, így ha már dolgozik más fejlesztési nyelveken, az Azure Quantum-on is futtathatja a kapcsolatcsoportokat.

A QDK önállóan, az Azure Quantum szolgáltatástól függetlenül használható összetevőket tartalmaz:

  • Q# nyelv - és kvantumkódtárak, minden nyílt forráskódú.
  • Kvantumszimulátorok , amelyek a jelenlegi és jövőbeli kvantumgépeket szimulálják, így futtathatja és hibakeresésre használhatja a () nyelven Q#írt kvantum-algoritmusokat.
  • A Visual Studio 2022 és a Visual Studio Code bővítményei, valamint a Jupyter Notebookokkal való integráció.

Első lépések Q# és a Quantum Development Kit

A beugráshoz az Azure Quantum Portalon ismerkedhet meg Q# , és nincs szükség telepítésre. További információt az Első lépések Q# és egy Azure Quantum-jegyzetfüzet című témakörben talál.

További fejlesztési környezeti beállításokért lásd : A Quantum Development Kit beállítása.

A kvantumprogramozási nyelv Q#

Q# egy nyílt forráskódú, magas szintű programozási nyelv kvantum-algoritmusok fejlesztéséhez és futtatásához. Ez a Quantum Development Kit (QDK) része, és úgy lett kialakítva, hogy hardveres agnosztikus legyen, skálázza a kvantumalkalmazások teljes körét, és optimalizálja a végrehajtást. A nyelvfejlesztési projekttel kapcsolatos Q# további információkért lásd a GitHub és azQ# alapvető kódtárak tervezési adattárát.

Programozási nyelvként Q# ismerős elemeket rajzol a Pythonból, a C#-ból és az F#-ból, és támogatja a programok hurkokkal, if/then utasításokkal és gyakori adattípusokkal való írásának alapszintű eljárási modelljét. Emellett új kvantumspecifikus adatstruktúrákat és műveleteket vezet be, például a sikeres ismétlésig és az adaptív fázisbecslést, amelyek lehetővé teszik a kvantum- és klasszikus számítások integrálását. Egy klasszikus program folyamatvezérlése például egy kvantummérés eredményén alapulhat.

Integráció kvantum- és klasszikus számításokkal

Q# egy önálló nyelv, amely magas szintű absztrakciót kínál. Nincs kvantumállapot vagy kapcsolatcsoport fogalma; Q# ehelyett a klasszikus programozási nyelvekhez hasonlóan utasításokkal és kifejezésekkel valósítja meg a programokat. A különböző kvantumképességek, például a funktorok és a vezérlőfolyamat-szerkezetek támogatása megkönnyítik például a fázisbecslés és a kvantumkémiai algoritmusok kifejezését.

A Q# nyelv támogatja a gazdag klasszikus és kvantum-számítástechnika integrációját. Ez lehetővé teszi az adaptív algoritmusok tiszta kifejezését, például a véletlenszerű sétafázis-becslési műveletet , amelyet nehéz közvetlenül kifejezni a kvantumkapuk rögzített sorozatának áramköri modelljében.

Q# támogatja az általános klasszikus folyamatvezérlést egy algoritmus végrehajtása során. A klasszikus folyamatvezérlés elsősorban kvantummérési eredményeken alapul, ami sokkal egyszerűbbé teszi a köztes mérésektől függő dolgok írását. Például a valószínűségi algoritmusokhoz, például a Grover-kereséshez szükséges hurok egyszerűen kifejezhető a -ben Q#, ahelyett, hogy vissza kellene térnie a klasszikus illesztőprogramhoz annak teszteléséhez, hogy az eredmény megfelel-e az oracle-nek, és újrafuttatható-e, ha nem.

Qubitek átlátszatlan hivatkozásokként

A rendszerben Q#a qubitek olyan erőforrások, amelyeket szükség esetén a futtatókörnyezetből kérnek, és amikor már nincs használatban, visszaadják. Ez hasonló ahhoz, ahogyan a klasszikus nyelvek a heapmemóriával foglalkoznak.

A Q# qubitek átlátszatlan adattípusokként vannak modellezve, amelyek egy adott kétállapotú kvantumrendszerre mutató hivatkozást jelentenek, akár fizikai, akár logikai (hibajavítású), amelyen a kvantumműveletek elvégezhetők. Ez a qubitek működési nézete, azaz a qubitek meghatározása a velük elvégezhető műveletek alapján történik.

A program egy qubit változójából egy tényleges logikai vagy fizikai qubitre való leképezését a futtatókörnyezet határozza meg, és a leképezés elhalasztható a topológia és a céleszköz egyéb részleteinek ismerete után. A futtatókörnyezet felelős egy olyan leképezés meghatározásáért, amely lehetővé teszi az algoritmus végrehajtását, beleértve a végrehajtás során szükséges qubitállapot-átvitelt és újrakészítést.

A használt Q# reprezentáció érdekes hatással van arra, hogy az összes tényleges kvantum-számítástechnika mellékhatással történik. A számítógép kvantumállapotával nem lehet közvetlenül kommunikálni; egyáltalán nem rendelkezik szoftveres reprezentációval. Ehelyett olyan qubit-entitásokon hajt végre műveleteket, amelyek a kvantumállapot módosításának mellékhatásai. A számítógép kvantumállapota gyakorlatilag egy átlátszatlan globális változó, amely nem érhető el, kivéve a kiegészítő primitívek (mérések) kis halmazát – és még ezek a tartozékok is mellékhatásokat okoznak a kvantumállapotra, és így valóban "eredményekkel rendelkező mutációk" a valódi kiegészítők helyett.

A fizika törvényeinek tiszteletben tartása

Kvantumprogramokra van szükség a fizika törvényeinek tiszteletben tartásához. Például a qubit állapotának másolása vagy a qubit állapotának közvetlen elérése nem lehetséges a fájlban Q#.

Q# Ezért nem képes közvetlenül betekinteni egy qubit vagy a kvantummechanika egyéb tulajdonságainak állapotába, ami garantálja, hogy egy Q# program fizikailag végrehajtható bármely kvantumszámítógépen. Ehelyett a Q# program képes meghívni az olyan műveleteket és függvényeket, mint DumpOperation operationpéldául a , hogy klasszikus információkat nyerjen ki egy qubitből, amelyek lehetővé teszik az érvényesítést és az állapotvizsgálatot, hogy megkönnyítsék a szimulátorokkal végzett hibakeresést. További információ: tesztelés és hibakeresés.

Hardveres agnosztikus

Q# hardver agnosztikus, ami azt jelenti, hogy lehetővé teszi a hatékony kvantum-számítástechnika fogalmak kifejezését és használatát a hardver jövőbeli fejlődésétől függetlenül. Ahhoz, hogy az alkalmazások széles körében használható legyen, Q# lehetővé teszi újrafelhasználható összetevők és absztrakciók rétegeinek létrehozását. A növekvő kvantumhardver-mérettel való teljesítmény eléréséhez a Q# kvantumprogramozási nyelv biztosítja az alkalmazások méretezhetőségét és a fejlesztési erőfeszítéseket. Bár az ilyen számítások teljes összetettsége további hardverfejlesztést igényel, Q# a programok különböző kvantumhardver-háttérrendszereken futtathatók az Azure Quantumban.

Hatékony végrehajtás

A Q# nyelv a kvantumösszetevők végrehajtásának optimalizálására összpontosít, függetlenül a meghívandó környezetétől. Q# lehetővé teszi a fejlesztő számára, hogy közölje a számítással kapcsolatos tudását, hogy a fordító megalapozott döntést hozhassa arról, hogyan fordíthatja azt utasításokká, felhasználva a fejlesztő számára nem elérhető, teljes körű alkalmazással kapcsolatos információkat.

A QDK funkcióiról és a programhoz illeszkedő Q# általános részekről a Q# kvantumprogramozási nyelv felhasználói útmutatójában olvashat bővebben.

Kvantumfejlesztési munkafolyamat a QDK-val

Kvantumprogram lefordításakor és futtatásakor a QDK létrehozza a kvantumszimulátor egy példányát, és átadja neki a Q# kódot. A szimulátor a Q#-kóddal hoz létre qubiteket (kvantumrészecskék szimulációit), és átalakításokat alkalmaz az állapotuk módosításához. A rendszer ezután visszaadja a programnak a kvantumműveletek eredményeit. A Q#-kód a szimulátoron belüli elkülönítése biztosítja, hogy az algoritmusok kövessék a kvantumfizika törvényeit, és megfelelően fussanak a kvantumszámítógépeken.

Minden, ami a programok írásához és futtatásához Q# szükséges, beleértve a Q# fordítót, a Q# kódtárakat és a kvantumszimulátorokat, előre telepítve van az Azure Portal üzemeltetett Jupyter Notebookokban. A QDK a helyi számítógépről is telepíthető és futtatható, így helyileg használhatja az előnyben részesített IDE-t és nyelvet, és feladatokat küldhet kvantumhardverek vagy felhőalapú szimulátorok számára az Azure Quantum-on, vagy dolgozhat helyi szimulátorokkal. További információ: A kvantumfejlesztési környezet konfigurálása.

Az alábbi ábra azokat a fázisokat mutatja be, amelyeken keresztül egy kvantumprogram az ötlettől az Azure Quantum implementációjának befejezéséig tart, és az egyes szakaszokhoz a QDK által kínált eszközöket.

A kvantumprogramozási fejlesztés munkafolyamatát bemutató ábra.

Megjegyzés

Ugyanazt Q# a kódot használja a munkafolyamat minden lépéséhez. Rövid távon előfordulhat, hogy a kód egyes részeit módosítania kell, hogy figyelembe vegyék az aktuális hardverkorlátokat. Hosszú távon azonban kódmódosítások nélkül válthat a különböző szimulátorok és hardverszolgáltatók között.

A kvantumprogram írása

A Q# programok lefordíthatók önálló alkalmazássá, futtathatók egy Jupyter Notebook, vagy meghívhatók egy Python vagy .NET nyelven írt gazdagépprogram által.

Ha további szoftverek telepítése nélkül szeretné elkezdeni a programok gyakorlását és írásátQ#, használhatja az Azure Quantum-munkaterületen elérhető üzemeltetett Jupyter Notebookokat a Azure Portal. A mintagyűjtemény jegyzetekkel ellátott jegyzetfüzetminták gyűjteményét tartalmazza – válassza ki a megvizsgálandó mintát, és futtassa azt felhőalapú szimulátorokon vagy valós kvantumszámítógépeken.

Ha helyi fejlesztési környezetet szeretne, létrehozhatja a Q# programot Jupyter Notebooks használatával az IQ# kernellel, vagy a Visual Studio Code és a Visual Studio 2022 QDK-bővítményeivel, majd futtathatja őket kvantumhardvereken, felhőalapú vagy helyi szimulátorokon.

Bármelyik környezetet is szeretné, kövesse az Q# oktatóanyagokat, és kezdjen el kvantumprogramokat írni olyan kvantumfogalmak megismeréséhez, mint a szuperpozíció, az összefonódás, a Grover kvantum-algoritmusa és más kvantumjelenségek.

Ha nincs Azure-fiókja, és a QDK helyi telepítése nélkül szeretné kipróbálniQ#, a Binder használatával online futtathatja a mintákat a Q# Jupyter Notebooksban.

Tartományspecifikus kódtárak felfedezése

A Q# kódtárak segítségével magas szinten tarthatja a kódokat, így összetett kvantumműveleteket futtathat anélkül, hogy alacsony szintű műveletütemezéseket kellene megterveznie. Az új Q# projektek automatikusan tartalmazzák a Q#standard kódtárat, amely alapvető és nagyon hasznos függvényeket és műveleteket biztosít, amelyek kvantumprogramok írásához használhatók a rendszerben Q#.

A standard kódtár mellett a QDK egy kvantumkémiai kódtárat is tartalmaz, amely kvantumszámítógépeken szimulálja a kvantumdinamika és az elektronikus struktúra problémáit, egy kvantumgép-tanulási kódtár , amely biztosítja a kvantum-számítástechnika által a hibrid kvantum-/klasszikus gépi tanulási kísérletek futtatására használt szekvenciális osztályozók implementálását, valamint egy kvantum numerikus kódtárat , amely számos numerikus funkció használatát támogatja.

Programok futtatása szimulátorokban

Miután megírta a programot, a QDK kvantumszimulátorok készletét kínálja – klasszikus programokat, amelyek a kvantumrendszer viselkedését szimulálják –, hogy a program egy kis példányát futtathassa, és tényleges hardverhozzáférés nélkül láthassa, mit csinál. A kvantumprogramokat teljes állapotú kvantumszimulátoron, korlátozott hatókörű Toffoli-szimulátoron, ritka szimulátoron futtathatja nagyobb számú qubittel rendelkező rendszerekhez, és a zajszimulátort is használhatja a zajos környezetek hatása alatt futó programok viselkedésének Q# szimulálására.

Tekintse meg a kvantumszimulátorok teljes listáját.

Erőforrások becslése

Mielőtt kvantumhardveren futna, ki kell derítenie, hogy a program futhat-e meglévő hardveren, és hány erőforrást fog használni. A nyomkövetési szimulátor használatával megbecsülheti, hogy hány qubitre és kvantumkapura van szüksége, és hibakeresést végezhet a kvantumprogram részét képező klasszikus kódban.

A kvantumprogramot elküldheti az Azure Quantum Resource Estimator célnak is a Azure Portal. Az Azure Quantum Resource Estimator az elrendezés utáni fizikai erőforrás-becslést úgy számítja ki, hogy figyelembe veszi a qubitparaméterekre, a kvantumhibák korrekciós kódjaira és a hibakeretre vonatkozó feltételezéseket. Ingyenes, és Azure-fiókot igényel.

Feladatok elküldése az Azure Quantum szolgáltatásba

Az Azure Quantum az Azure felhőalapú kvantum-számítástechnikai szolgáltatása, amely számos különböző kvantummegoldással és technológiával rendelkezik. Az Azure Quantum biztosítja a kvantum-számítástechnika nyílt, rugalmas és időtálló útját, amely lehetővé teszi a program kvantumhardveren való futtatását. A Qiskit, a Cirq és Q# a programok több kvantumrendszeren is futtathatók. A támogatott hardverszolgáltatók aktuális listájáért lásd: Kvantum-számítástechnikai szolgáltatók .

Tipp

Az első alkalommal használt felhasználók automatikusan 500 dollár (USD) ingyenesAzure Quantum Credit-kreditet kapnak az egyes részt vevő kvantumhardver-szolgáltatókkal való használathoz. Ha felhasználta az összes kreditet, és továbbiakra van szüksége, az Azure Quantum Credits programra is jelentkezhet.

Miután létrehozott egy Azure Quantum-munkaterületet, a programokat (más néven feladatokat) elküldheti az Q# Azure Quantumnak az előnyben részesített fejlesztési környezeten keresztül, helyileg és online is. További információ: Feladatok elküldéseQ#. Qiskit vagy Cirq nyelven írt kvantum-kapcsolatcsoportokat is futtathat és küldhet el.

Az alábbi ábrán az alapszintű munkafolyamat látható a feladat elküldése után:

Az Azure Quantumba történő feladatbeküldés utáni munkavállalást bemutató ábra.

Az Azure Quantum az iparági vezetők által ma elérhető legkülönfélébb és legkülönfélébb kvantumerőforrásokat kínálja. Az Azure Quantum és a QDK segítségével kvantum-számítástechnikai és kvantumalapú optimalizálási programokat írhat, és elküldheti őket az Azure Quantumnak , hogy kvantumhardvereken és optimalizálási solvereken fussanak.

Következő lépések

Ha többet szeretne megtudni, a Quantum Katas jól bemutatja a kvantum-számítástechnikai fogalmakat , például a gyakori kvantumműveleteket és a qubitek manipulálását.