A Q# kódtárak

A Quantum Development Kit (QDK) további tartományspecifikus funkciókat biztosít a projektekhez Q# hozzáadható NuGet-csomagokon keresztül.

Q# Könyvtár NuGet-csomag Jegyzetek
Q# standard kódtárak Microsoft.Quantum.Standard Alapértelmezés szerint belefoglalva
Kvantumkémiai kódtár Microsoft.Quantum.Chemistry
Kvantum gépi tanulási kódtár Microsoft.Quantum.MachineLearning
Kvantumnumerikus kódtár Microsoft.Quantum.Numerics

Standard kódtárak

A Microsoft.Quantum.Sdktelepítés és ellenőrzés során telepített NuGet-csomag automatikusan biztosítja a Q# standard kódtárat. A standard kódtárak alapvető és nagyon hasznos függvények és műveletek készletét biztosítják, amelyek kvantumprogramok Q#írásához használhatók.

A standard kódtárak funkciói közé tartozik a klasszikus matematika, a különböző Q# adattípusok közötti típuskonverziók, a kvantumprogramok hibáinak és hibáinak diagnosztikálása, a kvantumhibák javítása, a műveletek hatásainak jellemzése a hasznos kvantum-algoritmusok fejlesztése érdekében, és még sok más funkció.

További információ: Standard kódtárak.

Kvantumkémiai kódtár

A fizikai rendszerek szimulációja régóta központi szerepet játszik a kvantum-számítástechnikában. Ennek az az oka, hogy a kvantumdinamika széles körben vitathatatlan a klasszikus számítógépek szimulálásához, ami azt jelenti, hogy a rendszer szimulálásának összetettsége exponenciálisan skálázható a szóban forgó kvantumrendszer méretével. A kémiai és anyagtudományi problémák szimulálása talán a kvantum-számítástechnika legelterjedtebb alkalmazási területe, amely lehetővé tette olyan kémiai reakciós mechanizmusok vizsgálatát, amelyeknek mérésére és szimulálására korábban nem voltunk képesek. Emellett ezzel szimulálhatóvá váltak a korrelált elektronikus anyagok, például a magas hőmérsékletű szupravezetők is. A szakterület alkalmazási eseteinek listája rendkívül hosszú.

A Quantum Development Kit kvantumkémiai kódtárának dokumentációja bevezető és számos példát tartalmaz a kvantumszámítógépek elektronikus szerkezetével kapcsolatos problémák szimulálására, hogy segítsen az olvasónak megérteni, hogy a Hamilton-szimulációs kódtár számos aspektusa milyen szerepet játszik a térben. További információ: Kvantumkémiai kódtár.

A Quantum Development Kit kvantumkémiai kódtára úgy lett kialakítva, hogy jól működjön a számítási kémiai csomagokkal, különösen az NWChem számítási kémiai platformmal, amelyet a Pacific Northwest National Laboratory környezeti molekuláris tudományi laboratóriuma (EMSL) fejlesztett ki. További információ: Kvantumkémiai kódtár telepítése.

Quantum Machine Learning-kódtár

A Kvantum gépi tanulási kódtár egy Q#-ban írt API, amely lehetővé teszi a hibrid kvantum/klasszikus gépi tanulási kísérletek futtatását. A kódtár az alábbiakat teszi lehetővé:

  • Saját adatainak betöltése a kvantumszimulátorokkal való osztályozáshoz
  • Minták és oktatóanyagok használata a kvantum gépi tanulás területének megismeréséhez

A klasszikus gépi tanulási keretrendszerekhez képest alacsony teljesítmény várható (ne feledje, hogy minden egy kvantumeszköz szimulációja mellett fut, amely már eleve jelentős számításigénnyel rendelkezik). Az ebben a kódtárban implementált modell a áramkör-központú kvantumosztályozókban bemutatott kvantum-klasszikus betanítási sémán alapul.

A kvantumgép-tanulási kódtár dokumentációja azokat a szekvenciális osztályozókat valósítja meg, amelyek a kvantum-számítástechnika előnyeit használják az adatok megértéséhez. Ebben a dokumentációban a következőt találja:

Kvantum numerikus kódtár

Sok kvantumalgoritmus olyan orákulumokra támaszkodik, amelyek a bemenetek szuperpozícióján értékelnek ki matematikai függvényeket. Shor algoritmusának fő összetevője például kiértékeli az $f(x) = a^x\operatorname{mod} N$ függvényt, hogy megkapja a fix $a$ értéket, amely az $N$ együtthatójának kiszámolásához szükséges szám, illetve az $x$ értéket, amely egy $2n$ qubites egész szám egységes szuperpozícióban az összes $2n$ bites sztringben.

Ha Shor algoritmusát egy igazi kvantumszámítógépen szeretné futtatni, ezt a függvényt a célszámítógép natív műveleteivel kell megírni. A $x$ bináris ábrázolását használva, ahol $x_i$ jelöli az $i$-edik bitet a legkevésbé fontos bittől számolva, az $f(x)$ a következőképpen írható meg: $f(x) = a^{\sum_{i=0}^{2n-1} x_i 2^i} \operatorname{mod} N$.

Ez viszont az $a^{2^i x_i}=(a^{2^i})^{x_i}$ kifejezések eredményeként (mod N) írható meg. Az $f(x)$ függvény így a $2n$ (moduláris) szorzatok sorozatával implementálható, ahol az $a^{2^i}$ feltételes az $x_i$-n nem nulla. Az $a^{2^i}$ állandók előre kiszámíthatók és modulo N-re csökkenthetők az algoritmus futtatása előtt.

A vezérelt moduláris szorzások sorozata tovább egyszerűsíthető: Minden szorzás az $n$-vezérelt moduláris hozzáadások sorozatával végezhető el; és mindegyik moduláris hozzáadás felépíthető egy hagyományos összeadásból és egy komparátorból.

Mivel ilyen sok lépésre van szükség a tényleges implementációig, rendkívül hasznos lenne, ha az ilyen funkciók már a legelejétől elérhetők lennének. A Quantum Development Kit ezért támogatja a numerikus funkciók széles körét.

Az eddig említett egész számtani számon kívül a numerikus kódtár a következőket biztosítja:

  • (Un)signed integer functionality (szorzás, négyzet, osztás maradékkal, inverzió, ...) egy vagy két kvantum-egész szám bemenetként.
  • Rögzítettpontos funkciók (összeadás/ kivonás, szorzás, négyzet, 1/x, polinomérték kiértékelés) egy vagy két kvantum fixpontos számmal bemenetként.

Telepítés

Miután telepítette a Quantum Development Kitet az előnyben részesített környezethez és a gazdagép nyelvéhez, további telepítés nélkül egyszerűen hozzáadhat kódtárakat az egyes Q# projektekhez.

Megjegyzés

Egyes Q# kódtárak jól használhatók a programok mellett Q# működő, vagy a gazdaalkalmazásokkal integrálható további eszközökkel. A kémiai kódtár telepítési utasításai például azt mutatják be, hogyan használható a Microsoft.Quantum.Chemistry csomag az NWChem számítási kémiaplatformmal együtt, és hogyan telepíthetők a qdk-chem kvantumkémiai adatokkal való munkához szükséges parancssori eszközök.

Parancssor vagy Visual Studio Code: Ha a parancssort önállóan vagy a Visual Studio Code-on belülről használja, a dotnet paranccsal hozzáadhat egy NuGet-csomaghivatkozást a projekthez. A Microsoft.Quantum.Numerics csomag hozzáadásához például futtassa a következő parancsot:

dotnet add package Microsoft.Quantum.Numerics

Visual Studio: Ha a Visual Studio 2022-et vagy újabb verziót használja, további Q# csomagokat is hozzáadhat a NuGet-csomagkezelővel. Csomag betöltése:

  1. Ha egy projekt meg van nyitva a Visual Studióban, válassza a Projekt menü NuGet-csomagok kezelése elemét.

  2. Kattintson a Tallózás gombra, válassza az Előzetes verzió belefoglalása lehetőséget, és keresse meg a "Microsoft.Quantum.Numerics" csomagnevet. Ez felsorolja a letölthető csomagokat.

  3. Vigye az egérmutatót a Microsoft.Quantum.Numerics fölé, és kattintson a verziószámtól jobbra található lefelé mutató nyílra a numerikus csomag telepítéséhez.

További részletekért tekintse meg a Package Manager felhasználói felületének útmutatójában.

Másik lehetőségként a Package Manager-konzollal is hozzáadhatja a numerikus kódtárat a projekthez a parancssori felületen keresztül.

A Csomagkezelő konzol használata a parancssorból

A Csomagkezelő konzolon futtassa a következőt:

Install-Package Microsoft.Quantum.Numerics

További részletekért tekintse meg a Package Manager konzol útmutatóját.

Következő lépések

A kódtárak forrásanyagai és kódmintái a GitHubon elérhetők. További információért tekintse meg a Licencelés szakaszt. Vegye figyelembe, hogy a kódtárakhoz referenciacsomagok („bináris fájlok”) is elérhetők, és ezek újabb módot kínálnak a kódtárak projektekbe való belefoglalására.