Nishimoriho fázový přechod
Odhadovaná spotřeba: 3 minuty na procesoru Heron r2 (POZNÁMKA: Jedná se pouze o odhad. Skutečná doba běhu se může lišit.)
Pozadí
Tento tutoriál ukazuje, jak realizovat Nishimoriho fázový přechod na kvantovém procesoru IBM®. Tento experiment byl původně popsán v článku Realizing the Nishimori transition across the error threshold for constant-depth quantum circuits.
Nishimoriho fázový přechod označuje přechod mezi krátkodosahovými a dlouhodosahovými uspořádanými fázemi v náhodně svázaném Isingově modelu. Na kvantovém počítači se fáze s dlouhodobým uspořádáním projevuje jako stav, ve kterém jsou qubity provázány přes celé zařízení. Tento vysoce provázaný stav se připravuje pomocí protokolu generování provázání měřením (GEM). Díky využití měření uprostřed obvodu je protokol GEM schopen provázat qubity přes celé zařízení pomocí obvodů pouze konstantní hloubky. Tento tutoriál využívá implementaci protokolu GEM ze softwarového balíčku GEM Suite.
Požadavky
Před zahájením tohoto tutoriálu se ujisti, že máš nainstalováno následující:
- Qiskit SDK v1.0 nebo novější, s podporou vizualizace
- Qiskit Runtime v0.22 nebo novější (
pip install qiskit-ibm-runtime) - GEM Suite (
pip install gem-suite)
Nastavení
# Added by doQumentation — required packages for this notebook
!pip install -q gem-suite matplotlib qiskit qiskit-ibm-runtime
import matplotlib.pyplot as plt
from collections import defaultdict
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit.transpiler import generate_preset_pass_manager
from gem_suite import PlaquetteLattice
from gem_suite.experiments import GemExperiment
Krok 1: Přeložení klasických vstupů na kvantový problém
Protokol GEM funguje na kvantovém procesoru, jehož konektivita qubitů je popsána mřížkou. Dnešní kvantové procesory IBM používají mřížku heavy hex. Qubity procesoru jsou seskupeny do plaket podle toho, které základní buňce mřížky patří. Protože qubit může patřit do více než jedné základní buňky, plakety nejsou vzájemně disjunktní. Na mřížce heavy hex má plaket 12 qubitů. Samotné plakety také tvoří mřížku, přičemž dvě plakety jsou propojeny, pokud sdílejí některé qubity. Na mřížce heavy hex sousední plakety sdílejí 3 qubity.
V softwarovém balíčku GEM Suite je základní třídou pro implementaci protokolu GEM třída PlaquetteLattice, která reprezentuje mřížku plaket (jež se liší od samotné mřížky heavy hex). Objekt PlaquetteLattice lze inicializovat z mapy párování qubitů. Aktuálně jsou podporovány pouze mapy párování heavy hex.
Následující buňka kódu inicializuje plaketovou mřížku z mapy párování kvantového procesoru IBM. Plaketová mřížka ne vždy pokrývá celý hardware. Například procesor ibm_torino má celkem 133 qubitů, ale největší plaketová mřížka, která se na zařízení vejde, využívá pouze 125 z nich a obsahuje celkem 18 plaket. Podobné chování lze pozorovat i u zařízení IBM Quantum® s jiným počtem qubitů.
# QiskitRuntimeService.save_account(channel="ibm_quantum", token="<YOUR_API_KEYN>", overwrite=True, set_as_default=True)
service = QiskitRuntimeService()
backend = service.least_busy(
operational=True, simulator=False, min_num_qubits=127
)
plaquette_lattice = PlaquetteLattice.from_coupling_map(backend.coupling_map)
print(f"Number of qubits in backend: {backend.num_qubits}")
print(
f"Number of qubits in plaquette lattice: {len(list(plaquette_lattice.qubits()))}"
)
print(f"Number of plaquettes: {len(list(plaquette_lattice.plaquettes()))}")
Number of qubits in backend: 133
Number of qubits in plaquette lattice: 125
Number of plaquettes: 18
Plaketovou mřížku lze vizualizovat vygenerováním diagramu jejího grafového zobrazení. V diagramu jsou plakety reprezentovány popsanými šestiúhelníky a dvě plakety jsou propojeny hranou, pokud sdílejí qubity.
plaquette_lattice.draw_plaquettes()
Informace o jednotlivých plaketech, například o qubitech, které obsahují, lze získat pomocí metody plaquettes.
# Get a list of the plaquettes
plaquettes = list(plaquette_lattice.plaquettes())
# Display information about plaquette 0
plaquettes[0]
PyPlaquette(index=0, qubits=[0, 1, 2, 3, 4, 15, 16, 19, 20, 21, 22, 23], neighbors=[3, 1])
Také lze vytvořit diagram základních qubitů tvořících plaketovou mřížku.
plaquette_lattice.draw_qubits()

Kromě popisků qubitů a hran označujících, které qubity jsou propojeny, diagram obsahuje tři další informace relevantní pro protokol GEM:
- Každý qubit je buď stínovaný (šedý), nebo nestínovaný. Stínované qubity jsou „site" qubity reprezentující místa Isingova modelu a nestínované qubity jsou „bond" qubity sloužící k zprostředkování interakcí mezi site qubity.
- Každý site qubit je označen buď (A), nebo (B), přičemž to označuje jednu ze dvou rolí, které může site qubit v protokolu GEM hrát (role jsou vysvětleny dále).
- Každá hrana je obarvena jednou ze šesti barev, čímž jsou hrany rozděleny do šesti skupin. Toto rozdělení určuje, jak lze paralelizovat dvoiqubitové brány, a také různé plánovací vzory, které pravděpodobně způsobí různé množství chyb na zašuměném kvantovém procesoru. Protože hrany ve skupině jsou disjunktní, lze vrstvu dvoiqubitových bran aplikovat na tyto hrany současně. Ve skutečnosti je možné rozdělit šest barev do tří skupin po dvou barvách tak, aby sjednocení každé skupiny dvou barev bylo stále disjunktní. Proto jsou ke aktivaci každé hrany potřeba pouze tři vrstvy dvoiqubitových bran. Existuje 12 způsobů, jak takto rozdělit šest barev, a každé takové rozdělení poskytuje jiný 3-vrstvý plán bran.
Nyní, když jsi vytvořil plaketovou mřížku, dalším krokem je inicializace objektu GemExperiment předáním plaketové mřížky i backendu, na kterém chceš experiment spustit. Třída GemExperiment spravuje skutečnou implementaci protokolu GEM, včetně generování obvodů, odesílání úloh a analýzy dat. Následující buňka kódu inicializuje třídu experimentu a zároveň omezuje plaketovou mřížku pouze na dvě plakety (21 qubitů), čímž se zmenší rozsah experimentu, aby šum v hardwaru nezahltil signál.
gem_exp = GemExperiment(plaquette_lattice.filter([9, 12]), backend=backend)
# visualize the plaquette lattice after filtering
plaquette_lattice.filter([9, 12]).draw_qubits()

Obvod protokolu GEM je sestaven pomocí následujících kroků:
- Připrav stav všech aplikováním Hadamardovy brány na každý qubit.
- Aplikuj bránu mezi každým párem propojených qubitů. Toho lze dosáhnout pomocí 3 vrstev bran. Každá brána působí na site qubit a bond qubit. Pokud je site qubit označen (B), pak je úhel pevně nastaven na . Pokud je site qubit označen (A), pak je úhel volný a generuje různé obvody. Ve výchozím nastavení je rozsah úhlů nastaven na 21 rovnoměrně rozmístěných bodů mezi a včetně.
- Změř každý bond qubit v Pauliho bázi . Protože qubity jsou měřeny v Pauliho bázi , toho lze dosáhnout aplikováním Hadamardovy brány před měřením qubitu.
Všimni si, že článek citovaný v úvodu tohoto tutoriálu používá jinou konvenci pro úhel , která se od konvence použité v tomto tutoriálu liší faktorem 2.
V kroku 3 jsou měřeny pouze bond qubity. Abychom pochopili, v jakém stavu zůstávají site qubity, je užitečné uvažovat případ, kdy je úhel aplikovaný na site qubity (A) v kroku 2 roven . V tomto případě jsou site qubity ponechány ve vysoce provázaném stavu podobném stavu GHZ,