Ismerkedés a munkamenetekkel
A munkamenetek a hibrid kvantum-számítástechnika kulcsfontosságú funkciói, amelyek lehetővé teszik több kvantum-számítási feladat csoportosítását.
Ez a cikk a hibrid kvantum-számítástechnika munkameneteinek architektúráját és egy új munkamenet létrehozását ismerteti.
Előfeltételek
Munkamenet létrehozásához a következő előfeltételekre van szükség:
Egy Azure-fiók, aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, regisztráljon ingyenesen, és regisztráljon használatalapú fizetéses előfizetésre.
Egy Azure Quantum-munkaterület. További információ: Azure Quantum-munkaterület létrehozása.
Python-környezet, amelyen telepítve van a Python és a Pip .
Az Azure Quantum-csomag
azure-quantum
. Ha qiskitet vagy Cirqot szeretne használni, telepítenie kell aazure-quantum
csomagot a [qiskit] vagy a [cirq] címkékkel.pip install --upgrade azure-quantum[qiskit]
Mi az a munkamenet?
A munkamenet egy vagy több feladat logikai csoportosítása, amely egyetlen targetfeladathoz van elküldve. Minden munkamenethez egyedi azonosító van csatolva az adott munkamenet egyes feladataihoz.
Munkamenetekben az ügyfél számítási erőforrása áthelyezhető a felhőbe, ami kisebb késést és a kvantum-kapcsolatcsoport különböző paraméterekkel történő végrehajtásának megismétlését eredményezi. A feladatok logikailag csoportosíthatók egy munkamenetbe, és az abban a munkamenetben lévő feladatok elsőbbséget kaphatnak a nem munkamenetbeli feladatokkal szemben. Bár a qubitállapotok nem maradnak fenn a feladatok között, a munkamenetek rövidebb várakozási időt adnak a feladatokhoz és a hosszabb ideig futó problémákhoz.
A munkamenetek lehetővé teszik több kvantum-számítási feladat rendszerezését, amellyel klasszikus kódot futtathat a kvantumfeladatok között. Összetett algoritmusokat futtathat az egyes kvantum-számítási feladatok jobb rendszerezéséhez és nyomon követéséhez.
Egy kulcsfontosságú felhasználói forgatókönyv, amelyben egy munkamenetben egyesíteni szeretné a feladatokat, paraméterezett kvantum-algoritmusok, ahol egy kvantum-számítási feladat kimenete tájékoztatja a következő kvantum-számítási feladat paramétereit. Az ilyen típusú algoritmusok leggyakoribb példái a Variational Quantum Eigensolvers (VQE) és Quantum Approximate Optimization Algorithms a (QAOA).
Támogatott hardver
A munkamenetek minden kvantum-számítástechnikai hardverszolgáltatón támogatottak. Bizonyos esetekben a munkameneten belül elküldött feladatok rangsorolása az adott targetüzenetsorban van. További információ: Target viselkedés.
Munkamenet létrehozása
Munkamenet létrehozásához kövesse az alábbi lépéseket:
Ez a példa bemutatja, hogyan hozhat létre munkamenetet beágyazott kóddal Q# jupyter notebook használatával a Visual Studio Code-ban. Olyan Python-programokkal is létrehozhat munkameneteket, amelyek egy szomszédos Q# programot hívnak meg.
Feljegyzés
A munkameneteket a Python kezeli, még beágyazott kód futtatásakor Q# is.
A VS Code-ban válassza a Parancspaletta megtekintése > lehetőséget, majd a Létrehozás: Új Jupyter-jegyzetfüzet 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 nem észlelt környezetet, a beállítási információkért tekintse meg a VS Code Jupyter-jegyzetfüzeteit.
A jegyzetfüzet első cellájában futtassa a
import azure.quantum workspace = azure.quantum.Workspace( resource_id = "", # add your resource ID location = "", # add your location, for example "westus" )
A + Kód gombra kattintva új cellát vehet fel a jegyzetfüzetbe, és importálhatja
qsharp
a Python SDK-t.import qsharp
Válassza ki a választott kvantumot target . Ebben a példában az IonQ-szimulátort használja.target
target = workspace.get_targets("ionq.simulator")
Válassza ki a target profil konfigurációit ,
Adaptive_RI
Base
vagyUnrestricted
.qsharp.init(target_profile=qsharp.TargetProfile.Base) # or qsharp.TargetProfile.Adaptive_RI, qsharp.TargetProfile.Unrestricted
Feljegyzés
Adaptive_RI
target A profilfeladatok jelenleg támogatottak a Quantinuumban targets. További információ: Integrált hibrid kvantum-számítástechnika.Írja meg a Q# programot. A következő Q# program például véletlenszerű bitet hoz létre. A bemeneti argumentumok használatának szemléltetéséhez a program bemenetként egy egész számot és
n
egy szögtömbötangle
vesz fel.%%qsharp import Std.Measurement.*; import Std.Arrays.*; operation GenerateRandomBits(n: Int, angle: Double[]) : Result[] { use qubits = Qubit[n]; // n parameter as the size of the qubit array for q in qubits { H(q); } R(PauliZ, angle[0], qubits[0]); // arrays as entry-points parameters R(PauliZ, angle[1], qubits[1]); let results = MeasureEachZ(qubits); ResetAll(qubits); return results; }
Ezután létrehoz egy munkamenetet. Tegyük fel, hogy háromszor szeretné futtatni
GenerateRandomBit
a műveletet, ígytarget.submit
az adatokkaltarget
együtt küldi el a Q# műveletet, és háromszor megismételi a kódot – valós forgatókönyvben előfordulhat, hogy ugyanazon kód helyett különböző programokat szeretne elküldeni.angle = [0.0, 0.0] with target.open_session(name="Q# session of three jobs") as session: target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 1", shots=100) # First job submission angle[0] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 2", shots=100) # Second job submission angle[1] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 3", shots=100) # Third job submission session_jobs = session.list_jobs() [session_job.details.name for session_job in session_jobs]
Fontos
Amikor paraméterekként ad át argumentumokat a feladatnak, a rendszer meghívásakor
qsharp.compile
a kifejezésbe formázza őketQ#. Ez azt jelenti, hogy körültekintően kell formáznia az argumentumokat objektumként Q# . Ebben a példában, mivel a Python tömbjei már [item0, item1, ...] formátumban vannak nyomtatva, a bemeneti argumentumok megegyeznek a Q# formázási értékekkel. Más Python-adatstruktúrák esetében több kezelésre lehet szükség a sztringértékek kompatibilis módon való beszúrásához Q# .Miután létrehozott egy munkamenetet, lekérheti
workspace.list_session_jobs
a munkamenet összes feladatának listáját. További információ: Munkamenetek kezelése.
Target magatartás
Minden kvantumhardver-szolgáltató saját heurisztikus megoldásokat határoz meg a feladatok rangsorolásának legjobb kezelése érdekében egy munkameneten belül.
Quantinuum
Ha úgy dönt, hogy egy munkameneten belül feladatokat küld egy Quantinuumba target, a munkamenet kizárólagos hozzáféréssel rendelkezik a hardverhez, amíg egymástól egy percen belül sorba állítja a feladatokat. Ezt követően a feladatok a szabványos várólistás és rangsorolási logikával lesznek elfogadva és kezelve.