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 Vytvoření 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í.
Vykreslení 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í.
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 Vytvoření 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 .
- Azure Quantum
qsharp
aazure-quantum
balíčky aipykernel
balíček.
Spuštění a testování programu v místním simulátoru
Ve VS Code vyberte Zobrazit > paletu příkazů a vyberte Vytvořit: 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 příkaz
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:
%%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]]
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.
Pokud chcete znovu inicializovat interpret jazyka Q# a zkompilovat program pomocí základního profilu:
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 znovu spustit 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 libovolný 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í je možné zkopírovat ze stránky přehledu pracovního prostoru v Azure Portal.
V nové buňce vyplňte ID prostředku a umístění z pracovního prostoru Azure Quantum:
MyWorkspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
Pomocí metody
get_targets
zobrazte dostupný hardware targets v pracovním prostoru: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
nástroji , 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 Vytvoření 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.
Vytvoření 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 do libovolného z nich z kódu Pythonu. To je užitečné hlavně v případě, že potřebujete spustit program, který přebírá vstupní parametry.
Postupujte podle pokynů k vytvoření projektu v jazyce Q#.
Otevřete nový textový soubor, přidejte následující kód jazyka Q#, který vrátí 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 v jazyce 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í operace v target místním simulátoru. Operace se volá podle <oboru 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 příkazem: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 V# . Hardware targets Azure Quantum ale zatím nepodporuje všechny možnosti potřebné ke spuštění všech programů V# . Pokud chcete kompilovat a odesílat programy v Q# do Azure Quantum, musíte nastavit profil target tak, aby Q# říkal, které funkce podporuje váš target hardware. 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ů v jazyce Q# v editoru VS Code nastaví VS Code základní profil automaticky.
init
K nastavení profilu použijte metodu:qsharp.init(target_profile=qsharp.TargetProfile.Base)
Pak pomocí
compile
metody určete operaci nebo funkci, která je vstupním bodem programu. Kompilovaný 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í je možné 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 prostředku a umístění z pracovního prostoru Azure Quantum:workspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
Použijte metodu
get_targets
k zobrazení dostupného hardwaru targets v pracovním prostoru: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
nástroji , 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