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.
- Azure Quantum-munkaterület az Azure-előfizetésben. Munkaterület létrehozásához lásd: Azure Quantum-munkaterület Létrehozás.
- A Visual Studio Code legújabb verziója, vagy nyissa meg a VS Code-ot a weben.
- Az Azure Quantum Development Kit bővítmény legújabb verziója.
Q#-mintaprogram betöltése
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.
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.
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
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.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.
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.
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.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.
A beállítások megjelenítéséhez kattintson a bal felső beállítások ikonra .
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.
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.
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.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.
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.
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.
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.
Miután csatlakozott, az Explorer panelen bontsa ki a Quantum Workspaces (Kvantum-munkaterületek) elemet.
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.
Válassza ki a rigetti.sim.qvm elemet.target
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.
Adjon hozzá egy nevet a feladat azonosításához.
Adja meg a felvételek számát vagy a program futási idejének számát.
Nyomja le az Enter billentyűt a feladat elküldéséhez. A feladat állapota a képernyő alján jelenik meg.
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.
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.
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.
Azure Quantum-munkaterület az Azure-előfizetésben. Munkaterület létrehozásához lásd: Azure Quantum-munkaterület Létrehozás.
Python-környezet, amelyen telepítve van a Python és a Pip .
VS Code telepített Azure Quantum Development Kit-, Python- és Jupyter-bővítménnyel .
Az Azure Quantum
qsharp
, ,qsharp-widgets
ésazure-quantum
csomagok, valamint aipykernel
csomag.python -m pip install --upgrade qsharp qsharp-widgets azure-quantum ipykernel
A program futtatása és tesztelése a helyi szimulátorban
A VS Code-ban válassza a Parancskatalógus megtekintése>, majd a Létrehozás: Új Jupyter Notebook lehetőséget.
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.
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.- A
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 }
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]
A program helyi szimulátoron való futtatásához használja a metódust
run
. Adja meg,shots
hogy 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)"))
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:
A profil beállításához használja a
init
metódust:qsharp.init(target_profile=qsharp.TargetProfile.Base)
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 }
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.
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" )
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
Válassza a következőt
rigetti.sim.qvm
target:MyTarget = MyWorkspace.get_targets("rigetti.sim.qvm")
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]}
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.
- Azure Quantum-munkaterület az Azure-előfizetésben. Munkaterület létrehozásához lásd: Azure Quantum-munkaterület Létrehozás.
- Python-környezet, amelyen telepítve van a Python és a Pip .
- VS Code telepített Azure Quantum Development Kittel és Python-bővítménnyel.
- Az Azure Quantum
qsharp
ésazure-quantum
a csomagok. - Azure CLI a legújabb Telepített Azure Quantum-bővítménnyel.
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.
Q #-projekt létrehozásához kövesse az alábbi lépéseket.
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 } }
Ugyanabban a mappában nyisson meg egy másik fájlt, és mentse a fájlként
randomNum.py
.Adja hozzá a következő kódot a és
azure.quantum
aqsharp
modul importálásához.import qsharp import azure.quantum
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]
A műveletet a metódussal
run
is tesztelheti, amely egy továbbishots
paramétert ad át, és egy Python-listában adja vissza az eredményeket. A fájlbanrandomNum.py
cseré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.
A profil beállításához használja a
init
metódust:qsharp.init(target_profile=qsharp.TargetProfile.Base)
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.
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" )
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)
Válassza a következőt
rigetti.sim.qvm
target:MyTarget = workspace.get_targets("rigetti.sim.qvm")
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)
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
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: