Przejdź do głównej treści
Ten projekt jest w wersji beta. Znalazłeś błąd? Otwórz zgłoszenie na GitHub. Masz pytanie lub pomysł? Zapytaj w Discussions — chętnie poznamy Twoją opinię!
Jak oceniasz jakość tłumaczenia tej strony?

Qiskit Paulice

qiskit-paulice to pakiet do osadzania wydajnych sprzętowo kontroli Pauliego w dowolnych obwodach Clifforda na dowolnych topologiach połączeń kubitów z użyciem czasoprzestrzennych kodów stabilizatorowych. Kontrole te można wykorzystać do wykrywania błędów logicznych podczas wykonywania obwodu. Postselekcja tylko próbek bez wykrytych błędów może poprawić wierność stanów próbkowanych za pomocą procesora kwantowego, kosztem kilku kubitów pomocniczych i zwiększonego narzutu próbkowania. Metoda ta szczególnie nadaje się do sprzętu najbliższej przyszłości, ponieważ ma znacznie mniejszy narzut kubitów i bramek niż odporne na błędy obliczenia kwantowe, a jednocześnie lepszy narzut próbkowania niż metody redukcji błędów, takie jak ZNE czy PEC [1].

Choć czasoprzestrzenne kontrole Pauliego można stosować do samodzielnych procedur wykrywania błędów, są one istotne również w kontekście redukcji błędów i korekcji błędów. Wykrywanie błędów może uzupełniać techniki redukcji błędów, takie jak probabilistyczne znoszenie błędów (PEC), przechwytując część szumu wpływającego na bramki i pomiary, co zmniejsza wpływ odwracanego kanału szumu, a tym samym zmniejsza narzut próbkowania. Można je też traktować jako wczesny krok w stronę praktycznej odporności na błędy, ponieważ implementacja kodów stabilizatorowych chroniących kubity danych przed błędami logicznymi jest podstawową ideą tradycyjnej korekcji błędów. Ponieważ metoda ta zapewnia dostęp do stanu kwantowego w pojedynczym wykonaniu, można jej używać zarówno w przepływach opartych na próbkowaniu, jak i na wartościach oczekiwanych.

Pierwsze kroki​

Prosty przewodnik, który pomoże Ci szybko zacząć pracę z tym pakietem, jest dostępny w przewodniku szybkiego startu.

Przykłady zastosowań​

Technikę tę wykorzystano do poprawy wierności próbek z obwodów zdominowanych przez bramki Clifforda, używając 97 kubitów fizycznych do zakodowania 2415 logicznych bramek splątujących na 70 kubitach logicznych [2].

Omówienie techniczne​

Znajdowanie dobrych zestawów czasoprzestrzennych kontroli Pauliego​

Quantum circuit cartoon

Zestaw czasoprzestrzennych kontroli Pauliego jest „dobry”, jeśli każda kontrola jest poprawna, ma niską wagę i jest skuteczna.

Kontrola składa się z pewnej liczby kontrolowanych rotacji Pauliego, PP, umieszczonych na niektórych liniach obwodu, ww: {(P1,w1),...,(Pk,wk)}\{(P_1,w_1), ..., (P_k,w_k)\}. Dla danej kontroli elementy sterujące leżą na pojedynczym kubicie pomocniczym, a rotacje zachodzą na liniach pojedynczego kubitu docelowego. Dla obwodów Clifforda kontrola jest poprawna, jeśli jej iloczyn po propagacji wstecznej jest stabilizatorem stanu przygotowanego przez idealny obwód: ∏iB(Pi,wi)∈S\prod_{i}B(P_i,w_i) \in S, gdzie B(P,w)B(P,w) jest propagatorem wstecznym PP z ww do początku obwodu, a SS jest zbiorem wszystkich stabilizatorów obwodu.

Kontrola ma niską wagę, jeśli do jej implementacji potrzeba niewielu bramek splątujących. Algorytm wyboru kontroli będzie preferować kontrole o niskiej wadze, które zapewniają najskuteczniejsze wykrywanie błędów.

Kontrola jest skuteczna, jeśli wychwytuje znacznie więcej błędów, niż wprowadza. Kontrola Pauliego składa się z pewnej liczby bramek splątujących, a zatem wprowadza do obliczeń dodatkowy szum bramek. Ważne jest, aby każda dodatkowa kontrola zwiększała zdolność wykrywania błędów. Skuteczność zestawu kontroli można przybliżyć, składając błędy Pauliego wykrywane przez kontrole w kanał szumu poddany postselekcji i obliczając jego wpływ. Minimalizacja narzutu próbkowania potrzebnego do implementacji odwrotnego kanału szumu, którego nie wykryto, jest solidną heurystyką wyboru dobrych kontroli, ponieważ wskazuje, ile błędów kontrole nie potrafią wykryć. Wolniejszym, ale bardziej realistycznym podejściem jest przeprowadzenie próbkowania Monte Carlo z zaszumionego stanu i empiryczne obliczenie logicznej stopy błędów rozkładu poddanego postselekcji. Oba te podejścia są dostępne jako wbudowane funkcje kosztu w funkcji qiskit_paulice.add_pauli_checks.

Postselekcja próbek na podstawie danych syndromu​

W tym pakiecie kontrola jest implementowana za pomocą bramek splątujących między jednym kubitem pomocniczym a jednym kubitem docelowym. Każdy kubit pomocniczy zaczyna w stanie ∣0⟩|0\rangle, więc ZancZ_\text{anc} stabilizuje jego stan wejściowy. Propagacja w przód ZancZ_\text{anc} od początku kubitu pomocniczego przez cały obwód z kontrolami daje operator Pauliego na wyjściu, który może mieć większą wagę i rozciągać się na obwód ładunku. Indeksy kubitów, na których ten operator wyjściowy ma składowe nietożsamościowe, nazywane są nośnikiem kontroli, a kontrola jest zaliczona, jeśli bity, bb, w nośniku kontroli mają parzystą parzystość: ⨁i=1bi=0\bigoplus_{i=1} b_i = 0. Próbka jest zachowywana, jeśli każda kontrola daje 00 dla swojej kontroli parzystości.

Funkcje oprogramowania​

  • Automatyczne tworzenie modelu szumu na podstawie danych testowych backendu

  • Wyszukiwanie kontroli przyspieszone w Rust

  • 3 wbudowane algorytmy wyszukiwania kontroli

  • Obsługa domieszkowania bramkami RZ

  • Obsługa łączenia wykrywania błędów z redukcją błędów

Znane problemy​

  • Szum bezczynności nie jest udostępniany przez NoiseModel.get_backend i jest ignorowany podczas wyboru kontroli

  • Chociaż wiele stochastycznych kroków algorytmu można kontrolować za pomocą ziarna losowości, niektóre funkcje mają losowość, której ziarno nie kontroluje. Konkretnie, następujące wartości argumentów add_pauli_checks spowodują niedeterministyczny wybór kontroli: cost="LER", method="genetic" oraz method="windowed_genetic". Aby uzyskać zachowanie deterministyczne, użyj add_pauli_checks(..., cost="gamma", method="windowed"), co są wartościami domyślnymi.

Plany na przyszłość​

  • Obsługa szumu bezczynności podczas wyboru kontroli

  • Kontrolowalna losowość dla funkcji kosztu logicznej stopy błędów i genetycznych algorytmów wyszukiwania

Współtworzenie​

Kod źródłowy jest dostępny na GitHubie.

Przewodnik dla deweloperów znajduje się w pliku CONTRIBUTING.md w katalogu głównym repozytorium tego projektu. Uczestnicząc, zobowiązujesz się przestrzegać kodeksu postępowania Qiskit.

Cytowanie tego pakietu​

Jeśli używasz tego pakietu w swoich badaniach, skorzystaj z pliku CITATION.bib w repozytorium tego projektu, aby zacytować odpowiednie źródła.

Licencja​

Apache License 2.0

Polityka wycofywania​

Stosujemy wersjonowanie semantyczne. Od czasu do czasu możemy wprowadzać zmiany łamiące zgodność, aby poprawić komfort użytkowania. Gdy to możliwe, będziemy zachowywać stare interfejsy i oznaczać je jako wycofane, o ile mogą współistnieć z nowymi. Każde istotne usprawnienie, zmiana łamiąca zgodność lub wycofanie zostanie opisane w informacjach o wydaniu.

Bibliografia​

  1. Simon Martiel, Ali Javadi-Abhari, Low-overhead error detection with spacetime codes, arXiv:2504.15725 [quant-ph].

  2. Simon Martiel, et al., Sampling hard circuits with verifiably high fidelity, arXiv:2607.25941 [quant-ph].