Kurz: Odeslání programu QIR do Nástroje pro posouzení prostředků Azure Quantum
Estimátor prostředků Azure Quantum je založený na Quantum Intermediate Representation (QIR), plně interoperabilní specifikaci pro kvantové programy. QIR slouží jako společné rozhraní mezi kvantovými programovacími jazyky a architekturami a targetplatformami pro kvantové výpočty. Vzhledem k tomu, že estimátor prostředků přijímá jako vstup program QIR, podporuje jakýkoli jazyk, který do QIR překládá. Můžete ho například používat v oblíbených kvantových sadách SDK a jazycích, jako jsou Q# a Qiskit. V tomto kurzu napíšete program QIR a odešlete ho do Nástroje pro posouzení prostředků. V tomto kurzu se ke generování QIR používá PyQIR , ale můžete použít jakýkoli jiný zdroj QIR.
V tomto kurzu se naučíte:
- Připojte se ke službě Azure Quantum.
- Definování funkce pro vytvoření úlohy odhadu prostředků z bitového kódu QIR
- Vytvoření bitového kódu QIR pomocí generátoru PyQIR
- Odeslání úlohy QIR do nástroje pro posouzení prostředků
Zaregistrujte si bezplatné zkušební předplatné Azure na 30 dnů.
Požadavky
- Účet Azure s aktivním předplatným. Pokud nemáte účet Azure, zaregistrujte se zdarma a zaregistrujte si předplatné s průběžnými platbou.
- Pracovní prostor Azure Quantum. Další informace najdete v tématu Vytvoření pracovního prostoru Azure Quantum.
- Poskytovatel Microsoft Quantum Computing přidaný do vašeho pracovního prostoru.
Vytvoření nového poznámkového bloku v pracovním prostoru
- Přihlaste se k Azure Portal a vyberte svůj pracovní prostor Azure Quantum.
- V části Operace vyberte Poznámkové bloky.
- Klikněte na Moje poznámkové bloky a klikněte na Přidat nový.
- V části Typ jádra vyberte IPython.
- Zadejte název souboru a klikněte na Vytvořit soubor.
Když se nový poznámkový blok otevře, automaticky vytvoří kód pro první buňku na základě informací o vašem předplatném a pracovním prostoru.
from azure.quantum import Workspace
workspace = Workspace (
resource_id = "", # Your resource_id
location = "" # Your workspace location (for example, "westus")
)
Poznámka
Pokud není uvedeno jinak, měli byste každou buňku spouštět v pořadí, v jakém je vytváříte, aby nedocházelo k problémům s kompilací.
Kliknutím na trojúhelníkové ikony "přehrát" nalevo od buňky spusťte kód.
Načtení požadovaných importů
Nejprve je potřeba importovat některé třídy a funkce Pythonu ze azure.quantum
souborů , qiskit
a pyqir
. Qiskit nebudete používat k přímému sestavování kvantových obvodů, ale použijete , AzureQuantumJob
který je postavený na ekosystému Qiskit. Ujistěte se, že používáte nejnovější verzi Qiskitu. Další informace najdete v tématu Aktualizace balíčku azure-quantum Python.
from azure.quantum.qiskit import AzureQuantumProvider
from azure.quantum.qiskit.job import AzureQuantumJob
from pyqir.generator import BasicQisBuilder, SimpleModule
Připojení ke službě Azure Quantum
Dále pomocí objektu workspace
z předchozí buňky vytvořte AzureQuantumProvider
objekt pro připojení k pracovnímu prostoru Azure Quantum.
provider = AzureQuantumProvider(workspace)
Definování funkce pro vytvoření úlohy odhadu prostředků z QIR
Estimátor prostředků je target poskytovatelem služby Microsoft Quantum Computing. Použití estimátoru prostředků je naprosto stejné jako odeslání úlohy vůči jinému poskytovateli targets softwaru a hardwaru v Azure Quantum – definujte svůj program, nastavte targeta odešlete úlohu k výpočtu.
Při odesílání žádosti o odhad prostředků pro váš program můžete zadat některé target parametry.
errorBudget
- celkový povolený rozpočet chybqecScheme
– schéma oprav kvantových chyb (QEC)qubitParams
– parametry fyzického qubituconstraints
– omezení na úrovni komponent
Další informace o vstupních parametrech najdete v tématu Cílové parametry estimátoru prostředků.
V tomto příkladu implementujete obecnou funkci, která jako vstup provider
přijímá objekt, který se připojuje k pracovnímu prostoru Azure Quantum, a bitový kód QIR kvantového programu. V důsledku toho vrátí úlohu Azure Quantum.
Parametry estimátoru target prostředků lze funkci předat prostřednictvím argumentů klíčových slov.
def resource_estimation_job_from_qir(provider: AzureQuantumProvider, bitcode: bytes, **kwargs):
"""A generic function to create a resource estimation job from QIR bitcode"""
# Find the Resource Estimator target from the provider
backend = provider.get_backend('microsoft.estimator')
# You can provide a name for the job via keyword arguments; if not,
# use QIR job as a default name
name = kwargs.pop("name", "QIR job")
# Wxtract some job specific arguments from the backend's configuration
config = backend.configuration()
blob_name = config.azure["blob_name"]
content_type = config.azure["content_type"]
provider_id = config.azure["provider_id"]
output_data_format = config.azure["output_data_format"]
# Finally, create the Azure Quantum jon object and return it
return AzureQuantumJob(
backend=backend,
target=backend.name(),
name=name,
input_data=bitcode,
blob_name=blob_name,
content_type=content_type,
provider_id=provider_id,
input_data_format="qir.v1",
output_data_format=output_data_format,
input_params = kwargs,
metadata={}
)
Spuštění ukázkového kvantového programu
Dále pomocí generátoru PyQIR vytvořte nějaký bitový kód QIR. Tento příklad sestaví řízenou bránu S pomocí tří bran T a dvou bran CNOT.
module = SimpleModule("Controlled S", num_qubits=2, num_results=0)
qis = BasicQisBuilder(module.builder)
[a, b] = module.qubits[0:2]
qis.t(a)
qis.t(b)
qis.cx(a, b)
qis.t_adj(b)
qis.cx(a, b)
K vygenerování úlohy odhadu prostředků můžete použít funkci, kterou jste definovali výše, společně s bitcode()
funkcí z PyQIR. Můžete také předat argumenty specifické pro Estimator prostředků. Tento příklad používá errorBudget
k nastavení chybovosti na 5 %. Další informace o parametrech najdete v target tématu Cílové parametry Nástroje pro posouzení prostředků.
job = resource_estimation_job_from_qir(provider, module.bitcode(), errorBudget=0.05)
result = job.result()
result
Tato funkce vytvoří tabulku, která zobrazuje celkový počet fyzických prostředků. Podrobnosti o nákladech můžete dále zkontrolovat tak, že sbalíte skupiny, které obsahují další informace. Pokud například sbalíte skupinu parametrů logického qubitu , snadněji uvidíte, že vzdálenost kódu opravy chyb je 15.
Logický parametr qubitu | Hodnota |
---|---|
Schéma QEC | surface_code |
Vzdálenost kódu | 5 |
Fyzické qubity | 50 |
Čas logického cyklu | 2us |
Míra chyb logického qubitu | 3.00E-5 |
Překračování předfaktorem | 0.03 |
Prahová hodnota opravy chyb | 0,01 |
Vzorec času logického cyklu | (4 * twoQubitGateTime + 2 * oneQubitMeasurementTime ) * codeDistance |
Vzorec fyzických qubitů | 2 * codeDistance * codeDistance |
Ve skupině Parametry fyzického qubitu můžete vidět vlastnosti fyzického qubitu, které byly pro tento odhad předpokládány. Například doba potřebná k provedení měření jednoho qubitu a brány s jedním qubitem se předpokládá jako 100 ns a 50 ns.
Fyzický parametr qubitu | Hodnota |
---|---|
Název qubitu | qubit_gate_ns_e3 |
Sada instrukcí | GateBased |
Čas měření s jedním qubitem | 100 ns |
T gate time | 50 ns |
Míra chyb brány T | 0,001 |
Míra chyb měření v jednom qubitu | 0,001 |
Hradlový čas s jedním qubitem | 50 ns |
Míra chyb v jednom qubitu | 0,001 |
Čas dvou qubitů | 50 ns |
Chybovost dvou qubitů | 0,001 |
Další informace najdete v úplném seznamu výstupních dat nástroje Pro posouzení prostředků.
Související obsah
Pokračujte ve zkoumání dalších kvantových algoritmů a technik:
- Kurz Implementace Groverova vyhledávacího algoritmu ukazuje, jak napsat program v jazyce Q#, který pomocí Groverova vyhledávacího algoritmu vyřeší problém barvení grafu.
- Kurz Prozkoumání kvantového propletení pomocí jazyka Q# ukazuje, jak pracovat s qubity s Q# za účelem změny jejich stavu, a ukazuje účinky superpozice a propletení.
- Kvantové katy jsou Jupyter Notebook kurzy a programovací cvičení založená na Jupyter Notebook vlastním tempem a programovací cvičení zaměřená na výuku prvků kvantového computingu a programování v Q#.
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