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

Vytvoření nového poznámkového bloku v pracovním prostoru

  1. Přihlaste se k Azure Portal a vyberte svůj pracovní prostor Azure Quantum.
  2. V části Operace vyberte Poznámkové bloky.
  3. Klikněte na Moje poznámkové bloky a klikněte na Přidat nový.
  4. V části Typ jádra vyberte IPython.
  5. 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.quantumsouborů , qiskita pyqir. Qiskit nebudete používat k přímému sestavování kvantových obvodů, ale použijete , AzureQuantumJobkterý 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 chyb
  • qecScheme – schéma oprav kvantových chyb (QEC)
  • qubitParams – parametry fyzického qubitu
  • constraints – 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ů.

Pokračujte ve zkoumání dalších kvantových algoritmů a technik: