A Q#-programok és a Visual Studio Code használatának első lépései

Ebben a cikkben megismerheti a VC Code használatának lépéseit q#, Jupyter Notebook vagy Python kvantum-számítási feladatok létrehozására és elküldésére az Azure Quantumban a VS Code használatával.

Q#-feladatok elküldése az Azure Quantumba

Megtudhatja, hogyan futtathat, végezhet hibakeresést és küldhet be Q#-programokat az Azure Quantumba a VS Code használatával.

Előfeltételek

A telepítés részleteiért lásd : A modern QDK telepítése a VS Code-on.

Q#-mintaprogram betöltése

  1. A VS Code-ban válassza az Új szövegfájl fájlja > lehetőséget, és mentse a fájlt RandomNum.qs néven.

  2. Nyissa meg a RandomNum.qs fájlt, és írja be a parancsot sample, majd válassza a Véletlenszerű bit minta lehetőséget a lehetőségek listájából, és mentse a fájlt.

    Képernyőkép a Q#-fájlról a Visual Studio Code-ban, amelyen a kódminták listája látható, amikor a minta szót írja a fájlba.

Megjegyzés

Saját Q#-fájlt is megnyithat. Ha egy régebbi Q#-programot futtat, és hibákba ütközik, olvassa el a Programok tesztelése és hibakeresése vagy Migrálása a Modern QDK-ba című témakört.

Q#-program futtatása

  1. Ha helyileg szeretné tesztelni a programot a beépített szimulátoron, kattintson a Futtatás elemre az alábbi @EntryPoint()parancsok listájából, vagy nyomja le a Ctrl+F5 billentyűkombinációt. A kimenet megjelenik a hibakeresési konzolon.

  2. Ha hibakeresést szeretne végezni a programon, mielőtt elküldené az Azure Quantumba, kattintson a hibakeresésre az alábbi @EntryPoint()parancsok listájában, vagy nyomja le az F5 billentyűt. A felül található hibakeresési vezérlőkkel lépkedhet a kód fölé, be- és kifelé. További információ a Q#-programok hibakereséséről: Tesztelés és hibakeresés.

    Képernyőkép a Q#-fájlról a Visual Studio Code-ban, amely azt mutatja, hogy hol található a kódlencse futtatási és hibakeresési parancsokkal.

A frekvencia hisztogram megjelenítése

A frekvencia hisztogram a kvantumprogram többszöri futtatásából vagy "lövésekből" nyert eredmények eloszlását jelöli. A hisztogram minden sávja egy lehetséges eredménynek felel meg, magassága pedig azt jelzi, hogy hányszor figyelhető meg az eredmény. A gyakorisági hisztogram segít megjeleníteni ezeknek az eredményeknek a valószínűségi eloszlását.

  1. Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a "hisztogram" kifejezést, amely megjeleníti a Q#: Fájl futtatása és a hisztogram megjelenítése lehetőséget. A hisztogramra az alábbi @EntryPoint()parancsok listájából is kattinthat. Válassza ezt a lehetőséget a Q#-hisztogram ablak megnyitásához.

    Képernyőkép a Q#-fájlról a Visual Studio Code-ban, amelyen látható, hogy hol található a kódlencse hisztogram paranccsal.

  2. Adjon meg néhány felvételt a program végrehajtásához, például 100 lövést, és nyomja le az Enter billentyűt. A hisztogram megjelenik a Q#-hisztogram ablakban.

  3. A beállítások megjelenítéséhez kattintson a bal felső beállítások ikonra .

    Képernyőkép a Q#-hisztogram ablakról a Visual Studio Code-ban, amelyen a beállítások megjelenítése látható.

  4. Kattintson egy sávra az eredmény százalékos arányának megjelenítéséhez. Ebben az esetben két lehetséges eredmény létezik: 0 és 1, és az egyes eredmények százalékos aránya megközelíti az 50%-ot.

    Képernyőkép a Q#-hisztogram ablakáról a Visual Studio Code-ban.

Tipp

A hisztogramot az egér görgetőkerekével vagy egy érintőpad kézmozdulattal nagyíthatja. Nagyításkor pásztázhatja a diagramot úgy, hogy görgetés közben lenyomja az "Alt" billentyűt.

A kvantum-kapcsolatcsoport vizualizációja

A kvantum-kapcsolatcsoport-diagramok a kvantumműveletek vizuális ábrázolásai. Bemutatják a qubitek kvantumprogramon keresztüli áramlását, beleértve a kapukat és a rajtuk alkalmazott méréseket. További információ: Kvantum-kapcsolatcsoport-diagramok a Visual Studio Code-ban.

  1. Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a "circuit" kifejezést, amelynek meg kell jelennie a Q#: Kapcsolatcsoport megjelenítése lehetőségnek. A kapcsolatcsoportra az alábbi @EntryPoint()parancsok listájából is kattinthat.

    Képernyőkép a Q#-fájlról a Visual Studio Code-ban, amelyen látható, hogy hol található a kódlencse áramköri parancsa.

  2. A kapcsolatcsoport megjelenik a Q#-kapcsolatcsoport ablakában. A kapcsolatcsoportdiagramon egy qubit-regiszter látható, amelyet a rendszer a(z) |0⟩ állapotba inicializál. Ezután egy H hadamard kaput alkalmazunk a qubitre, amelyet egy mérési művelet követ, amelyet egy mérőszimbólum jelöl. További információ: Kvantum-kapcsolatcsoportok konvenciók.

    Képernyőkép a Q#-kapcsolatcsoport ablakról, amelyen a véletlenszerű bitművelet eredményként kapott kapcsolatcsoport-diagramja látható.

Csatlakozás az Azure Quantumhoz és a feladat elküldése

A feladatokat közvetlenül a VS Code-ból csatlakoztathatja és küldheti el. Ebben a példában egy feladatot fog elküldeni a Rigetti-szimulátornak.

  1. Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a Q#: Csatlakozás Azure Quantum-munkaterülethez parancsot. Nyomja le az Enter billentyűt.

  2. Válassza az Azure-fiók lehetőséget, és kövesse az utasításokat az előnyben részesített címtárhoz, előfizetéshez és munkaterülethez való csatlakozáshoz.

    Megjegyzés

    Ha rendelkezik kapcsolati karakterlánc, válassza a Kapcsolati sztring lehetőséget, és illessze be az Azure Quantum-munkaterületnek megfelelő kapcsolati karakterlánc. További információ: Csatlakozás Kvantum-munkaterülethez egy kapcsolati karakterlánc használatával.

  3. Miután csatlakozott, az Explorer panelen bontsa ki a Quantum Workspaces (Kvantum-munkaterületek) elemet.

  4. Bontsa ki a munkaterületet, és bontsa ki a Rigetti-szolgáltatót .

    Megjegyzés

    Ha probléma merül fel az Azure Quantumhoz való csatlakozáskor, a munkaterület neve mellett megjelenik egy figyelmeztető ikon. Mutasson a munkaterület nevére a hibainformációk megjelenítéséhez.

  5. Válassza ki a rigetti.sim.qvm elemet.target

    Képernyőkép a Visual Studio Code-ról, amely bemutatja, hogyan választhatja ki a Rigetti-szimulátort.target

  6. Válassza a név jobb oldalán található lejátszás ikont az target aktuális Q#-program elküldéséhez. Ha megjelenik egy előugró ablak, válassza a QIR-profil target módosítása és a folytatás lehetőséget.

    Képernyőkép a Visual Studio Code-ról, amely bemutatja, hogyan futtatható a Rigetti-szimulátor.target

  7. Adjon hozzá egy nevet a feladat azonosításához.

  8. Adja meg a felvételek számát vagy a program futási idejének számát.

  9. Nyomja le az Enter billentyűt a feladat elküldéséhez. A feladat állapota a képernyő alján jelenik meg.

  10. Bontsa ki a Feladatok csomópontot , és vigye az egérmutatót a feladat fölé, amely megjeleníti a feladat idejét és állapotát.

  11. Az eredmények megtekintéséhez válassza a feladat neve melletti felhő ikont, hogy letöltse az eredményeket a munkaterület tárhelyéről, és megjelenítse azt a VS Code-ban.

    Képernyőkép a Visual Studio Code-ról, amely bemutatja, hogyan töltheti le és tekintheti meg a kvantumfeladat eredményeit.

Jupyter Notebooks-feladatok elküldése az Azure Quantumba

Megtudhatja, hogyan használhatja a VS Code-ot Q#-Jupyter Notebook futtatására, hibakeresésére és elküldésére az Azure Quantumban. A cikkben ismertetett lépések a helyi Jupyter-kiszolgálón vagy az Azure Quantum Portalon található notebookokon található Jupyter Notebookokra is vonatkoznak.

Előfeltételek

A telepítés részleteiért lásd : A modern QDK telepítése a VS Code-on.

A program futtatása és tesztelése a helyi szimulátorban

  1. A VS Code-ban válassza a Parancskatalógus megtekintése>, majd a Létrehozás: Új Jupyter Notebook lehetőséget.

  2. A jobb felső sarokban a VS Code észleli és megjeleníti a Python verzióját és a jegyzetfüzethez kiválasztott virtuális Python-környezetet. Ha több Python-környezettel rendelkezik, előfordulhat, hogy ki kell választania egy kernelt a jobb felső sarokban található kernelválasztóval. Ha a rendszer nem észlelt környezetet, a beállítással kapcsolatos információkért tekintse meg a Jupyter Notebooks in VS Code (Jupyter-notebookok a VS Code-ban ) című témakört.

  3. A jegyzetfüzet első cellájában futtassa a következő Python-kódot a szükséges modulok importálásához:

    import qsharp
    import azure.quantum
    
    • A qsharp modul aktiválja a %%qsharp magic parancsot, amellyel Q#-kódot írhat közvetlenül egy cellába.
    • A azure-quantum modul kapcsolatot biztosít az Azure Quantum-munkaterülethez.

    Megjegyzés

    Ha a Rendszer nem észleli a Jupyter Python-kernelt ipykernel , a VS Code kérni fogja a telepítést.

  4. Adjon hozzá egy másik cellát, és írja be ezt a Q#-kódot, amely felhasználó által megadott számú véletlenszerű bitet ad vissza:

    Megjegyzés

    Figyelje meg, hogy amint beírja a magic parancsot %%qsharp, a jegyzetfüzet cellája PythonrólQ#-ra változik.

    %%qsharp
    
    operation Random() : Result {
        use q = Qubit();
        H(q);
        let result = M(q);
        Reset(q);
        return result
    }
    
    operation RandomNBits(N: Int): Result[] {
        mutable results = [];
        for i in 0 .. N - 1 {
            let r = Random();
            set results += [r];
        }
        return results
    }
    
  5. A művelet teszteléséhez használhatja a metódust, amely meghívhatja a eval jegyzetfüzetben korábban definiált bármely Q#-műveletet:

    qsharp.eval("RandomNBits(4)")
    
    [Zero, One, One, Zero]
    
  6. A program helyi szimulátoron való futtatásához használja a metódust run . Adja meg, shotshogy hányszor futtassa a programot, és a szimulátor Python-listaként adja vissza az eredményeket.

    qsharp.run("RandomNBits(4)", shots=10)
    
    [[One, One, One, One],
    [Zero, Zero, One, Zero],
    [One, Zero, Zero, One],
    [Zero, One, Zero, Zero],
    [One, Zero, One, One],
    [One, Zero, One, Zero],
    [One, One, One, Zero],
    [One, One, One, One],
    [Zero, Zero, Zero, One],
    [One, Zero, Zero, One]]
    

A kvantum-kapcsolatcsoport vizualizációja

A csomag használatával vizualizálhatja a qsharp-widgets kvantum áramköröket. Ez a csomag egy widgetet biztosít, amely SVG-képként renderel egy kvantum-kapcsolatcsoport-diagramot. További információ: Kvantum áramköri diagramok Jupyter Notebookokkal.

Adja hozzá a következő kódot egy új cellához a kapcsolatcsoport megjelenítéséhez:

from qsharp_widgets import Circuit

Circuit(qsharp.circuit("RandomNBits(4)"))

A Q#-művelet kapcsolatcsoportjának vizualizációját bemutató Jupyter Notebook képernyőképe.

További információ: Kvantum-kapcsolatcsoportok konvenciók.

A feladat fordítása az Alapprofil használatával

Amikor programokat futtat a helyi kvantumszimulátoron, bármilyen Q#-programot beküldhet. Az Azure Quantum hardvere targets azonban még nem támogatja az összes Q#-program futtatásához szükséges összes képességet. A Q#-programok Azure Quantumba való fordításához és elküldéséhez be kell állítania a target profilját, hogy meg tudja mondani a Q#-nak, hogy mely képességeket támogatja a target hardver. Jelenleg ez az Alapprofil. További információ: Profiltípusok az Azure Quantumban.

A Q#-értelmező újrainicializálása és a program lefordítása az alapprofillal:

  1. A profil beállításához használja a init metódust:

    qsharp.init(target_profile=qsharp.TargetProfile.Base)
    
  2. Mivel újrainicializálta az értelmezőt, újra le kell futtatnia a kódot az új profillal:

    %%qsharp
    
    operation Random() : Result {
        use q = Qubit();
        H(q);
        let result = M(q);
        Reset(q);
        return result
    }
    
    operation RandomNBits(N: Int): Result[] {
        mutable results = [];
        for i in 0 .. N - 1 {
            let r = Random();
            set results += [r];
        }
        return results
    }
    
  3. Ezután a metódussal adja meg azt a compile műveletet vagy függvényt, amely a program belépési pontja. Ez QIR formátumban fordítja le a kódot, amelyet aztán bármilyen kvantumhardverbe elküldhet:

    MyProgram = qsharp.compile("RandomNBits(4)")
    

Csatlakozás az Azure Quantumhoz és a feladat elküldése

Most, hogy a program a megfelelő formátumban lett lefordítva, hozzon létre egy azure.quantum.Workspace objektumot az Azure Quantumhoz való csatlakozáshoz. A csatlakozáshoz az Azure Quantum-munkaterület erőforrás-azonosítóját fogja használni. Az erőforrás-azonosítót és a helyet átmásolhatja a munkaterület áttekintő oldaláról a Azure Portal.

  1. Egy új cellában adja meg az erőforrás-azonosítót és a helyet az Azure Quantum-munkaterületről:

    MyWorkspace = azure.quantum.Workspace(
        resource_id = "MyResourceID",
        location = "MyLocation"
    )
    
  2. get_targets A metódus használatával megtekintheti a munkaterületen elérhető hardverekettargets:

    MyTargets = MyWorkspace.get_targets()
    print("This workspace's targets:")
    MyTargets
    
  3. Válassza a következőt rigetti.sim.qvmtarget:

    MyTarget = MyWorkspace.get_targets("rigetti.sim.qvm")
    
  4. Végül a metódussal küldje el a submit programot a paramétereivel, és jelenítse meg az eredményeket:

    job = MyTarget.submit(MyProgram, "MyQuantumJob", shots=100)
    job.get_results()
    
    {'Histogram': ['[0, 0, 0, 0]',
      0.3,
      '[1, 0, 0, 0]',
      0.1,
      '[1, 1, 1, 1]',
      0.3,
      '[0, 1, 1, 1]',
      0.3]}
    
  5. A feladat összes tulajdonsága elérhető a fájlban job.details, például:

    print(job.details)
    print("\nJob name:", job.details.name)
    print("Job status:", job.details.status)
    print("Job ID:", job.details.id)
    
    {'additional_properties': {'isCancelling': False}, 'id': '0150202e-9638-11ee-be2f-b16153380354', 'name': 'MyQuantumJob', 'provider_id': 'rigetti'...}
    Job name: MyQuantumJob
    Job status: Succeeded
    Job ID: 0150202e-9638-11ee-be2f-b16153380354
    

Python küldése Q#-feladatokkal az Azure Quantumba

Megtudhatja, hogyan írhat olyan Python-programot a VS Code használatával, amely Q#-műveleteket hív meg, csatlakozhat az Azure-hoz a Python-parancsokkal vagy az Azure CLI-vel, és hogyan küldheti el a feladatot.

Előfeltételek

A telepítés részleteiért lásd : A modern QDK telepítése a VS Code-on.

Q#-műveletek Létrehozás és importálása

qsharp A csomaggal Q#-fájlokban tárolhatja a függvényeit és műveleteit, és Q#-projekteket hozhat létre, amelyekkel bármelyiket meghívhatja a Python-kódból. Ez különösen akkor hasznos, ha olyan programot kell elindítania, amely bemeneti paramétereket alkalmaz.

  1. Q #-projekt létrehozásához kövesse az alábbi lépéseket.

  2. Nyisson meg egy új szövegfájlt, adja hozzá a következő Q#-kódot, amely egy felhasználó által megadott számú véletlenszerű bitet ad vissza, és mentse a fájlt a projektbe a következő néven source.qs: .

    Megjegyzés

    Vegye figyelembe, hogy ez a Q#-kód nem rendelkezik @EntryPoint olyan függvénnyel, mint egy Q#-program (lásd: Q#-feladatok elküldése az Azure Quantumba), de a Jupyter Notebook ellentétben ehhez névtérre van szükség (lásd: Jupyter Notebook-feladatok beküldése az Azure Quantumba).

    namespace Sample {
    
      operation Random() : Result {
            use q = Qubit();
            H(q);
            let result = M(q);
            Reset(q);
            return result
      }
    
      operation RandomNBits(N: Int): Result[] {
            mutable results = [];
            for i in 0 .. N - 1 {
               let r = Random();
               set results += [r];
            }
            return results
      }
    }
    
  3. Ugyanabban a mappában nyisson meg egy másik fájlt, és mentse a fájlként randomNum.py.

  4. Adja hozzá a következő kódot a és azure.quantum a qsharp modul importálásához.

    import qsharp
    import azure.quantum
    
  5. Ezután adjon hozzá kódot a Q#-projekt gyökérmappájának meghatározásához, és tesztelje a target műveletet a helyi szimulátoron. A műveletet névtér> hívja< meg.<operation_name( )>, és ebben az esetben a visszaadandó véletlenszerű bitek számát adja meg.

    qsharp.init(project_root = '/MyProjectRootFolder')
    print(qsharp.eval("Sample.RandomNBits(4)"))
    
    [Zero, One, One, Zero]
    
  6. A műveletet a metódussal run is tesztelheti, amely egy további shots paramétert ad át, és egy Python-listában adja vissza az eredményeket. A fájlban randomNum.pycserélje le az előző nyomtatási utasítást a következőre:

    result = qsharp.run("Sample.RandomNBits(4)", shots=10)
    for x in result:
        print(x)
    
    [[One, One, One, One],
    [Zero, Zero, One, Zero],
    [One, Zero, Zero, One],
    [Zero, One, Zero, Zero],
    [One, Zero, One, One],
    [One, Zero, One, Zero],
    [One, One, One, Zero],
    [One, One, One, One],
    [Zero, Zero, Zero, One],
    [One, Zero, Zero, One]]
    

A feladat fordítása az Alapprofil használatával

Amikor programokat futtat a helyi kvantumszimulátoron, bármilyen Q#-programot beküldhet. Az Azure Quantum hardvere targets azonban még nem támogatja az összes Q#-program futtatásához szükséges összes képességet. A Q#-programok Azure Quantumba való fordításához és elküldéséhez be kell állítania a target profilját, hogy meg tudja mondani a Q#-nak, hogy mely képességeket támogatja a target hardver. Jelenleg ez az Alapprofil. További információ: Profiltípusok az Azure Quantumban.

Megjegyzés

Csak a VS Code Q#-programjai esetén a VS Code automatikusan beállítja az Alapprofilt.

  1. A profil beállításához használja a init metódust:

    qsharp.init(target_profile=qsharp.TargetProfile.Base)
    
  2. Ezután a compile metódussal adja meg azt a műveletet vagy függvényt, amely a program belépési pontja. A lefordított program ezután bármely kvantumhardverbe elküldhető:

    MyProgram = qsharp.compile("Sample.RandomNBits(4)")
    

Csatlakozás az Azure Quantumhoz és a feladat elküldése

Csatlakozhat az Azure Quantumhoz, és elküldheti a feladatot egy Python által létrehozott Workspace objektummal, vagy az Azure CLI-vel csatlakozhat és küldheti el a feladatot. Az Azure CLI használatához szövegfájlként kell mentenie a lefordított programot, és be kell küldenie a fájlt egy CLI-paranccsal.

Most, hogy a program a megfelelő formátumban lett lefordítva, hozzon létre egy azure.quantum.Workspace objektumot az Azure Quantumhoz való csatlakozáshoz. A csatlakozáshoz az Azure Quantum-munkaterület erőforrás-azonosítóját fogja használni. Az erőforrás-azonosítót és a helyet átmásolhatja a munkaterület áttekintő oldaláról a Azure Portal.

  1. Adja hozzá a következő kódot a fájlhoz randomNum.py, és adja meg az erőforrás-azonosítóját és helyét az Azure Quantum-munkaterületről:

    workspace = azure.quantum.Workspace(
        resource_id = "MyResourceID",
        location = "MyLocation"
    )
    
  2. get_targets A metódus használatával megjelenítheti a munkaterületen elérhető hardverekettargets:

    MyTargets = workspace.get_targets()
    print("This workspace's targets:")
    for x in MyTargets:
        print(x)
    
  3. Válassza a következőt rigetti.sim.qvmtarget:

    MyTarget = workspace.get_targets("rigetti.sim.qvm")
    
  4. Végül a submit metódussal küldje el a programot a paramétereivel. A rendszer Python-szótárként adja vissza a feladat eredményeit.

    job = MyTarget.submit(MyProgram, "MyPythonJob", shots=100)
    results = job.get_results()
    print("\nResults: ", results)
    
  5. Csak az értékek kinyerése és megjelenítése:

    resultList = results.get("Histogram")
    for x in resultList:
        print(x)
    
    [0, 0, 0, 0]
    0.3
    [1, 0, 0, 0]
    0.1
    [1, 1, 1, 1]
    0.3
    [0, 1, 1, 1]
    0.3
    
  6. A feladat összes tulajdonsága elérhető a fájlban job.details, például:

    print(job.details)
    print("\nJob name:", job.details.name)
    print("Job status:", job.details.status)
    print("Job ID:", job.details.id)
    
    {'additional_properties': {'isCancelling': False}, 'id': '0fc396d2-97dd-11ee-9958-6ca1004ff31f', 'name': 'MyPythonJob', 'provider_id': 'rigetti'...}
    Job name: MyPythonJob
    Job status: Succeeded
    Job ID: fc396d2-97dd-11ee-9958-6ca1004ff31f
    

Következő lépések