Orbit - funkcja Qiskit Function firmy Quantum Elements
Zobacz dokumentację API
Qiskit Functions to eksperymentalna funkcja dostępna wyłącznie dla użytkowników planów IBM Quantum® Premium Plan, Flex Plan oraz On-Prem (za pośrednictwem IBM Quantum Platform API). Znajdują się w statusie wersji zapoznawczej (preview) i mogą ulec zmianie.
Przegląd
Sprzęt kwantowy wciąż się rozwija, ale szum i dekoherencja nadal ograniczają głębokość i niezawodność praktycznych obwodów kwantowych. Wśród dostępnych podejść trzy uzupełniające się techniki mogą znacząco złagodzić te ograniczenia: dynamiczne odsprzęganie (dynamical decoupling, DD), zoptymalizowana transpilacja oraz łagodzenie błędów pomiaru (measurement error mitigation, MEM). Zoptymalizowana transpilacja zmniejsza głębokość obwodu i lepiej dopasowuje obwody do łączności docelowego sprzętu, DD tłumi szum w okresach bezczynności za pomocą starannie zaprojektowanych sekwencji sterujących, a MEM zmniejsza wpływ błędów odczytu i może być stosowane podczas przetwarzania końcowego.
Wybór skutecznej strategii DD jest szczególnie nietrywialny, ponieważ dostępnych jest wiele rodzin sekwencji, a sekwencja, która dobrze sprawdza się dla jednego obwodu lub środowiska szumu, może nie sprawdzić się dla innego. Korzyści z transpilacji, DD i MEM zależą od problemu, sprzętu i obciążenia; stosowane osobno lub w połączeniu mogą poprawić wydajność, ale nie są uniwersalnie korzystne w każdej konfiguracji.
Orbit, funkcja Qiskit opracowana przez Quantum Elements, płynnie łączy wszystkie trzy komponenty w jednolity przepływ pracy, ułatwiając ich stosowanie w celu poprawy wykonania obwodów na sprzęcie IBM Quantum. W swojej podstawowej formie Orbit automatycznie stosuje aktywne strategie tłumienia błędów, które chronią stany kwantowe podczas okresów bezczynności, zachowując przy tym oryginalną logikę obwodu. Co istotne, robi to bez wprowadzania dodatkowego czasu przetwarzania wstępnego, kwantowego czy klasycznego, unikając tym samym niepotrzebnych dodatkowych kosztów lub czasu oczekiwania w ramach przepływu pracy.
Zamiast działać jak czarna skrzynka, Orbit pozwala użytkownikom oceniać i dostrajać jego komponenty optymalizacyjne dla konkretnego eksperymentu. Użytkownicy mogą niezależnie włączać lub wyłączać zoptymalizowaną transpilację, DD i MEM; porównywać automatyczny wybór DD z sekwencjami określonymi przez użytkownika; oraz wykonywać wiele konfiguracji w ramach tego samego przepływu pracy. Porównując każdą konfigurację z surowym obwodem, użytkownicy mogą określić, które techniki przynoszą mierzalne korzyści dla ich obwodu i backendu, zidentyfikować interakcje między różnymi metodami optymalizacji oraz wybrać konfigurację, która najlepiej wspiera ich cel eksperymentalny. Ten proces pomaga użytkownikom zrozumieć, skąd biorą się zyski wydajności, i podejmować bardziej świadome decyzje przy optymalizacji obwodów kwantowych dla danego obciążenia.
Opis
Orbit został zaprojektowany, aby usprawniać wykonanie obwodów kwantowych na backendach IBM Quantum. W trybie automatycznym użytkownicy mogą bezproblemowo stosować wysokorzędowe, odporne sekwencje DD bez konieczności ich ręcznego wyboru czy konfiguracji. Zaawansowani użytkownicy mogą zamiast tego eksperymentować z dostępnymi sekwencjami wyższego rzędu, aby zidentyfikować i zoptymalizować podejście zapewniające najlepszą wydajność dla konkretnego obwodu.
Orbit zapewnia również natychmiastowe MEM bez konieczności wykonywania dodatkowych zadań zwykle wymaganych do oddzielnych przepływów pracy kalibracji i łagodzenia błędów. Dla obciążeń, w których transpilacja nie powinna zmieniać struktury obwodu, takich jak obwody korekcji błędów kwantowych z pomiarami w trakcie obwodu (mid-circuit measurements) lub obwody dynamiczne, Orbit może stosować DD i MEM bez ingerencji w istniejącą strategię transpilacji użytkownika. Dla użytkowników, którzy nie mają jeszcze preferowanego podejścia, Orbit zawiera również wbudowany transpiler do optymalizacji obwodów pod docelowy sprzęt przed zastosowaniem technik tłumienia błędów i łagodzenia odczytu.
W przeciwieństwie do podejść opierających się na dodatkowym próbkowaniu obwodu, ekstrapolacji lub rozbudowanym przetwarzaniu klasycznym, Orbit koncentruje się na tłumieniu błędów podczas wykonania. Funkcja została zaprojektowana tak, aby wprowadzać niski narzut przy zachowaniu oryginalnej logiki obwodu. Użytkownicy mogą sprawdzić wynikowy obwód i bezpośrednio porównać wykonania zoptymalizowane przez Orbit ze standardowymi wykonaniami.
Praktyczny przepływ pracy Orbit wygląda następująco:
-
Zdefiniuj obwód kwantowy i wybierz Orbit poprzez Katalog funkcji Qiskit.
-
Uwzględnij obwód bez Orbit, używając trybu „Raw”, aby ustalić bazową wartość dla surowego obwodu.
-
Wybierz, które strategie optymalizacji zastosować, w tym automatyczne lub wybrane przez użytkownika sekwencje DD, MEM oraz zoptymalizowaną transpilację.
-
Włącz lub wyłącz poszczególne metody albo prześlij wiele konfiguracji, aby ocenić ich osobne i łączne skutki.
Orbit jest szczególnie przydatny dla obwodów zawierających okresy bezczynności lub luki w harmonogramie, w których qubity nie uczestniczą aktywnie w bramkach. Obsługuje obwody statyczne i dynamiczne, w tym przepływy pracy z pomiarami w trakcie obwodu oraz eksperymenty odpornego na błędy obliczania kwantowego. Typowe zastosowania obejmują korekcję błędów kwantowych, eksperymenty z kodem powierzchniowym na siatkach kwadratowych i heavy-hex, algorytmy wyroczniowe, takie jak Bernsteina-Vaziraniego, obwody transformaty Fouriera, algorytmy wariacyjne, symulację hamiltonianu, eksperymenty benchmarkingowe oraz optymalizację obwodów świadomą sprzętu.
Patrząc w przyszłość, w kierunku ery odporności na błędy, Orbit jest również kompatybilny z przepływami pracy odpornego na błędy obliczania kwantowego, ponieważ może być bezproblemowo łączony z korekcją błędów kwantowych. W dłuższej perspektywie Orbit wskazuje na dynamiczne odsprzęganie na poziomie logicznym [1] jako przyszłościową ścieżkę ochrony logicznych qubitów. W poniższym przykładzie dwa logiczne qubity zostały splątane, tworząc logiczny stan Bella pod detekcją błędów kwantowych. Sama detekcja błędów kwantowych doprowadziła do spadku wierności stanu Bella do około 44% w ciągu dziesiątek mikrosekund, podczas gdy detekcja błędów kwantowych połączona z ochroną w stylu Orbit utrzymała wierność logicznego stanu Bella blisko górnej granicy skali, osiągając około 95,3% w tym samym oknie czasowym.

Testy porównawcze
Poniższe wyniki podsumowują reprezentatywne uruchomienia Orbit na sprzęcie IBM Quantum. Podobnie jak w przypadku innych testów porównawczych sprzętu, wyniki zależą od wybranego urządzenia, stanu kalibracji, obwodu i ustawień wykonania.
| Przykład | Metryka | Kubity | QPU | Dodatkowe szczegóły | Poprawa dzięki Orbit |
|---|---|---|---|---|---|
| Bernstein–Vazirani | Wierność ukrytego ciągu bitów | 26 60 70 | Heron r3 | Surowe względem Full Orbit, Tylko transpilacja względem Full Orbit, Tylko Full Orbit | 75x 66x N/A |
| QFT (unitarny) | Wierność | 10 | Heron r2 Heron r3 | Orbit względem surowego: ~44% wobec ~35% ~67% wobec ~61% | 1.26x 1.09x |
| QFT (obwody dynamiczne) | Wierność | 10 20 | Heron r3 | Orbit względem surowego: ~55% wobec ~2% ~10% wobec ~0% | 27.51x N/A |
| Stan Bella na duży dystans (obwody dynamiczne) | Wierność | 30 60 | Heron r2 | N/A | 1.78x 1.11x |
| Kod powierzchniowy (siatka kwadratowa) | Prawdopodobieństwo błędu logicznego | 25 | Nighthawk r1 | 1 runda 5 rund 10 rund | 1.01x 1.15x 1.12x |
| Kod powierzchniowy (heavy-hex) | Prawdopodobieństwo błędu logicznego | 65 | Heron r3 | 1 runda 5 rund 10 rund | 4.11x 2.04x 1.39x |
| VQE | Błąd bezwzględny względem energii idealnej | 8 | Heron r3 | Orbit względem surowego: 56mHa wobec 1342 mHa | 24x |
| QAOA | Prawdopodobieństwo sukcesu | 5 | Heron r2 | N/A | 1.46x |
Kod [[4,2,2]] (tłumienie błędów na poziomie logicznym) | Logiczna wierność splątanego stanu Bella | 4 | Heron r2 | Średnia wierność w ciągu 55 μs | 1.63x |
Definicje metryk
-
Wierność ukrytego ciągu bitowego Bernsteina-Vaziraniego: Prawdopodobieństwo zmierzenia poprawnego ukrytego ciągu bitowego. Ta metryka wskazuje, jak wiarygodnie algorytm odzyskuje zamierzone rozwiązanie w miarę zwiększania rozmiaru obwodu. Tabela przedstawia trzy największe ukryte ciągi bitowe pomyślnie ocenione w trzech różnych konfiguracjach: (i) surowe obwody bez Orbit, które osiągnęły 26 qubitów; (ii) obwody z samą transpilacją, które osiągnęły 60 qubitów; oraz (iii) obwody wykorzystujące pełny przepływ pracy Orbit, które osiągnęły 70 qubitów. Dla surowych obwodów (i) współczynnik poprawy przedstawia zysk wydajności uzyskany dzięki DD i MEM w stosunku do niemodyfikowanych obwodów. Dla konfiguracji z samą transpilacją (ii) przedstawia on poprawę uzyskaną poprzez dodanie DD i MEM do optymalnie transpilowanych obwodów. Dla pełnej konfiguracji Orbit (iii) nie podano bazowego współczynnika poprawy, ponieważ niezerowe prawdopodobieństwo sukcesu uzyskano tylko wtedy, gdy włączone były wszystkie komponenty Orbit (transpilacja, DD i MEM). Ilustracyjny przykład przedstawiono poniżej.
-
Wierność kwantowej transformaty Fouriera: Zarówno dla unitarnej, jak i dynamicznej implementacji obwodu QFT [2] wierność mierzy zgodność między eksperymentalnie zaimplementowaną transformacją a idealnym procesem QFT dla 20 różnych stanów wejściowych. Obwody dynamiczne zawierają znaczny czas bezczynności ze względu na pomiary w trakcie obwodu i klasyczne sprzężenie zwrotne (feedforward), podczas którego dynamiczne odsprzęganie może tłumić dekoherencję. Podana poprawa porównuje wierność uzyskaną z Orbit z surową wiernością.
-
Przygotowanie stanu Bella na dużym dystansie: Tworzenie stanu Bella za pomocą obwodów dynamicznych i operacji feedforward między dwoma qubitami oddzielonymi nawet 60 pośrednimi qubitami, co pokazuje wydajne splątanie na duże odległości na lokalnie połączonym sprzęcie kwantowym [3]. Orbit identyfikuje najlepsze trasowanie qubitów, zachowuje qubity podczas pomiarów feedforward oraz stosuje MEM w celu złagodzenia błędów odczytu.
-
Prawdopodobieństwo błędu logicznego kodu powierzchniowego: Dla kodu powierzchniowego heavy-hex [4] i kodu powierzchniowego na siatce kwadratowej [5] przeprowadzono eksperymenty pamięci kwantowej, w których zakodowany stan logiczny był zachowywany przez powtarzane rundy korekcji błędów. Prawdopodobieństwo błędu logicznego mierzy prawdopodobieństwo, że skumulowane błędy spowodują niepoprawne odzyskanie zakodowanej informacji (niższy błąd jest lepszy). Podana poprawa porównuje prawdopodobieństwo błędu logicznego z surowych obwodów z tym uzyskanym za pomocą Orbit.
-
Błąd bezwzględny VQE: Wykorzystanie VQE ze zoptymalizowanym ansatzem unitary coupled-cluster do oszacowania energii stanu podstawowego LiH [6]. Zmierzoną energię porównuje się z odpowiadającą jej idealną energią uzyskaną z obwodu bez szumu. Metryką jest bezwzględna różnica między zmierzoną a idealną energią (niższe wartości są lepsze). Podana poprawa to:
Wartości większe niż jeden wskazują, że Orbit zmniejsza błąd energii w porównaniu z wykonaniem bez dynamicznego odsprzęgania.
-
Prawdopodobieństwo sukcesu QAOA: Prawdopodobieństwo zmierzenia ciągu bitowego odpowiadającego optymalnemu rozwiązaniu problemu optymalizacji zdefiniowanego na grafie motyla (butterfly graph). Podana poprawa porównuje prawdopodobieństwo sukcesu uzyskane za pomocą Orbit z tym uzyskanym z surowych obwodów.
-
Wierność logiczna: W eksperymencie logicznego dynamicznego odsprzęgania [[4,2,2]] [1] dwa logiczne qubity zostały zakodowane w czterech fizycznych qubitach i przygotowane jako splątany logiczny stan Bella. Wierność logiczna mierzy zgodność między odzyskanym zakodowanym stanem a docelowym logicznym stanem Bella. Podana poprawa porównuje średnią wierność logiczną uzyskaną z Orbit i detekcją błędów (zdolność kodu) z tą uzyskaną przy użyciu samego kodu.
Rozpoczęcie pracy
Uwierzytelnij się za pomocą klucza API IBM Quantum Platform i wybierz funkcję Orbit w następujący sposób. Ten fragment zakłada, że już zapisałeś swoje konto w środowisku lokalnym.
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib qiskit qiskit-ibm-catalog
from qiskit_ibm_catalog import QiskitFunctionsCatalog
from qiskit import QuantumCircuit
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# Verify that you have access to the function.
catalog.list()
[QiskitFunction(quantum-elements/orbit)]
# Load the function.
orbit = catalog.load("quantum-elements/orbit")
Przykład
Poniższy przykład tworzy obwód Bernsteina-Vaziraniego i przesyła go do Orbit na dwa sposoby w jednym zadaniu: surowe wykonanie i domyślne ustawienia Orbit.
Użyj tego wzorca, gdy chcesz przeprowadzić bezpośrednie porównanie surowego wykonania z Orbit.
Zbuduj obwód Bernsteina-Vaziraniego
Wybierz ukryty ciąg bitowy i skonstruuj obwód logiczny. Dodatkowy qubit jest celem wyroczni, natomiast qubity wejściowe są mierzone.
def create_bv_circuit(hidden_bitstring: str) -> QuantumCircuit:
width = len(hidden_bitstring)
circuit = QuantumCircuit(width + 1, width)
circuit.x(width)
circuit.h(range(width + 1))
for input_qubit, bit in enumerate(reversed(hidden_bitstring)):
if bit == "1":
circuit.cx(input_qubit, width)
circuit.barrier()
circuit.h(range(width + 1))
circuit.measure(range(width), range(width))
return circuit
circuit_width = 50
hidden_bitstring = "1" * circuit_width
shots = 4096
bv_circuit = create_bv_circuit(hidden_bitstring)
bv_circuit.count_ops()
OrderedDict([('h', 102),
('cx', 50),
('measure', 50),
('x', 1),
('barrier', 1)])
Przygotuj obciążenie Orbit
Utwórz jeden PUB Sampler, a następnie zduplikuj go dla dwóch trybów porównania. Orbit otrzymuje obwód logiczny i mapuje go na wybrany backend podczas wykonania.
base_pub = (bv_circuit, None, shots)
comparison_labels = ["raw", "orbit"]
pubs = [base_pub] * len(comparison_labels)
Uruchom tryb surowy i domyślne ustawienia Orbit
pub_options przypisuje pierwszy PUB do trybu surowego, który pomija optymalizację Orbit, DD i MEM, oraz przypisuje drugi PUB do domyślnych ustawień Orbit, które obejmują zoptymalizowaną transpilację, automatyczne wstawianie dynamicznego odsprzęgania (DD) oraz łagodzenie błędów pomiaru (MEM).
backend_name = "ibm_kingston"
job = orbit.run(
primitive="sampler",
pubs=pubs,
backend_name=backend_name,
options={
"pub_options": [
{"mode": "raw"},
{"mode": "orbit"},
],
"save_backend_info": True,
},
)
# Check the job ID and status
print(job.job_id)
print(job.status())
c0f1b99c-8dfa-4ebb-9560-d9a37c990acc
QUEUED
Pobierz wynik i porównaj obwody surowy i zoptymalizowany przez Orbit za pomocą liczników (counts). Dla wyników Sampler get_counts() na zwróconym rejestrze klasycznym dostarcza histogram wyjściowy. Gdy MEM zakończy się powodzeniem dla PUB Orbit, ten histogram jest już skorygowany przez MEM; niekorygowane liczniki pozostają dostępne w metadanych Orbit pod measurementErrorMitigation["rawCounts"].
def extract_counts(pub_result) -> dict[str, int]:
data = getattr(pub_result, "data", None)
if data is None:
raise TypeError("pub_result.data is missing")
for name in dir(data):
if name.startswith("_"):
continue
register = getattr(data, name)
get_counts = getattr(register, "get_counts", None)
if callable(get_counts):
counts = get_counts()
if counts:
return counts
raise TypeError(
"No classical register with get_counts() found in pub_result.data"
)
result = job.result()
if len(result) != len(comparison_labels):
raise RuntimeError(
f"Expected {len(comparison_labels)} PUB results, received {len(result)}."
)
comparison_counts = {
label: extract_counts(pub_result)
for label, pub_result in zip(comparison_labels, result, strict=True)
}
correct_counts = {
label: counts.get(hidden_bitstring, 0)
for label, counts in comparison_counts.items()
}
print(
{
"hidden_bitstring": hidden_bitstring,
"correct_counts": correct_counts,
"shots": shots,
}
)
{'hidden_bitstring': '11111111111111111111111111111111111111111111111111', 'correct_counts': {'raw': 0, 'orbit': 184}, 'shots': 4096}
Dokonaj wizualnego porównania obwodów surowego i zoptymalizowanego przez Orbit.
import matplotlib.pyplot as plt
labels = list(correct_counts)
values = list(correct_counts.values())
fig, ax = plt.subplots(figsize=(7, 4))
bars = ax.bar(labels, values, width=0.55)
ax.bar_label(bars, labels=[f"{value:g}" for value in values], padding=3)
ax.set_xlabel("Circuit execution mode")
ax.set_ylabel("Correct hidden-bitstring count")
ax.set_title(f"{circuit_width}-qubit Bernstein-Vazirani on {backend_name}")
ax.set_ylim(0, max(1, 1.15 * max(values)))
ax.grid(axis="y", alpha=0.25)
fig.tight_layout()
plt.show()
Uzyskaj wsparcie
Skontaktuj się z pomocą techniczną Quantum Elements: info@quantumelements.ai
Koniecznie dołącz następujące informacje:
-
Identyfikator zadania funkcji Qiskit (
qiskit-ibm-catalog),job.job_id -
Nazwa backendu
-
Wartości
pub_optionsOrbit użyte dla trybu surowego i trybu Orbit -
Szczegółowy opis problemu
-
Wszelkie istotne komunikaty lub kody błędów
-
Kroki umożliwiające odtworzenie problemu
Kolejne kroki
-
Wypróbuj inny backend, inną liczbę qubitów lub inny ukryty ciąg bitowy.
-
Przeczytaj nasz samouczek dotyczący kwantowej transformaty Fouriera, aby dowiedzieć się, jak zdefiniować niestandardowe strategie DD obsługiwane przez Orbit, a także jak stosować DD do obwodów dynamicznych z pomiarami w trakcie obwodu i operacjami feedforward.
-
Odwiedź dokumentację API, aby uzyskać szczegółowy opis wszystkich opcji Orbit.
Bibliografia
-
Logical-level error suppression combined with Quantum Error Detection, Nature Communications (2026)
-
Quantum Fourier Transform Using Dynamic Circuits, Physical Review Letters (2024)
-
Efficient Long-Range Entanglement Using Dynamic Circuits, PRX Quantum (2024)
-
Surface code scaling experiments on IBM Heron with heavy-hex connectivity, arXiv:2510.18847
-
Surface code experiments on IBM Nighthawk with square-lattice connectivity, arXiv:2606.11496