Začínáme s QDK pro opravu chyb

QDK (Python) obsahuje Microsoft Quantum Development Kit nástroje pro vývoj a testování protokolů oprav kvantových chyb (QEC). Pomocí modulu qdk.ec můžete analyzovat kódy oprav chyb, vytvářet spustitelné protokoly, ověřovat deklarace protokolů a studovat poruchy obvodů. Slouží qdk.simulation ke spouštění logických programů prostřednictvím těchto protokolů.

Pochopte nástroje pro QDK opravu chyb

Pracovní QDK postup opravy chyb používá tyto balíčky a moduly:

Component Použijte ho k
qodec Definujte a uložte kódy, instrukční sady, miniaplikace, vrstvy a kompletní protokoly QEC.
qdk.ec Analyzujte kódy a miniaplikace, sestavte základní qodecs, odvozujte rovnice a auditujte deklarace protokolu.
qdk.simulation Spusťte Quantum Intermediate Representation programy (QIR) prostřednictvím qodec a použijte dekodér.
qdk.simulation.decoders Vyberte předdefinovaný dekodér syndromu, sledujte snímky nebo se připojte k volitelnému deq dekodéru.
qdk.qre Odhad nákladů na prostor, čas a chyby modelů QEC pro odhad prostředků pro toleranci chyb

qodec je formální popis spustitelného protokolu QEC. Spojuje logické instrukce s fyzickými okruhy prostřednictvím jedné nebo více vrstev. Balíček qodec definuje tento datový model a jeho YAML reprezentaci. Modul qdk.ec odvozuje fakta z modelu a kontroluje, jestli jeho deklarace odpovídají jeho obvodům.

Další informace najdete v qodecpřehledu.

Modul qdk.qre má jiný účel. Modeluje náklady schématu opravy chyb na prostředky. Nedefinuje, neaudituje ani nespouští qodec miniaplikace. Další informace o odhadu kvantových zdrojů v QDKnaleznete v tématu Co je Microsoft Quantum Resource Estimator?

Pochopte součásti protokolu qodec

Následující komponenty definují qodec protokol a podporují jeho spuštění.

Component Description
Code Statická sada stabilizátorů a logických operátorů, která definuje prostor kódu.
Sada instrukcí Logické nebo fyzické operace, které qodec vrstva podporuje.
Přístroj Okruh, který implementuje instrukci prostřednictvím operací v další nižší vrstvě.
Vrstva Mapování z jedné sady instrukcí na sadu instrukcí nižší úrovně
Encoding Propojení mezi logickými bloky a qubity okruhu na hranici gadgetu.
Zkontrolujte Paritní rovnice, která se musí rovnat nule, když deklarovaná relace platí.
Odečet Rovnice, která mapuje výsledky obvodu a značky rámce k logickému výsledku nebo příznaku
Flag Pojmenovaný odečet, který hlásí, jestli pokyn splnil podmínku přijetí.
Dekodér Součást, která používá data o syndromu k odvozování oprav a logických výsledků.

qodec může obsahovat několik vrstev. Horní vrstva může definovat logické operace nad kódovanými bloky. Gadgety v horní vrstvě mohou volat instrukce v další nižší vrstvě. Dolní vrstva obsahuje fyzické operace, které simulátor spouští.

Ukázkový pracovní tok protokolu

Typický pracovní postup má šest kroků. Následující kroky používají funkce a třídy z qdk.ec modulu.

  1. Definujte nějaký kód. Vytvořte qodec.Code se stabilizátory a logickými Pauli operátory.
  2. Analyzovat kód. Pomocí třídy CodeProfile můžete zkontrolovat logické operátory, vypočítat syndromy a vypočítat vzdálenost kódu.
  3. Vytvořte nebo načtěte qodec. Pomocí funkce build_qodec vytvořte základní protokol nebo načtěte existující qodec z YAML.
  4. Dokončete a ověřte protokol. Pomocí funkce filled lze odvodit podporované rovnice kontroly a odečtu. Pomocí funkce audit vyhledejte nekonzistentní nebo neúplné deklarace.
  5. Analyzujte chyby obvodu. Pomocí třídy GadgetProfile můžete zkontrolovat logické akce, efekty selhání a vzdálenost miniaplikace.
  6. Spusťte logické programy. Zkompilujte kód Q# nebo OpenQASM do QIR. Předejte QIR a qodec do qdk.simulation.run_qir a pak vyberte dekodér a model šumu.

Následující kód ukazuje hlavní objekty v tomto pracovním postupu:

import qodec
from qdk import ec
from qdk.simulation import run_qir

code = qodec.Code(
    "C4",
    stabilizers=["X_0 X_1 X_2 X_3", "Z_0 Z_1 Z_2 Z_3"],
    x=["X_0 X_1", "X_0 X_2"],
    z=["Z_0 Z_2", "Z_0 Z_1"],
)

code_profile = ec.CodeProfile(code)
print("Code distance:", code_profile.distance())

protocol = ec.build_qodec(code, strategy="bare-css/v1", strict=False)
print(ec.audit(protocol))

# Compile a logical program to QIR before you call run_qir.
# results = run_qir(qir, qodec=protocol, shots=100)

Strategie bare-css/v1 v tomto příkladu vytvoří jednoduchý základní protokol bez qubitů příznaků. Pomáhá kontrolovat pracovní postup, ale nezaručuje zařízení odolná proti chybám. Před výběrem implementace protokolu použijte analýzu vzdálenosti gadgetu.

Oddělte ověřování protokolu od analýzy chyb

Audity protokolů a analýza vzdálenosti vyhodnocují různé aspekty protokolu QEC.

  • Audity protokolu ověřují, jestli deklarovaný protokol odpovídá jeho obvodům a rovnicím, když nedojde k chybám.
  • Analýza vzdálenosti určuje minimální počet povolených chyb nebo poruch obvodu, které můžou způsobit nedetekované logické selhání.

Pomocí funkce audit můžete zkontrolovat bezšumovou konzistenci. Audit kontroluje algebru kódu, deklarace instrukcí, akce gadgetu, kontroly, výstupy, příznaky, vztahy rámce a odkazy mezi qodec objekty.

Audit, který nehlásí žádné problémy, nezaručuje odolnost proti chybám. Obvod může implementovat správnou logickou akci bez chyb a stále selhat po jedné fyzické chybě. Použijte metodu CodeProfile.distance k analýze kódu a metodu GadgetProfile.distance k analýze jednotlivých implementací obvodu.

Před použitím protokolu pro hlučné simulace spusťte audit protokolu a analyzujte vzdálenosti kódu a gadgetů.

Zvolte strategii výstavby

Funkce build_qodec podporuje dvě základní CSS strategie výstavby.

Strategy Description
flagged-css/v1 Použije konstrukci označenou příznakem CSS a vybere počet příznaků ze vzdálenosti kódu. Tato strategie je výchozí.
bare-css/v1 Nepoužívá žádné qubity příznaku a přeskakuje výpočet vzdálenosti, který vybere počet příznaků. Používejte ho pro kontrolu a raný vývoj.

Obě strategie se snaží vytvořit tyto logické pokyny:

  • prepare_z_all
  • prepare_x_all
  • syndrome
  • measure_z_all
  • measure_x_all
  • h_all
  • cx_all

Ne každý kód podporuje každou možnost. Při výchozím nastavení strict=Truebuild_qodec vyvolá chybu, když nejde sestavit a ověřit příkaz. S strict=Falsebuild_qodec zachová podporované pokyny a zaznamená všechny přeskočené instrukce v metadatech qodec.

Vyberte si další úkol

Úplný poznámkový blok, který následuje za celým pracovním postupem, najdete v tématu Vývoj a testování protokolu QEC v QDK úložišti.