Začínáme s programy v Q# a editorem Visual Studio Code
V tomto článku najdete postup použití VC Code k vytvoření a odeslání úloh kvantových výpočtů Q#, Jupyter Notebook nebo Pythonu do Azure Quantum pomocí VS Code.
Odesílání úloh Q# do Azure Quantum
Naučte se používat VS Code ke spuštění, ladění a odeslání programu Q# do Azure Quantum.
Požadavky
Podrobnosti o instalaci najdete v tématu Instalace moderní sady QDK ve VS Code.
- Pracovní prostor Azure Quantum ve vašem předplatném Azure. Informace o vytvoření pracovního prostoru najdete v tématu Create pracovního prostoru Azure Quantum.
- Nejnovější verze editoru Visual Studio Code nebo otevřete VS Code na webu.
- Nejnovější verze rozšíření Azure Quantum Development Kit .
Načtení ukázkového programu v Q#
Ve VS Code vyberte File New Text File (Nový textový soubor) > a uložte soubor jako RandomNum.qs.
Otevřete RandomNum.qs a zadejte
sample
, pak v seznamu možností vyberte Náhodný bitový vzorek a soubor uložte.
Poznámka
Můžete také otevřít vlastní soubor s jazykem Q#. Pokud spustíte starší program q# a narazíte na chyby, přečtěte si téma Testování a ladění nebo Migrace programů do moderní sady QDK.
Spuštění programu v jazyce Q#
Pokud chcete otestovat místní spuštění programu v integrovaném simulátoru, klikněte v seznamu příkazů níže
@EntryPoint()
na Spustit nebo stiskněte Ctrl+F5. Výstup se zobrazí v konzole ladění.Pokud chcete program před odesláním do Azure Quantum ladit, klikněte v seznamu příkazů níže
@EntryPoint()
na Ladit nebo stiskněte klávesu F5. Pomocí ovládacích prvků ladění v horní části můžete krokovat, do kódu a z kódu. Další informace o ladění programů v Q# najdete v tématu Testování a ladění.
Vizualizace histogramu frekvence
Histogram frekvence představuje rozdělení výsledků získaných z vícenásobného spuštění kvantového programu neboli "záběrů". Každý pruh v histogramu odpovídá možnému výsledku a jeho výška představuje počet pozorování výsledku. Histogram frekvence pomáhá vizualizovat rozdělení pravděpodobnosti těchto výsledků.
Vyberte Zobrazit –> Paleta příkazů a zadejte histogram, který by měl vyvolat soubor Q#: Run (Spustit soubor) a zobrazit možnost histogramu . Můžete také kliknout na Histogram ze seznamu příkazů níže
@EntryPoint()
. Tuto možnost vyberte, pokud chcete otevřít okno histogramu Q#.Zadejte několik snímků , které se mají spustit, například 100 snímků, a stiskněte Enter. Histogram se zobrazí v okně histogramu Q#.
Kliknutím na ikonu nastavení vlevo nahoře zobrazíte možnosti.
Kliknutím na pruh zobrazíte procento tohoto výsledku. V tomto případě existují dva možné výsledky, 0 a 1, a procento každého výsledku se blíží 50 %.
Tip
Histogram můžete přiblížit pomocí kolečka myši nebo gesta trackpadu. Při přiblížení můžete graf posunovat stisknutím klávesy Alt při posouvání.
Vizualizace kvantového obvodu
Diagramy kvantových obvodů jsou vizuální reprezentací kvantových operací. Zobrazují tok qubitů přes kvantový program, včetně bran a měření, která se na ně vztahují. Další informace najdete v tématu Kvantové diagramy okruhů v editoru Visual Studio Code.
Vyberte View - Command Palette (Zobrazení –> paleta příkazů ) a zadejte "circuit", což by mělo vyvolat možnost Q#: Show circuit (Zobrazit okruh ). Můžete také kliknout na Okruh ze seznamu příkazů níže
@EntryPoint()
.Okruh se zobrazí v okně okruhu Q#. Diagram okruhu znázorňuje jeden registr qubitu, který je inicializován do stavu |0⟩. Pak se na qubit použije Hadamardův hradlo H, po kterém následuje operace měření, která je reprezentována symbolem měřiče. Další informace najdete v tématu Konvence kvantových obvodů.
Připojení k Azure Quantum a odeslání úlohy
Úlohy můžete připojit a odesílat přímo z nástroje VS Code. V tomto příkladu odešlete úlohu do simulátoru Rigetti.
Vyberte Zobrazit –> Paleta příkazů a zadejte Q#: Připojit k pracovnímu prostoru Azure Quantum. Stiskněte Enter.
Vyberte Účet Azure a podle pokynů se připojte k preferovanému adresáři, předplatnému a pracovnímu prostoru.
Poznámka
Pokud máte připojovací řetězec, můžete vybrat Připojovací řetězec a vložit připojovací řetězec odpovídající pracovnímu prostoru Azure Quantum. Další informace najdete v tématu Připojení k pracovnímu prostoru Quantum pomocí připojovací řetězec.
Po připojení rozbalte v podokně Průzkumník položku Pracovní prostory Quantum.
Rozbalte pracovní prostor a rozbalte poskytovatele Rigetti .
Poznámka
Pokud dojde k problému s připojením ke službě Azure Quantum, zobrazí se vedle názvu pracovního prostoru ikona upozornění. Najeďte myší na název pracovního prostoru, aby se zobrazily informace o chybě.
Jako rigetti.sim.qvmtargetvyberte .
Výběrem ikony přehrávání napravo od target názvu spusťte odesílání aktuálního programu q#. Pokud se zobrazí automaticky otevírané okno, vyberte Změnit profil QIR target a pokračujte.
Přidejte název pro identifikaci úlohy.
Přidejte počet snímků nebo počet spuštění programu.
Stisknutím klávesy Enter úlohu odešlete. Stav úlohy se zobrazí v dolní části obrazovky.
Rozbalte položku Úlohy a najeďte myší na úlohu, která zobrazí časy a stav úlohy.
Výsledky zobrazíte tak, že výběrem ikony cloudu vedle názvu úlohy stáhnete výsledky z úložiště pracovního prostoru a zobrazíte je ve VS Code.
Odesílání úloh poznámkových bloků Jupyter do Azure Quantum
Naučte se používat VS Code ke spuštění, ladění a odeslání Jupyter Notebook Q# do Azure Quantum. Kroky v tomto článku platí také pro poznámkové bloky Jupyter na místním serveru Jupyter nebo poznámkové bloky na portálu Azure Quantum.
Požadavky
Podrobnosti o instalaci najdete v tématu Instalace moderní sady QDK ve VS Code.
Pracovní prostor Azure Quantum ve vašem předplatném Azure. Informace o vytvoření pracovního prostoru najdete v tématu Create pracovního prostoru Azure Quantum.
Prostředí Pythonu s nainstalovaným Pythonem a Pipem .
VS Code s nainstalovanou sadou Azure Quantum Development Kit, Pythonem a rozšířeními Jupyter .
Balíčky
ipykernel
Azure Quantumqsharp
,qsharp-widgets
aazure-quantum
a balíček .python -m pip install --upgrade qsharp qsharp-widgets azure-quantum ipykernel
Spuštění a testování programu v místním simulátoru
Ve VS Code vyberte Zobrazit > paletu příkazů a vyberte Create: Nový Jupyter Notebook.
V pravém horním rohu nástroj VS Code rozpozná a zobrazí verzi Pythonu a virtuální prostředí Pythonu vybrané pro poznámkový blok. Pokud máte více prostředí Pythonu, možná budete muset vybrat jádro pomocí nástroje pro výběr jádra v pravém horním rohu. Pokud se žádné prostředí nezjistilo, informace o nastavení najdete v tématu Poznámkové bloky Jupyter ve VS Code .
V první buňce poznámkového bloku spusťte následující kód Pythonu, který importuje potřebné moduly:
import qsharp import azure.quantum
- Modul
qsharp
aktivuje%%qsharp
příkaz magic, který umožňuje zadat kód Q# přímo do buňky. - Modul
azure-quantum
poskytuje možnosti připojení k pracovnímu prostoru Azure Quantum.
Poznámka
Pokud se jádro
ipykernel
Jupyter Pythonu nezjistí, VS Code vás vyzve k jeho instalaci.- Modul
Přidejte další buňku a zadejte tento kód Q#, který vrátí počet náhodných bitů zadaný uživatelem:
Poznámka
Všimněte si, že jakmile zadáte příkaz
%%qsharp
magic , buňka poznámkového bloku změní typ z Pythonu na Q#.%%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 }
K otestování operace můžete použít metodu
eval
, která může volat libovolnou operaci Q# dříve definovanou v poznámkovém bloku:qsharp.eval("RandomNBits(4)")
[Zero, One, One, Zero]
Pokud chcete program spustit do místního simulátoru, použijte metodu
run
.shots
Zadejte , nebo kolikrát se má program spustit, a simulátor vrátí výsledky jako seznam Pythonu.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]]
Vizualizace kvantového obvodu
Kvantové obvody můžete vizualizovat pomocí qsharp-widgets
balíčku . Tento balíček obsahuje widget, který vykresluje diagram kvantového obvodu jako obrázek SVG. Další informace najdete v tématu Kvantové diagramy obvodů s poznámkovými bloky Jupyter.
Přidejte následující kód do nové buňky pro vizualizaci okruhu:
from qsharp_widgets import Circuit
Circuit(qsharp.circuit("RandomNBits(4)"))
Další informace najdete v tématu Konvence kvantových obvodů.
Kompilace úlohy pomocí základního profilu
Při spouštění programů v místním kvantovém simulátoru můžete odeslat libovolný typ programu q#. Hardware targets Azure Quantum ale zatím nepodporuje všechny funkce potřebné ke spouštění všech programů v jazyce Q#. Pokud chcete kompilovat a odesílat programy v Q# do Azure Quantum, musíte nastavit profil target tak, aby Q# sděloval, které funkce váš target hardware podporuje. V současné době se jedná o základní profil. Další informace najdete v tématu Typy profilů v Azure Quantum.
Opětovná inicializace interpretu jazyka Q# a kompilace programu se základním profilem:
init
K nastavení profilu použijte metodu :qsharp.init(target_profile=qsharp.TargetProfile.Base)
Vzhledem k tomu, že jste interpret znovu inicializovali, musíte kód spustit znovu s novým profilem:
%%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 }
Dále pomocí
compile
metody určete operaci nebo funkci, která je vstupním bodem programu. Tím se kód zkompiluje do formátu QIR, který pak můžete odeslat na jakýkoli kvantový hardware:MyProgram = qsharp.compile("RandomNBits(4)")
Připojení k Azure Quantum a odeslání úlohy
Teď, když máte program zkompilovaný do správného formátu, vytvořte azure.quantum.Workspace
objekt pro připojení k Azure Quantum. K připojení použijete ID prostředku pracovního prostoru Azure Quantum. ID prostředku a umístění můžete zkopírovat ze stránky přehledu pracovního prostoru v Azure Portal.
V nové buňce zadejte ID a umístění prostředku z pracovního prostoru Azure Quantum:
MyWorkspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
K zobrazení dostupného
get_targets
hardwaru targets v pracovním prostoru použijte metodu :MyTargets = MyWorkspace.get_targets() print("This workspace's targets:") MyTargets
Vyberte :
rigetti.sim.qvm
targetMyTarget = MyWorkspace.get_targets("rigetti.sim.qvm")
Nakonec použijte metodu
submit
k odeslání programu s parametry a zobrazení výsledků: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]}
Všechny vlastnosti úlohy jsou přístupné v
job.details
, například: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
Odeslání Pythonu s úlohami Q# do Azure Quantum
Naučte se používat VS Code k napsání programu v Pythonu, který volá operace Q#, připojení k Azure pomocí příkazů Pythonu nebo Azure CLI a odeslání úlohy.
Požadavky
Podrobnosti o instalaci najdete v tématu Instalace moderní sady QDK ve VS Code.
- Pracovní prostor Azure Quantum ve vašem předplatném Azure. Informace o vytvoření pracovního prostoru najdete v tématu Create pracovního prostoru Azure Quantum.
- Prostředí Pythonu s nainstalovaným Pythonem a Pipem .
- VS Code s nainstalovanou sadou Azure Quantum Development Kit a rozšířením Pythonu
- Azure Quantum
qsharp
aazure-quantum
balíčky. - Azure CLI s nainstalovaným nejnovějším rozšířením Azure Quantum.
Create a import operací V Q#
qsharp
Pomocí balíčku můžete ukládat funkce a operace do souborů jazyka Q# a vytvářet projekty Q#, které vám umožní volat libovolný z nich z kódu Pythonu. To je užitečné zejména v případě, že potřebujete spustit program, který přebírá vstupní parametry.
Postupujte podle pokynů k vytvoření projektu Q#.
Otevřete nový textový soubor, přidejte následující kód Q#, který vrací počet náhodných bitů zadaný uživatelem, a uložte soubor do projektu jako
source.qs
.Poznámka
Všimněte si, že tento kód Q# nemá
@EntryPoint
funkci jako program q# (viz Odesílání úloh Q# do Azure Quantum), ale na rozdíl od Jupyter Notebook vyžaduje obor názvů (viz Odesílání úloh Jupyter Notebook do Azure Quantum).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 } }
Ve stejné složce otevřete jiný soubor a uložte ho jako
randomNum.py
.Přidejte následující kód pro import
qsharp
modulů aazure.quantum
.import qsharp import azure.quantum
Dále přidejte kód pro definování kořenové složky projektu Q# a otestujte spuštění target operace v místním simulátoru. Operace je volána oborem< názvů>.<operation_name( )> a v tomto případě předáváte počet náhodných bitů, které se mají vrátit.
qsharp.init(project_root = '/MyProjectRootFolder') print(qsharp.eval("Sample.RandomNBits(4)"))
[Zero, One, One, Zero]
Operaci můžete také otestovat pomocí
run
metody , která předá dalšíshots
parametr a vrátí výsledky v seznamu Pythonu. VrandomNum.py
souboru nahraďte předchozí příkaz print následujícím kódem: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]]
Kompilace úlohy pomocí základního profilu
Při spouštění programů v místním kvantovém simulátoru můžete odeslat libovolný typ programu q#. Hardware targets Azure Quantum ale zatím nepodporuje všechny funkce potřebné ke spouštění všech programů v jazyce Q#. Pokud chcete kompilovat programy v jazyce Q# a odesílat je do služby Azure Quantum, musíte nastavit profil target tak, aby Q# sděloval, které funkce váš target hardware podporuje. V současné době se jedná o základní profil. Další informace najdete v tématu Typy profilů v Azure Quantum.
Poznámka
V případě programů pouze v Q# v editoru VS Code VS Code nastaví základní profil automaticky.
init
K nastavení profilu použijte metodu :qsharp.init(target_profile=qsharp.TargetProfile.Base)
Pak použijte metodu
compile
k určení operace nebo funkce, která je vstupním bodem programu. Zkompilovaný program je pak možné odeslat na jakýkoli kvantový hardware:MyProgram = qsharp.compile("Sample.RandomNBits(4)")
Připojení k Azure Quantum a odeslání úlohy
Můžete se připojit k Azure Quantum a odeslat úlohu pomocí objektu vytvořeného Workspace
v Pythonu nebo připojit a odeslat úlohu pomocí Azure CLI. Použití Azure CLI vyžaduje, abyste zkompilovaný program uložili jako textový soubor a odeslali ho pomocí příkazu rozhraní příkazového řádku.
Teď, když máte program zkompilovaný do správného formátu, vytvořte azure.quantum.Workspace
objekt pro připojení k Azure Quantum. K připojení použijete ID prostředku pracovního prostoru Azure Quantum. ID prostředku a umístění můžete zkopírovat ze stránky přehledu pracovního prostoru v Azure Portal.
Do souboru přidejte následující kód
randomNum.py
a vyplňte ID vašeho prostředku a umístění z pracovního prostoru Azure Quantum:workspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
K zobrazení dostupného hardwaru targets v pracovním prostoru použijte metodu
get_targets
:MyTargets = workspace.get_targets() print("This workspace's targets:") for x in MyTargets: print(x)
Vyberte :
rigetti.sim.qvm
targetMyTarget = workspace.get_targets("rigetti.sim.qvm")
Nakonec použijte metodu
submit
k odeslání programu s jeho parametry. Výsledky úlohy se vrátí jako slovník Pythonu.job = MyTarget.submit(MyProgram, "MyPythonJob", shots=100) results = job.get_results() print("\nResults: ", results)
Extrahování pouze hodnot a jejich zobrazení:
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
Všechny vlastnosti úlohy jsou přístupné v
job.details
, například: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
Další kroky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro