Przejdź do głównej treści

Uruchamianie obwodów kwantowych

Obejrzyj film o obwodach kwantowych i prymitywach autorstwa Olivii Lanes lub otwórz wideo w osobnym oknie na YouTube.

Przegląd lekcji

Ta lekcja to ogólne omówienie podstaw uruchamiania obliczeń kwantowych w skali użytkowej — od sprzętu kwantowego po zasady, które warto uwzględnić podczas projektowania obwodu kwantowego. Po jej ukończeniu powinieneś/-aś wiedzieć:

  1. Czym naprawdę są komputery kwantowe IBM®. Znajomość podstawowych cech sprzętu jest niezbędna do optymalnego projektowania obwodów kwantowych, które będą na nim działać.

  2. Czym jest Qiskit, czym są prymitywy i jak można je wykorzystać do tworzenia i wykonywania obwodów kwantowych.

  3. Typowy przepływ pracy stosowany przy prowadzeniu eksperymentów na dużą skalę. Obejmuje on wybór najlepszych prymitywów dla Twojego przypadku użycia, odwzorowanie problemu na obwód kwantowy oraz stosowanie mitygacji i tłumienia błędów, które pozwalają wycisnąć maksimum mocy z tych maszyn.

Sprzęt – procesory kwantowe IBM

Aby podejmować optymalne decyzje przy projektowaniu wielkoformatowych obwodów kwantowych, musimy trochę wiedzieć o rzeczywistym sprzęcie, który będzie te obwody wykonywał. Omówmy więc pokrótce fizyczne kubity i procesory kwantowe IBM.

Procesory kwantowe IBM są zbudowane z użyciem nadprzewodzących kubitów transmonowych, czyli obwodów elektrycznych złożonych ze złącza Josephsona i kondensatora połączonych równolegle. Złącze Josephsona to nieliniowy induktor utworzony z dwóch nakładających się warstw nadprzewodzącego metalu z izolującą barierą między nimi. W bardzo niskich temperaturach elektrony w nadprzewodnikach łączą się w pary — tzw. pary Coopera. Pary Coopera mogą spontanicznie tunelować przez izolującą barierę z jednej strony złącza na drugą. To tunelowanie odpowiada za własności nieliniowe, które tworzą nasz qubit.

Na chipie są wytrawiane mikrofalowe linie transmisyjne, które dostarczają sygnały mikrofalowe do kubitów. Gdy do linii przykładamy precyzyjnie skalibrowane impulsy mikrofalowe — o określonej częstotliwości, amplitudzie, kształcie i czasie trwania — możemy sprawić, że kubity wykonają określone operacje. To stanowi podstawę naszych Gate'ów kwantowych. Chip jest tak wykonany, że sąsiednie kubity są połączone w określonej strukturze sieciowej zwanej siatką heavy-hex. Ta łączność — tzw. topologia — naszych procesorów jest ważnym czynnikiem przy projektowaniu obwodu, co omówimy w dalszej części lekcji.

Instrukcje dotyczące impulsu mikrofalowego wędrują z Twojego komputera, przez chmurę, do elektroniki sterującej działającej w temperaturze pokojowej, która interpretuje te instrukcje i fizycznie generuje impulsy. Po ich wygenerowaniu impulsy przesyłane są kablami do lodówki rozcieńczeniowej, a następnie trafiają do chipu kwantowego. Sygnał wpływa do rezonatorów, przez wirebond, a następnie płynie wzdłuż linii transmisyjnej do naszych kubitów.

IBM posiada dziesiątki komputerów kwantowych na całym świecie, a nasz park maszyn został niedawno zmodernizowany — wszystkie procesory mają teraz ponad 100 kubitów. Część z nich znajduje się w centrum danych IBM Quantum w stanie Nowy Jork i jest udostępniana przez chmurę dla wszystkich — część to dedykowane systemy lokalne wspierające partnerów sieci IBM Quantum® Network. Możesz zalogować się na quantum.cloud.ibm.com, aby sprawdzić, do których procesorów masz dostęp.

Każdy procesor udostępnia trzy wskaźniki wydajności, omawiane w poprzedniej lekcji. Dla przypomnienia: liczba kubitów, EPLG i CLOPS.

  • Liczba kubitów. Tu nie ma co wyjaśniać — to całkowita liczba kubitów dostępnych na danym procesorze kwantowym. W przypadku stosunkowo dużego problemu w skali użytkowej musisz się upewnić, że używasz procesora z wystarczającą liczbą kubitów, by można było się z nim zmierzyć. Sama liczba kubitów to jednak nie wszystko.

  • EPLG, czyli „errors per layered gate" (błędy na bramkę warstwową). Jest to miara jakości kubitów i Gate'ów kwantowych. Mierzy średni błąd wprowadzany przez każdą bramkę w obwodzie splątującym sąsiednie kubity w łańcuchu 100 kubitów. Im mniejsza ta wartość, tym lepiej.

  • CLOPS, czyli „circuit layer operations per second" (operacje warstwy obwodu na sekundę). Opisuje szybkość procesora. Mierzy, ile warstw pewnego wzorcowego obwodu zwanego obwodem objętości kwantowej może wykonać jednostka przetwarzania kwantowego (QPU) w jednostce czasu. Im wyższa liczba, tym szybciej możemy obliczać.

Znaczenie każdego z tych wskaźników różni się w zależności od konkretnego zastosowania. W kolejnych lekcjach przyjrzymy się rzeczywistym przykładom, które pokażą, jak każdy z tych czynników może wpłynąć na wynik obliczeń.

Oprogramowanie: Qiskit i Qiskit Runtime

Aby przekształcić swój problem kwantowy w instrukcje dla komputera kwantowego, skorzystasz z Qiskit — otwartoźródłowego zestawu narzędzi programistycznych przeznaczonego do pracy z komputerami kwantowymi, opracowanego przez IBM. Istnieje też ekosystem Qiskit — zbiór samouczków i funkcji programistycznych, które budują na podstawowych funkcjonalnościach Qiskit lub je rozszerzają — oraz Qiskit Runtime — usługa obliczeń kwantowych i model programowania umożliwiający projektowanie i optymalizację zadań kwantowych oraz ich efektywne wykonywanie przy użyciu prymitywów Qiskit Runtime.

Prymityw to mały element składowy, którego możesz użyć do zaprojektowania większego obwodu lub zadania. Dwa najważniejsze dla nas prymitywy to Sampler i Estimator, które omówimy dokładniej za chwilę.

Wraz z niedawnym wydaniem Qiskit v1.0 Qiskit stał się bardziej wydajny i stabilny niż kiedykolwiek wcześniej. Jeśli dopiero zaczynasz, trafiłeś/-aś w idealny moment! Jeśli już znasz Qiskit, musisz pobrać i zainstalować ponownie najnowszą wersję. Pełny przewodnik instalacji znajdziesz w przewodniku instalacji Qiskit.

Quantum Circuits

Teraz możemy omówić podstawę programów kwantowych: Quantum Circuits. Ta sekcja pełni jedynie rolę przypomnienia — jeśli nie znasz Quantum Circuits, zalecamy, abyś przed kontynuowaniem zapoznał/-a się z nimi dokładniej, odwiedzając lekcję Quantum Circuits w kursie „Basics of quantum information".

Quantum Circuit to sieć Gate'ów kwantowych i pomiarów połączonych przewodami reprezentującymi kubity, jak pokazano poniżej. Quantum Circuits można czytać jak nuty — od lewej do prawej, zaczynając od czasu 0 po lewej stronie. Wirtualne kubity — te, które nie zostały jeszcze przypisane do fizycznego kubitu na procesorze — są wypisane w kolejności rosnącej od góry do dołu.

Gate'y są reprezentowane przez różne symbole na przewodach zaangażowanych kubitów. Gate'y jednokulbitowe — jak bramka Hadamarda, pokazana poniżej (prostokąt z literą H) — działają tylko na qubit, na którego przewodzie są umieszczone. Gate'y wielokubitowe — jak bramka CNOT, również pokazana poniżej (znak plus w kółku z linią połączoną z q0) — działają na dwa lub więcej kubitów. W przedstawionej bramce CNOT stan q1 zmienia się zgodnie ze stanem q0. Po wykonaniu wszystkich Gate'ów możemy zmierzyć kubity, co jest oznaczone czarnymi bramkami z symbolem pomiaru. Wyniki pomiarów są zapisywane do rejestrów klasycznych — podwójnie obrysowanej szyny „meas" poniżej.

Example simple quantum circuit

Jedną z ważnych cech obwodu jest jego głębokość. Głębokość Quantum Circuit to minimalna liczba „warstw" Gate'ów kwantowych wykonywanych równolegle, potrzebna do ukończenia obwodu. Gate'y kwantowe mogą być wykonywane równolegle (jednocześnie), o ile nie mają żadnych wspólnych kubitów. Jeśli jednak dwa lub więcej Gate'ów działa na ten sam qubit, nie można ich wykonać równolegle — muszą zostać wykonane w dwóch osobnych warstwach, jedna po drugiej.

Istnieje jeszcze jeden, mniej oczywisty sposób wyznaczania głębokości obwodu — polegający na rodzaju gry. Zasady są proste: zaczynając od dowolnego przewodu kubitowego po lewej stronie, przemieszczasz się w prawo i liczysz napotkane Gate'y. Możesz przeskoczyć na sąsiedni przewód tylko wtedy, gdy jest on połączony z Twoim aktualnym przewodem przez wielokubitowy Gate. Celem jest zmaksymalizowanie liczby napotkanych Gate'ów na swojej drodze. Ta maksymalna liczba jest jednocześnie głębokością obwodu.

Example nine-layer circuit

Ponieważ wykonanie Gate'ów kwantowych wymaga czasu, głębokość obwodu w przybliżeniu odpowiada czasowi potrzebnemu komputerowi kwantowemu na jego wykonanie. Niektóre maszyny lepiej nadają się do obwodów o dużej głębokości niż inne, ze względu na czasy dekoherencji kubitów na procesorze. Musimy więc znać głębokość obwodu, żeby wiedzieć, czy można go uruchomić na danym urządzeniu.

Projektowanie obwodu kwantowego: Qiskit patterns

Jak zatem zabrać się za projektowanie i uruchamianie obwodu kwantowego? Najłatwiejszym sposobem na zrozumienie typowego przepływu pracy w obliczeniach kwantowych są Qiskit patterns. Qiskit patterns to koncepcyjne ramy pozwalające użytkownikom uruchamiać kwantowe zadania obliczeniowe przez realizację kolejnych kroków za pomocą modułowych narzędzi. Dzięki temu zadania obliczeniowe mogą być wykonywane przez wydajną, heterogeniczną infrastrukturę obliczeniową (CPU/GPU/QPU). Kroki te można realizować jako usługę, a do całości można włączyć zarządzanie zasobami — co umożliwia bezszwowe komponowanie nowych możliwości w miarę ich powstawania.

Poniżej przedstawiamy główne kroki, które doświadczeni użytkownicy Qiskit z pewnością rozpoznają.

  1. Map. W tym kroku formalizujemy, jak wziąć ogólny problem, który nas interesuje, i ustalić, jak odwzorować go na komputer kwantowy w postaci obwodu kwantowego.

  2. Optimize. W tym kroku używamy transpilera Qiskit, aby rozmieścić i przeprowadzić routing obwodu na rzeczywistym, fizycznym sprzęcie qubitowym. Obejmuje to tłumaczenie poszczególnych Gate'ów kwantowych na sekwencje operacji wykonywanych na sprzęcie, a także optymalizację układu Gate'ów.

  3. Execute. Prymitywy Qiskit Runtime zapewniają interfejs do sprzętu IBM Quantum, który umożliwia uruchamianie transpilowanych obwodów. Ten krok obejmuje również stosowanie technik tłumienia i mitygacji błędów, które w dużej mierze mogą być ukryte przed użytkownikiem.

  4. Post-process. W tym kroku dane z samego procesora kwantowego są przetwarzane, dostarczając użytkownikowi użytecznych wyników w odniesieniu do pierwotnego problemu. W zasadzie obejmuje to wszelką dalszą analizę zebranych danych.

Map

Krok Map stawia w zasadzie pytanie: „Jak przetłumaczyć swój problem na obwód kwantowy, który można w rozsądny sposób uruchomić na sprzęcie kwantowym?" Nie ma wątpliwości: odwzorowywanie to trudny problem i aktywny obszar badań. Nie istnieje niezawodna metoda gwarantująca sukces, ale istnieją zalecane wskazówki i przykłady problemów, które już wiemy, jak odwzorować.

Pierwsza wskazówka: pozwól komputerom klasycznym robić to, w czym są lepsze. Zadania łatwe dla komputerów klasycznych prawdopodobnie nie skorzystają z komputera kwantowego. Komputery kwantowe służą do problemów, które są klasycznie trudne. Oczywiście, jeśli dopiero zaczynasz korzystać z Qiskit lub komputera kwantowego, nie martw się o znalezienie problemu obliczeniowo złożonego. Podziel go na mniejsze, przystępne problemy, które możesz nauczyć się rozwiązywać, zanim przejdziesz od razu do projektu w skali użytkowej.

Następnie przetłumacz wyniki swojego problemu, które chcesz zmierzyć lub zrozumieć, na wartość oczekiwaną lub funkcję kosztu. Funkcja kosztu to funkcja specyficzna dla danego problemu, która definiuje cel problemu jako coś do zminimalizowania lub zmaksymalizowania. Można jej używać do sprawdzenia, jak dobrze dany stan próbny lub rozwiązanie radzi sobie w odniesieniu do tego celu. Tę koncepcję można stosować w różnych zastosowaniach z dziedziny chemii, uczenia maszynowego, finansów, optymalizacji i tak dalej — nie ma znaczenia, z jakiej dziedziny podchodzisz do problemu.

Pamiętaj też, że sprzęt, z którego będziesz korzystać, ma określoną topologię, o czym mówiliśmy w sekcji o sprzęcie. Niektóre kubity są połączone, a niektóre nie — musisz odwzorować swój problem na obwód respektujący topologię heavy-hex procesorów kwantowych IBM.

Na razie najważniejsze, co należy mieć na uwadze, to to, że ten etap wymaga praktyki. Musisz dobrze rozumieć zarówno swój problem, jak i możliwości sprzętu — a w przyszłych lekcjach przejdziemy przez konkretne przykłady i przypadki użycia, aby zobaczyć, jak zbalansować wszystkie te kwestie.

Optimize

Następnie będziemy musieli wybrać procesor kwantowy, który ma wystarczającą liczbę kubitów o odpowiednio wysokiej jakości, abyśmy mogli uruchomić nasz obwód kwantowy. Kieruj się przy tym trzema wskaźnikami omówionymi w sekcji o sprzęcie: liczbą kubitów, EPLG i CLOPS.

Następnie optymalizujemy nasz obwód pod wybrany sprzęt. Na początku musimy sprawnie wykonać layout i routing obwodu. Layout to odwzorowanie wirtualnych kubitów w obwodzie na fizyczne kubity procesora. Routing to modyfikowanie obwodu tak, aby łączność między wirtualnymi kubitami w obwodzie odpowiadała łączności fizycznych kubitów na procesorze. Na etapie layoutu i routingu warto pamiętać o kilku rzeczach.

  1. Nie wszystkie kubity są połączone. Niektóre są od siebie bardzo odległe na chipie i należy w miarę możliwości redukować lub eliminować interakcje dalekiego zasięgu. Można zastosować sekwencję bramek SWAP między sąsiednimi kubitami, aby przenosić informacje kwantowe, ale bramki SWAP są kosztowne i podatne na błędy, więc mogą istnieć lepsze sposoby. Staraj się unikać zbyt wielu kosztownych bramek SWAP.

  2. Layout i routing to procesy iteracyjne. Możesz je wykonać ręcznie, ale istnieje też narzędzie Qiskit o nazwie mapomatic, które może sugerować layout fizycznych kubitów na podstawie przybliżonych współczynników błędów. Transpiler (o którym za chwilę) może również zaproponować przemyślaną sugestię.

Następnie można składać sekwencje jednokulbitowych Gate'ów działających na ten sam qubit w pojedyncze Gate'y — a czasem można też pozbyć się zbędnych Gate'ów lub ich kombinacji. Na przykład niektóre kombinacje Gate'ów można uprościć do prostszych kombinacji — a w rzeczywistości czasem kombinacja Gate'ów może być równoważna operacji jednostkowej, więc można je po prostu wyeliminować. Można to zrobić automatycznie za pomocą transpilera Qiskit — ale można też zrobić to ręcznie, Gate po Gate, jeśli chcesz mieć większą kontrolę.

Po ulepszeniu layoutu obwodu, routingu i liczby Gate'ów — ręcznie lub za pomocą transpilera — zwykle warto zwizualizować obwód, aby upewnić się, że harmonogram wszystkich Gate'ów ma sens. W transpilerze istnieje argument, który można podać, żeby zwizualizować oś czasu obwodu i sprawdzić, czy wszystko jest ułożone tak, jak oczekujesz.

Qiskit Transpiler

Jak wspomniano wcześniej, Qiskit Transpiler może być używany do wspomagania wczesnych etapów przepływu pracy w ramach patterns. Przyjrzyjmy się teraz jego możliwościom bardziej szczegółowo. Może przepisać dany obwód wejściowy tak, aby pasował do topologii określonego urządzenia kwantowego, i zoptymalizować obwód pod kątem wykonania i odporności na szumy. Przepisuje też dany obwód na bramki bazowe konkretnego procesora kwantowego, który wybrałeś/-aś do użycia.

Qiskit ma cztery wbudowane potoki transpilacji odpowiadające różnym poziomom optymalizacji i — jeśli nie masz już doświadczenia z optymalizacją obwodów kwantowych — zalecamy korzystanie z jednego z nich. Domyślnie proces transpilacji obejmuje sześć następujących kroków:

  1. Inicjalizacja. Ten etap uruchamia wszelkie wstępne przebiegi wymagane przed osadzeniem obwodu na Backendzie. Zazwyczaj obejmuje to rozwijanie niestandardowych instrukcji i konwertowanie obwodu wyłącznie do jednokulbitowych i dwukulbitowych Gate'ów.

  2. Layout. Ten etap odwzorowuje wirtualne kubity w obwodzie na fizyczne kubity Backendu. Więcej szczegółów znajdziesz w opisie etapu Layout.

  3. Routing. Ten etap jest uruchamiany po zastosowaniu layoutu i wstrzykuje Gate'y (np. bramki SWAP) do oryginalnego obwodu, aby był zgodny z łącznością Backendu. Więcej szczegółów znajdziesz w opisie etapu Routing.

  4. Tłumaczenie. Ten etap tłumaczy Gate'y w obwodzie na zestaw bazowy docelowego Backendu. Więcej szczegółów znajdziesz w opisie etapu Translation.

  5. Optymalizacja. Ten etap uruchamia główną pętlę optymalizacji wielokrotnie, aż zostanie spełniony jakiś warunek (np. osiągnięcie określonej docelowej głębokości). Mamy do wyboru cztery różne poziomy optymalizacji opisane poniżej.

  6. Harmonogramowanie. Ten etap przeznaczony jest na przebiegi harmonogramowania uwzględniające sprzęt. Na wysokim poziomie abstrakcji harmonogramowanie można rozumieć jako wstawianie opóźnień do obwodu w celu uwzględnienia czasu bezczynności kubitów między wykonywaniem instrukcji.

Dostępne są cztery poziomy optymalizacji w zakresie od 0 do 3, przy czym wyższe poziomy wymagają więcej czasu i nakładu obliczeniowego, ale mogą dawać lepszy obwód. Poziom optymalizacji 0 jest przeznaczony do eksperymentów charakteryzacyjnych urządzenia i jako taki jedynie odwzorowuje obwód wejściowy na ograniczenia docelowego Backendu, bez wykonywania żadnych optymalizacji. Poziom optymalizacji 3 poświęca najwięcej wysiłku na optymalizację obwodu. Jednak ponieważ wiele technik optymalizacji w transpilerze opiera się na heurystykach, większy nakład obliczeniowy nie zawsze przekłada się na poprawę jakości obwodu wyjściowego. Jeśli chcesz dowiedzieć się więcej, zajrzyj do dokumentacji transpilera w dokumentacji Qiskit.

Tłumienie błędów

Pierwszym krokiem w redukcji błędów w obwodzie jest optymalizacja layoutu, routingu i minimalizacja liczby Gate'ów, co już zrobiliśmy — za pomocą transpilera lub ręcznie. Teraz omówmy bardziej zaawansowane metody tłumienia błędów.

Tłumienie błędów odnosi się do klasy technik, które transformują obwód podczas kompilacji w celu minimalizacji błędów. Różni się od mitygacji błędów, którą omówimy w sekcji „Execute" poniżej. Dwie najczęściej stosowane przez nas formy tłumienia błędów to dynamiczne odsprzęganie i skręcanie Pauliego:

  1. Dynamiczne odsprzęganie służy do efektywnego znoszenia części szumów środowiskowych wprowadzanych, gdy qubit pozostaje bezczynny. Stosując serię Gate'ów w określonych momentach, można sprawić, że szumy narastające w jednej części okresu bezczynności w przybliżeniu znoszą szumy w drugiej jego części.
  2. Skręcanie Pauliego to metoda wstawiania losowych Gate'ów nie po to, by znosić szumy — jak w dynamicznym odsprzęganiu — lecz by szumy uprościć. Poprzez wstawianie losowych Gate'ów zapobiega się szybkiemu narastaniu efektów różnych błędów i ułatwia charakteryzację szumów, które teraz mają charakter stochastyczny. Metoda ta stanowi też podstawę potężnej techniki mitygacji błędów, którą omówimy poniżej.

Execute

Teraz jesteśmy gotowi do uruchomienia programu kwantowego. Prymitywy Qiskit Runtime zapewniają interfejs do sprzętu IBM Quantum i jednocześnie ukrywają przed użytkownikiem mechanizmy tłumienia oraz mitygacji błędów. Do wyboru są dwa prymitywy: Sampler i Estimator.

Sampler Qiskit Runtime uruchamia Circuit wielokrotnie na urządzeniu kwantowym, wykonując pomiary przy każdym uruchomieniu i rekonstruując rozkład prawdopodobieństwa na podstawie odzyskanych ciągów bitów. Im więcej uruchomień (tzw. shotów) zostanie wykonanych, tym dokładniejsze będą wyniki — wymaga to jednak więcej czasu i zasobów kwantowych. Konkretnie: Sampler oblicza prawdopodobieństwo uzyskania każdego możliwego stanu bazy standardowej przez pomiar stanu przygotowanego przez Circuit.

Estimator Qiskit Runtime używa złożonego procesu algebraicznego do szacowania wartości oczekiwanej na rzeczywistym urządzeniu kwantowym, rozkładając obserwowalną na kombinację innych obserwowalnych o znanych eigenbazach.

Krok Execute to również moment, w którym możemy wybrać strategię mitygacji błędów. Mitygacja błędów to techniki pozwalające użytkownikom redukować błędy w Circuit poprzez modelowanie szumów urządzenia obecnych w chwili wykonania. Zazwyczaj wiąże się to z narzutem obliczeniowym po stronie kwantowej związanym z trenowaniem modelu oraz narzutem klasycznym po stronie post-processingu, który służy do mitygowania błędów w surowych wynikach przy użyciu wygenerowanego modelu. W zamian za ten narzut uzyskujemy znacznie dokładniejsze wyniki.

Istnieje wiele technik mitygacji błędów, które możemy zastosować. Omówimy trzy z nich — w kolejności rosnącej odporności na błędy, ale zarazem rosnącego kosztu obliczeniowego. Pamiętaj jednak, że jest to aktywny obszar badań — prawdopodobnie będziemy więc nadal opracowywać nowe techniki i ulepszać istniejące.

Przy poziomie odporności 0 transpiler nie wprowadza żadnych zmian w twoim Circuit.

Przy poziomie 1 wprowadzana jest metoda zwana Twirled Readout Error eXtinction (T-REX). T-REX używa Pauli twirling, o którym była mowa w sekcji dotyczącej tłumienia błędów. Jak wspomniano, wstawianie losowych Gate'ów do Circuit może sprawić, że nawet bardzo skomplikowane, trudne do modelowania szumy wyglądają stochastycznie, co znacznie ułatwia ich uwzględnienie lub odjęcie w post-processingu.

Przy poziomie odporności 2 dodawane jest Zero Noise Extrapolation (ZNE). Jest to popularna technika, z którą ostatnio odnotowujemy duże sukcesy. Idea stojąca za ZNE może być nieco zaskakująca — faktycznie dodajemy szum na wierzch tego, który już istnieje! Pozwala nam to jednak na ekstrapolację w odwrotnym kierunku, by przewidzieć, jak wyglądałyby wyniki przy coraz mniejszej ilości szumu.

Dodawanie szumu można zrealizować na kilka sposobów. Na przykład możemy wydłużać Gate'y, czyniąc je dłuższymi, a tym samym bardziej podatnymi na błędy, albo uruchamiać dodatkowe Gate'y, które ostatecznie dają operację identyczności — dzięki temu Circuit nie zmienia się funkcjonalnie, ale celowo próbkujemy więcej szumu. Trzeba to jednak robić dla każdego Circuit i każdej wartości oczekiwanej, którą chcemy śledzić — widać więc, jak może to stać się kosztowne obliczeniowo.

Szczególnym rodzajem ZNE jest Probabilistic Error Amplification (PEA). Po nauczeniu się modelu szumu dla danego Gate'a PEA działa poprzez próbkowanie błędów z tego modelu szumu i celowe wstrzykiwanie ich do Circuit. Nie jest to jeszcze dostępne w Qiskit, ale pojawi się w późniejszym czasie w tym roku.

Ostatnią omawianą przez nas formą mitygacji błędów jest Probabilistic Error Cancellation (PEC). Zamiast znajdować się na 3. poziomie odporności, PEC to specjalna funkcja, którą musisz włączyć ręcznie w Qiskit, ponieważ wymagane zasoby obliczeniowe nie skalują się zbyt dobrze w porównaniu z innymi technikami mitygacji błędów. Zaczynasz od poznania szumu wpływającego na twój Circuit — uruchamiasz obwody do nauki szumu lub charakteryzacji szumu dla każdej unikalnej warstwy dwu-Qubitowych Gate'ów w Circuit. Wyniki te pozwalają opisać szum w kategoriach operatorów Pauliego. Gdy znasz już te składowe szumu, możesz zmodyfikować swoje Circuit tak, by miały wbudowane efektywnie odwrotne Gate'y Pauliego, które kasują te kanały szumu. Pod pewnymi względami proces ten przypomina działanie słuchawek z aktywną redukcją szumu. Jednak ten sposób cofania szumu jest bardzo kosztowny — czas wykonania rośnie szybko i wykładniczo wraz z liczbą Gate'ów, więc może nie być najlepszym wyborem dla bardzo dużego Circuit.

Post-process

Etap post-processingu to miejsce, w którym wizualizujemy i analizujemy wyniki naszego Circuit. Dostępnych jest wiele narzędzi Qiskit, których możesz do tego użyć, takich jak moduły visualization i quantum-info. Nie omówimy ich tutaj, ale zobaczymy te moduły w działaniu, gdy zagłębimy się w przykłady zastosowań w kolejnych lekcjach.

Conclusion

Mam nadzieję, że ta lekcja dała ci błyskawiczny przegląd głównych zagadnień i przepływu pracy, którego używamy, gdy chcemy uruchomić kwantowe obliczenia w skali użytkowej. Była pełna informacji i wiele z nich nie dotrze do ciebie w pełni, dopóki nie zobaczymy konkretnych przykładów, w których te teoretyczne koncepcje zostaną zastosowane w praktyce. I właśnie temu poświęcona będzie pozostała część kursu. W końcu nie bez powodu ten kurs nazywa się Quantum Computing in Practice!