Przejdź do głównej treści

QESEM: Funkcja Qiskit firmy Qedma

Uwaga

Funkcje Qiskit to funkcja eksperymentalna dostępna wyłącznie dla użytkowników planów IBM Quantum® Premium, Flex oraz On-Prem (za pośrednictwem IBM Quantum Platform API). Mają status wydania podglądowego i mogą ulec zmianie.

Przegląd

Choć procesory kwantowe (QPU) znacznie się poprawiły w ostatnich latach, błędy wynikające z szumów i niedoskonałości istniejącego sprzętu nadal stanowią kluczowe wyzwanie dla twórców algorytmów kwantowych. W miarę jak dziedzina zbliża się do kwantowych obliczeń w skali użytkowej, których nie można zweryfikować klasycznie, rozwiązania umożliwiające eliminację szumów z gwarantowaną dokładnością stają się coraz ważniejsze. Aby sprostać temu wyzwaniu, Qedma opracowała metodę Quantum Error Suppression and Error Mitigation (QESEM), bezproblemowo zintegrowaną z IBM Quantum Platform jako Funkcja Qiskit.

Dzięki QESEM możesz uruchamiać swoje obwody kwantowe na zaszumionych QPU i uzyskiwać wysoce dokładne wyniki wolne od błędów przy minimalnym narzucie czasowym QPU, bliskim fundamentalnym granicom. Aby to osiągnąć, QESEM korzysta z zestawu autorskich metod opracowanych przez Qedmę, służących do charakteryzacji i redukcji błędów. Techniki redukcji błędów obejmują optymalizację Gate, transpilację uwzględniającą szumy, tłumienie błędów (ES) oraz nieobciążone łagodzenie błędów (EM). Dzięki połączeniu tych metod opartych na charakteryzacji możesz uzyskiwać wiarygodne, wolne od błędów wyniki dla ogólnych kwantowych Circuit o dużej objętości, otwierając zastosowania niemożliwe do realizacji w inny sposób.

Pełny opis składowych oraz demonstrację w skali użytkowej znajdziesz w artykule Reliable high-accuracy error mitigation for utility-scale quantum circuits.

Opis

Możesz używać funkcji QESEM firmy Qedma, aby łatwo szacować i wykonywać swoje Circuit z tłumieniem i łagodzeniem błędów, osiągając większe objętości Circuit i wyższą dokładność. Aby korzystać z QESEM, podajesz Circuit kwantowy, zestaw obserwowalnych do zmierzenia, docelową dokładność statystyczną dla każdej obserwowalnej oraz wybrany QPU. Zanim uruchomisz Circuit do docelowej dokładności, możesz oszacować wymagany czas QPU na podstawie obliczeń analitycznych, które nie wymagają wykonania Circuit. Gdy jesteś zadowolony z oszacowania czasu QPU, możesz wykonać Circuit za pomocą QESEM.

Gdy wykonujesz Circuit, QESEM uruchamia protokół charakteryzacji urządzenia dostosowany do twojego Circuit, uzyskując wiarygodny model szumu dla błędów występujących w Circuit. Na podstawie charakteryzacji QESEM najpierw implementuje transpilację uwzględniającą szumy, aby odwzorować wejściowy Circuit na zestaw fizycznych Qubit i Gate, minimalizując szum wpływający na docelową obserwowalną. Obejmuje to natywnie dostępne Gate (CX/CZ na urządzeniach IBM®) oraz dodatkowe Gate zoptymalizowane przez QESEM, tworzące rozszerzony zestaw Gate QESEM. Następnie QESEM uruchamia zestaw Circuit ES i EM opartych na charakteryzacji na QPU i zbiera wyniki pomiarów. Są one następnie przetwarzane klasycznie, aby dostarczyć nieobciążoną wartość oczekiwaną i słupek błędu dla każdej obserwowalnej, odpowiadające żądanej dokładności.

Przegląd Qedma QESEM Wykazano, że QESEM zapewnia wyniki o wysokiej dokładności dla różnorodnych zastosowań kwantowych i na największych objętościach Circuit osiągalnych dziś. QESEM oferuje następujące funkcje dostępne dla użytkownika, zademonstrowane w sekcji benchmarków poniżej:

  • Gwarantowana dokładność: QESEM generuje nieobciążone szacowania wartości oczekiwanych obserwowalnych. Jego metoda EM jest wyposażona w teoretyczne gwarancje, które – w połączeniu z najnowocześniejszą charakteryzacją Qedmy – zapewniają, że łagodzenie błędów zbiega do wyjścia Circuit bez szumów z dokładnością określoną przez użytkownika. W przeciwieństwie do wielu heurystycznych metod EM podatnych na systematyczne błędy lub odchylenia, gwarantowana dokładność QESEM jest niezbędna do uzyskiwania wiarygodnych wyników dla ogólnych Circuit kwantowych i obserwowalnych.
  • Skalowalność do dużych QPU: Czas QPU QESEM zależy od objętości Circuit, ale poza tym jest niezależny od liczby Qubit. Qedma zademonstrowała QESEM na największych dostępnych dziś urządzeniach kwantowych, w tym IBM Quantum Eagle o 127 Qubit i Heron o 133 Qubit.
  • Agnostyczność względem zastosowań: QESEM zademonstrowano na różnorodnych zastosowaniach, w tym symulacji Hamiltonianu, VQE, QAOA i szacowaniu amplitudy. Możesz wprowadzić dowolny Circuit kwantowy i obserwowalną do zmierzenia i uzyskać dokładne wyniki wolne od błędów. Jedyne ograniczenia wynikają ze specyfikacji sprzętu i przydzielonego czasu QPU, które określają dostępne objętości Circuit i dokładności wyjścia. W przeciwieństwie do tego wiele rozwiązań redukcji błędów jest specyficznych dla danego zastosowania lub obejmuje niekontrolowane heurystyki, co sprawia, że nie nadają się do ogólnych Circuit kwantowych i zastosowań.
  • Rozszerzony zestaw Gate: QESEM obsługuje Gate z ułamkowymi kątami i udostępnia zoptymalizowane przez Qedmę Gate Rzz(θ)Rzz(\theta) z ułamkowymi kątami na urządzeniach IBM Quantum Eagle. Ten rozszerzony zestaw Gate umożliwia efektywniejszą kompilację i odblokowuje objętości Circuit większe nawet o czynnik 2 w porównaniu z domyślną kompilacją CX/CZ.
  • Wielobazowe obserwowalné: QESEM obsługuje obserwowalné wejściowe złożone z wielu niekomutujących ciągów Pauliego, takich jak ogólne Hamiltoniany. Wybór baz pomiarowych oraz optymalizacja alokacji zasobów QPU (strzały i Circuit) są następnie wykonywane automatycznie przez QESEM w celu minimalizacji wymaganego czasu QPU dla żądanej dokładności. Ta optymalizacja, uwzględniająca wierności sprzętu i szybkości wykonania, umożliwia uruchamianie głębszych Circuit i uzyskiwanie wyższych dokładności.

Benchmarki

QESEM zostało przetestowane na szerokiej gamie przypadków użycia i zastosowań. Poniższe przykłady mogą pomóc ci ocenić, jakie typy obciążeń możesz uruchamiać z QESEM.

Kluczową miarą ilościową trudności zarówno łagodzenia błędów, jak i klasycznej symulacji dla danego Circuit i obserwowalnej jest aktywna objętość: liczba bramek CNOT wpływających na obserwowalną w Circuit. Aktywna objętość zależy od głębokości i szerokości Circuit, od wagi obserwowalnej oraz od struktury Circuit, która określa stożek świetlny obserwowalnej. Więcej szczegółów znajdziesz w prezentacji z IBM Quantum Summit 2024. QESEM zapewnia szczególnie dużą wartość w reżimie wysokiej objętości, dając wiarygodne wyniki dla ogólnych Circuit i obserwowalnych.

Aktywna objętość

ZastosowanieLiczba QubitUrządzenieOpis CircuitDokładnośćCzas całkowityUżycie Runtime
Circuit VQE8Eagle (r3)21 warstw łącznie, 9 baz pomiarowych, łańcuch 1D98%35 min14 min
Kicked Ising28Eagle (r3)3 unikalne warstwy x 3 kroki, topologia 2D heavy-hex97%22 min4 min
Kicked Ising28Eagle (r3)3 unikalne warstwy x 8 kroków, topologia 2D heavy-hex97%116 min23 min
Symulacja Hamiltonianu metodą Trottera40Eagle (r3)2 unikalne warstwy x 10 kroków Trottera, łańcuch 1D97%3 godziny25 min
Symulacja Hamiltonianu metodą Trottera119Eagle (r3)3 unikalne warstwy x 9 kroków Trottera, topologia 2D heavy-hex95%6,5 godziny45 min
Kicked Ising136Heron (r2)3 unikalne warstwy x 15 kroków, topologia 2D heavy-hex99%52 min9 min

Dokładność mierzona jest tutaj względem idealnej wartości obserwowalnej: OidealϵOideal\frac{\langle O \rangle_{ideal} - \epsilon}{\langle O \rangle_{ideal}}, gdzie 'ϵ\epsilon' to bezwzględna precyzja łagodzenia błędów (ustawiana przez użytkownika), a Oideal\langle O \rangle_{ideal} to obserwowalná dla Circuit bez szumów. „Użycie Runtime" mierzy zużycie benchmarku w trybie wsadowym (suma użycia poszczególnych zadań), natomiast „czas całkowity" mierzy użycie w trybie Session (czas ścienny eksperymentu), który obejmuje dodatkowe czasy klasyczne i komunikacyjne. QESEM jest dostępny do wykonania w obu trybach, dzięki czemu możesz jak najlepiej wykorzystać dostępne zasoby.

Obwody Kicked Ising o 28 Qubit symulują Dyskretny Kwaziryształ Czasowy badany przez Shinjo et al. (zob. arXiv 2403.16718 i Q2B24 Tokyo) na trzech połączonych pętlach ibm_kawasaki. Parametry Circuit przyjęte tutaj to (θx,θz)=(0.9π,0)(\theta_x, \theta_z) = (0.9 \pi, 0), ze ferromagnetycznym stanem początkowym ψ0=0n| \psi_0 \rangle = | 0 \rangle ^{\otimes n}. Mierzoną obserwowalną jest wartość bezwzględna magnetyzacji M=128i=027ZiM = |\frac{1}{28} \sum_{i=0}^{27} \langle Z_i \rangle|. Eksperyment Kicked Ising w skali użytkowej przeprowadzono na 136 najlepszych Qubit urządzenia ibm_fez; ten konkretny benchmark przeprowadzono przy kącie Clifforda (θx,θz)=(π,0)(\theta_x, \theta_z) = (\pi, 0), przy którym aktywna objętość rośnie wolno wraz z głębokością Circuit, co – w połączeniu z wysoką wiernością urządzenia – umożliwia wysoką dokładność przy krótkim czasie działania.

Obwody symulacji Hamiltonianu metodą Trottera dotyczą modelu Isinga z polem poprzecznym przy ułamkowych kątach: (θzz,θx)=(π/4,π/8)(\theta_{zz}, \theta_x) = (\pi / 4, \pi /8) i (θzz,θx)=(π/6,π/8)(\theta_{zz}, \theta_x) = (\pi / 6, \pi / 8) odpowiednio (zob. Q2B24 Tokyo). Circuit w skali użytkowej uruchomiono na 119 najlepszych Qubit urządzenia ibm_brisbane, natomiast eksperyment z 40 Qubit przeprowadzono na najlepszym dostępnym łańcuchu. Dokładność jest podana dla magnetyzacji; wyniki o wysokiej dokładności uzyskano również dla obserwowalnych o większej wadze.

Circuit VQE został opracowany wspólnie z badaczami z Centrum Technologii Kwantowych i Zastosowań w Deutsches Elektronen-Synchrotron (DESY). Docelową obserwowalną był tutaj Hamiltonian składający się z dużej liczby niekomutujących ciągów Pauliego, co podkreśla zoptymalizowaną wydajność QESEM dla obserwowalnych wielobazowych. Łagodzenie błędów zastosowano do klasycznie zoptymalizowanego ansatzu; choć wyniki te są jeszcze nieopublikowane, wyniki tej samej jakości zostaną uzyskane dla różnych Circuit o podobnych właściwościach strukturalnych.

Pierwsze kroki

Uwierzytelnij się przy użyciu swojego klucza API IBM Quantum Platform i wybierz Funkcję Qiskit QESEM w następujący sposób. (Ten fragment kodu zakłada, że masz już zapisane konto w swoim lokalnym środowisku.)

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-catalog qiskit-ibm-runtime
import qiskit

from qiskit_ibm_catalog import QiskitFunctionsCatalog

catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")

qesem_function = catalog.load("qedma/qesem")

Przykład

Aby zacząć, wypróbuj ten podstawowy przykład szacowania wymaganego czasu QPU do uruchomienia QESEM dla danego pub:

# This cell is hidden from users
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend_name = service.least_busy().name
circ = qiskit.QuantumCircuit(5)
circ.cx(0, 1)
circ.cx(2, 3)
circ.cx(1, 2)
circ.cx(3, 4)

avg_magnetization = qiskit.quantum_info.SparsePauliOp.from_sparse_list(
[("Z", [q], 1 / 5) for q in range(5)], num_qubits=5
)
other_observable = qiskit.quantum_info.SparsePauliOp.from_sparse_list(
[("ZZ", [0, 1], 1.0), ("XZ", [1, 4], 0.5)], num_qubits=5
)

time_estimation_job = qesem_function.run(
pubs=[(circ, [avg_magnetization, other_observable])],
options={
"estimate_time_only": "analytical",
},
backend_name=backend_name, # E.g. "ibm_fez"
)

time_estimate_result = time_estimation_job.result()

Poniższy przykład wykonuje zadanie QESEM:

sample_job = qesem_function.run(
pubs=[(circ, [avg_magnetization, other_observable])],
backend_name=backend_name, # E.g. "ibm_fez"
)

Możesz używać znanych interfejsów API Qiskit Serverless, aby sprawdzić status obciążenia swojej Funkcji Qiskit lub zwrócić wyniki:

print(sample_job.status())
result = sample_job.result()

Parametry funkcji

NazwaTypOpisWymaganyDomyślnyPrzykład
pubsEstimatorPubLikeTo jest główne wejście. Pub zawiera od 2 do 4 elementów: Circuit, co najmniej jeden obserwowalny, 0 lub jeden zestaw wartości parametrów oraz opcjonalną precyzję. Jeśli precyzja nie została określona, zostanie użyta wartość default_precision z options.TakN/A[(circuit, [obs1,obs2,obs3], parameter_values, 0.03)]
backend_namestringNazwa Backend, który ma zostać użyty.NieQESEM wybierze najmniej zajęte urządzenie zgłoszone przez IBM."ibm_fez"
instancestringNazwa zasobu w chmurze (CRN) instancji, która ma zostać użyta — w podanym formacie.NieN/A"CRN"
optionsdictionaryOpcje wejściowe. Więcej szczegółów znajdziesz w sekcji Opcje.NiePatrz sekcja Opcje.{ default_precision = 0.03, "max_execution_time" = 3600, "transpilation_level" = 0}

Opcje

OpcjaMożliwe wartościOpisDomyślna
estimate_time_only"analytical" / "empirical" / NoneGdy ustawione, zadanie QESEM wyłącznie obliczy szacowany czas QPU. Szczegółowy opis znajdziesz poniżej. Gdy ustawione na None, Circuit zostanie wykonany z QESEM.None
default_precision0 < floatDotyczy pubs, które nie mają określonej precyzji. Precyzja oznacza dopuszczalny błąd wartości oczekiwanych obserwowalnych w wartości bezwzględnej. Czas działania QPU przeznaczony na mitigację zostanie wyznaczony tak, aby wartości wyjściowe wszystkich obserwowalnych mieściły się w przedziale ufności wokół docelowej precyzji. Jeśli podano wiele obserwowalnych, mitigacja będzie działać do momentu osiągnięcia docelowej precyzji dla każdego z nich.0.02
max_execution_time0 < integer < 28 800 (8 godzin)Umożliwia ograniczenie czasu QPU (w sekundach) przeznaczonego na cały proces QESEM. Szczegóły znajdziesz poniżej.3 600 (jedna godzina)
transpilation_level0 / 1Opis poniżej.1
execution_mode"session" / "batch"Opis poniżej."batch"
ostrożnie
Szacowany czas QPU różni się w zależności od Backend. Dlatego podczas uruchamiania funkcji QESEM upewnij się, że korzystasz z tego samego Backend, który został wybrany przy uzyskiwaniu szacowanego czasu QPU.
uwaga
QESEM zakończy działanie po osiągnięciu docelowej precyzji lub po upływie max_execution_time — w zależności od tego, co nastąpi wcześniej.
  • estimate_time_only — ta flaga umożliwia uzyskanie szacowanego czasu QPU niezbędnego do wykonania Circuit z QESEM.

    • Jeśli ustawiona na "analytical", obliczane jest górne ograniczenie czasu QPU bez zużywania żadnego czasu QPU. Szacowanie ma rozdzielczość 30 minut (na przykład 30 minut, 60 minut, 90 minut itd.). Jest ono zazwyczaj pesymistyczne i można je uzyskać wyłącznie dla pojedynczych obserwowalnych Pauliego lub sum Paulich bez przecinających się nośników (na przykład Z0+Z1). Przydaje się przede wszystkim do porównywania poziomów złożoności różnych parametrów podanych przez użytkownika (Circuit, dokładność itp.).
    • Aby uzyskać dokładniejsze szacowanie czasu QPU, ustaw tę flagę na "empirical". Choć ta opcja wymaga uruchomienia niewielkiej liczby Circuit, zapewnia znacznie dokładniejsze szacowanie z rozdzielczością 5 minut (na przykład 20 minut, 25 minut, 30 minut itd.). Możesz wybrać tryb batch lub session do przeprowadzenia empirycznego szacowania czasu. Szczegóły znajdziesz w opisie execution_mode. Przykładowo w trybie batch empiryczne szacowanie czasu zużywa mniej niż 10 minut czasu QPU.
  • max_execution_time: Umożliwia ograniczenie czasu QPU (w sekundach) przeznaczonego na cały proces QESEM. Ponieważ ostateczny czas QPU potrzebny do osiągnięcia docelowej dokładności jest wyznaczany dynamicznie podczas zadania QESEM, ten parametr pozwala kontrolować koszt eksperymentu. Jeśli dynamicznie wyznaczony czas QPU jest krótszy od czasu przydzielonego przez użytkownika, parametr ten nie wpływa na eksperyment. Parametr max_execution_time jest szczególnie przydatny, gdy analityczne szacowanie czasu dostarczone przez QESEM przed uruchomieniem zadania jest zbyt pesymistyczne i użytkownik chce mimo to zainicjować zadanie mitigacji. Po osiągnięciu limitu czasu QESEM przestaje wysyłać nowe Circuit. Circuit, które zostały już wysłane, kontynuują działanie (łączny czas może więc przekroczyć limit o maksymalnie 30 minut), a użytkownik otrzymuje przetworzone wyniki z Circuit, które zdążyły zostać uruchomione przed osiągnięciem limitu. Jeśli chcesz zastosować limit czasu QPU krótszy niż analityczne szacowanie, skonsultuj się z Qedma, aby uzyskać szacowaną dokładność możliwą do osiągnięcia w ramach tego limitu.

  • transpilation_level: Po przesłaniu Circuit do QESEM automatycznie przygotowuje on kilka alternatywnych transpilacji Circuit i wybiera tę, która minimalizuje czas QPU. Na przykład alternatywne transpilacje mogą wykorzystywać zoptymalizowane przez Qedma ułamkowe Gate RZZ w celu zmniejszenia głębokości Circuit. Oczywiście wszystkie transpilacje są równoważne wejściowemu Circuit pod względem idealnego wyjścia. Aby mieć większą kontrolę nad transpilacją Circuit, ustaw poziom transpilacji w options. Wartość "transpilation_level": 1 odpowiada domyślnemu zachowaniu opisanemu powyżej, natomiast "transpilation_level": 0 obejmuje jedynie minimalne modyfikacje oryginalnego Circuit — na przykład „warstwowanie" (ang. layerification), czyli organizację operacji Circuit w „warstwy" jednoczesnych dwu-Qubitowych Gate. Automatyczne mapowanie sprzętowe na wysokiej wierności Qubitach jest stosowane w każdym przypadku.

transpilation_levelOpis
1Domyślna transpilacja QESEM. Przygotowuje kilka alternatywnych transpilacji i wybiera tę, która minimalizuje czas QPU. Bariery mogą zostać zmodyfikowane w kroku warstwowania.
0Minimalna transpilacja: zmitygowany Circuit będzie strukturalnie zbliżony do wejściowego. Circuit na poziomie 0 powinny odpowiadać łączności urządzenia i być wyrażone za pomocą następujących Gate: CX, Rzz(α) oraz standardowych Gate jednoQubitowych (U, x, sx, rz itp.). Bariery będą respektowane w kroku warstwowania.
  • execution_mode — możesz wybrać uruchomienie zadania QESEM w dedykowanej sesji IBM (Session) lub w wielu partiach IBM (Batch):
    • Tryb Session: Session są droższe, ale zapewniają krótszy czas do uzyskania wyników. Po rozpoczęciu Session QPU jest zarezerwowany wyłącznie dla zadania QESEM. Rozliczenie obejmuje zarówno czas wykonania na QPU, jak i powiązane obliczenia klasyczne (wykonywane przez QESEM i IBM). Funkcja Qiskit QESEM automatycznie tworzy i zamyka Session. Użytkownicy z nieograniczonym dostępem do QPU (na przykład w konfiguracjach on-premises) powinni korzystać z trybu Session, aby uzyskać szybsze wykonanie QESEM.
    • Tryb Batch: W trybie Batch QPU jest zwalniany podczas obliczeń klasycznych, co prowadzi do niższego zużycia QPU. Ponieważ zadania Batch zazwyczaj trwają dłużej, istnieje większe ryzyko dryftów sprzętowych; QESEM zawiera mechanizmy wykrywania i kompensowania dryftów, zachowując niezawodność przez długie sesje.
uwaga

Operacje barierowe są zazwyczaj używane do określania warstw dwu-Qubitowych Gate w Circuit. Na poziomie 0 QESEM zachowuje warstwy określone przez bariery. Na poziomie 1 warstwy wskazane przez bariery są traktowane jako jedna z alternatyw transpilacji przy minimalizacji czasu QPU.

Dane wyjściowe

Wynikiem funkcji Circuit jest obiekt PrimitiveResult, który zawiera dwa pola:

  • Jeden obiekt PubResult. Można go indeksować bezpośrednio z PrimitiveResult.

  • Metadane na poziomie zadania.

Każdy PubResult zawiera pole data oraz pole metadata.

  • Pole data zawiera co najmniej tablicę wartości oczekiwanych (PubResult.data.evs) oraz tablicę błędów standardowych (PubResult.data.stds). Może też zawierać dodatkowe dane w zależności od użytych opcji.

  • Pole metadata zawiera metadane na poziomie PUB (PubResult.metadata).

Poniższy fragment kodu pokazuje, jak pobrać szacowany czas QPU (gdy estimate_time_only jest ustawione):

print(
f"The estimated QPU time for this PUB is: \n{time_estimate_result[0].metadata}"
)

Poniższy fragment kodu pokazuje, jak pobrać wyniki mitigacji (gdy estimate_time_only nie jest ustawione) oraz metryki wykonania. Zawierają one kluczowe dane umożliwiające głębsze zrozumienie wpływu różnych parametrów na wykonanie QESEM. Mogą być również przydatne podczas pisania artykułu naukowego opartego na twoich badaniach.

results = result[0]
print(f"Mitigated expectation values: \n{results.data.evs}")
print(f"Mitigated error-bar: \n{results.data.stds}")
noisy_results = results.metadata["noisy_results"]
print(f"Noisy expectation values: \n{noisy_results.evs}")
print(f"Noisy error-bar: \n{noisy_results.stds}")
print(f"Total QPU time: \n {results.metadata['total_qpu_time']}")
print(
f"Gates fidelity measured during the experiment: \n {results.metadata['gate_fidelities']}"
)
print(
f"Total shots / mitigation shots: \n {results.metadata['total_shots']} / {results.metadata['mitigation_shots']}"
)
print("Transpiled circuits:")
for i, circuit in enumerate(results.metadata["transpiled_circs"]):
print(f"Circuit {i}:")
print(f" Circuit: \n {circuit['circuit']}")
print(f" Qubit mapping: \n {circuit['qubit_map']}")
print(f" Measurement bases: \n {circuit['num_measurement_bases']}")

Pobieranie komunikatów o błędach

Jeśli status twojego zadania to ERROR, użyj job.result(), aby pobrać komunikat o błędzie:

print(sample_job.result())
PrimitiveResult([PubResult(data=DataBin(), metadata={'time_estimation_sec': 12600})], metadata={})

Uzyskiwanie pomocy technicznej

Zespół wsparcia Qedma jest do twojej dyspozycji! Jeśli napotkasz jakiekolwiek problemy lub masz pytania dotyczące korzystania z funkcji Qiskit QESEM, nie wahaj się z nami skontaktować. Nasz kompetentny i przyjazny zespół wsparcia jest gotowy pomóc ci w rozwiązaniu wszelkich kwestii technicznych.

Możesz napisać do nas na adres support@qedma.com. Prosimy o podanie jak największej liczby szczegółów dotyczących napotkanego problemu — pomoże nam to udzielić szybkiej i precyzyjnej odpowiedzi. Możesz też skontaktować się ze swoim dedykowanym przedstawicielem Qedma (POC) mailowo lub telefonicznie.

Aby pomóc nam sprawnie rozwiązać twój problem, prosimy o podanie następujących informacji:

  • Szczegółowego opisu problemu
  • Identyfikatora zadania (job ID)
  • Wszelkich istotnych komunikatów o błędach lub kodów błędów

Jesteśmy zobowiązani do zapewnienia ci szybkiego i skutecznego wsparcia, aby korzystanie z naszej funkcji Qiskit było jak najlepszym doświadczeniem.

Stale pracujemy nad udoskonalaniem naszego produktu i chętnie poznamy twoje sugestie! Jeśli masz pomysły na ulepszenie naszych usług lub chciałbyś zobaczyć nowe funkcje, podziel się nimi pod adresem support@qedma.com.

Następne kroki