Zum Hauptinhalt springen
Dieses Projekt befindet sich in der Beta-Phase. Einen Fehler gefunden? GitHub Issue erstellen. Frage oder Idee? In Discussions fragen — wir freuen uns über dein Feedback!
Wie ist die Übersetzungsqualität auf dieser Seite?

Tensor-Netzwerk-Fehlerminderung (TEM): Eine Qiskit Function von Algorithmiq

Siehe die API-Referenz

Hinweis

Qiskit Functions sind ein experimentelles Feature, das ausschließlich Nutzerinnen und Nutzern des IBM Quantum® Premium Plan, Flex Plan und On-Prem (über die IBM Quantum Platform API) zur Verfügung steht. Sie befinden sich im Preview-Status und können sich noch ändern.

Paketversionen

Der Code auf dieser Seite wurde mit den folgenden Anforderungen entwickelt. Wir empfehlen, diese oder neuere Versionen zu verwenden.

qiskit[all]~=2.5.1

Überblick​

Die Tensor-Netzwerk-Fehlerminderungsmethode (TEM) von Algorithmiq ist ein hybrides quanten-klassisches Verfahren, das Rauschminderung vollständig in der klassischen Nachverarbeitungsphase durchführt. Mit TEM kannst du Erwartungswerte von Observablen berechnen und dabei die unvermeidlichen rauschbedingten Fehler auf Quantenhardware mit verbesserter Genauigkeit und Kosteneffizienz mindern – eine äußerst attraktive Option für Forschende im Quantenbereich ebenso wie für Fachleute aus der Industrie.

Die Methode besteht darin, ein Tensor-Netzwerk zu konstruieren, das die Inverse des globalen Rauschkanals darstellt, der den Zustand des Quantenprozessors beeinflusst, und diese Abbildung dann auf informationsvollständige Messergebnisse anzuwenden, die aus dem verrauschten Zustand gewonnen wurden, um unverzerrte Schätzer für die Observablen zu erhalten.

Ein Vorteil von TEM ist, dass es informationsvollständige Messungen nutzt und so Zugang zu einer großen Menge fehlergeminderter Erwartungswerte von Observablen bietet; zudem hat es einen optimalen Sampling-Overhead auf der Quantenhardware, wie in Filippov et al. (2023), arXiv:2307.11740, und Filippov et al. (2024), arXiv:2403.13542 beschrieben. Der Mess-Overhead bezieht sich auf die Anzahl zusätzlicher Messungen, die für eine effiziente Fehlerminderung erforderlich sind – ein entscheidender Faktor für die Durchführbarkeit von Quantenberechnungen. Daher hat TEM das Potenzial, einen Quantenvorteil in komplexen Szenarien zu ermöglichen, etwa bei Anwendungen in den Bereichen Quantenchaos, Vielteilchenphysik, Hubbard-Dynamik und Simulationen in der Chemie kleiner Moleküle.

Die wichtigsten Merkmale und Vorteile von TEM lassen sich wie folgt zusammenfassen:

  1. Optimaler Mess-Overhead: TEM ist optimal hinsichtlich der theoretischen Schranken, d. h. keine andere Methode kann einen geringeren Mess-Overhead erzielen. Anders gesagt benötigt TEM die minimale Anzahl zusätzlicher Messungen für die Fehlerminderung. Das bedeutet wiederum, dass TEM die Quantenlaufzeit minimiert.
  2. Kosteneffizienz: Da TEM die Rauschminderung vollständig in der Nachverarbeitungsphase übernimmt, müssen dem Quantencomputer keine zusätzlichen Circuits hinzugefügt werden. Das macht die Berechnung nicht nur günstiger, sondern verringert auch das Risiko, durch die Unvollkommenheiten von Quantengeräten zusätzliche Fehler einzuführen.
  3. Schätzung mehrerer Observablen: Dank informationsvollständiger Messungen schätzt TEM effizient mehrere Observablen mit denselben Messdaten vom Quantencomputer.
  4. Messfehlerminderung: Die TEM Qiskit Function enthält außerdem eine proprietäre Methode zur Messfehlerminderung, die Auslesefehler nach einem kurzen Kalibrierungslauf deutlich reduzieren kann.
  5. Genauigkeit: TEM verbessert die Genauigkeit und Zuverlässigkeit digitaler Quantensimulationen erheblich und macht Quantenalgorithmen präziser und verlässlicher.

Beschreibung​

Die TEM-Funktion ermöglicht es dir, fehlergeminderte Erwartungswerte für mehrere Observablen eines Quantum Circuits mit minimalem Sampling-Overhead zu berechnen. Der Circuit wird mit einem informationsvollständigen positiven operatorwertigen Maß (IC-POVM) gemessen, und die gesammelten Messergebnisse werden auf einem klassischen Computer verarbeitet. Diese Messung wird verwendet, um die Tensor-Netzwerk-Methoden durchzuführen und eine rausch-invertierende Abbildung aufzubauen. Die Funktion wendet eine Abbildung an, die den gesamten verrauschten Circuit vollständig invertiert, indem Tensor-Netzwerke zur Darstellung der verrauschten Schichten verwendet werden.

TEM-Schemata

Sobald die Circuits an die Funktion übermittelt werden, werden sie transpiliert und optimiert, um die Anzahl der Schichten mit Zwei-Qubit-Gates zu minimieren (den rauschintensiveren Gates auf Quantengeräten). Das Rauschen, das die Schichten beeinflusst, wird über Qiskit Runtime mithilfe eines dünnbesetzten (sparse) Pauli-Lindblad-Rauschmodells erlernt, wie in E. van den Berg, Z. Minev, A. Kandala, K. Temme, Nat. Phys. (2023) beschrieben. arXiv:2201.09866.

Das Rauschmodell ist eine genaue Beschreibung des Rauschens auf dem Gerät und kann subtile Merkmale erfassen, einschließlich Qubit-Übersprechen. Allerdings kann das Rauschen auf den Geräten schwanken und driften, sodass das erlernte Rauschmodell zum Zeitpunkt der Schätzung möglicherweise nicht mehr akkurat ist. Das kann zu ungenauen Ergebnissen führen.

Erste Schritte​

Authentifiziere dich mit deinem IBM Quantum Platform API-Schlüssel und wähle die TEM-Funktion wie folgt aus. (Dieser Codeausschnitt setzt voraus, dass du dein Konto bereits in deiner lokalen Umgebung gespeichert hast.)

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit": "qiskit", "qiskit_ibm_catalog": "qiskit-ibm-catalog"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_catalog import QiskitFunctionsCatalog

tem_function_name = "algorithmiq/tem"
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# verify that you have access to the function
catalog.list()
[QiskitFunction(qunova/hivqe-chemistry),
QiskitFunction(global-data-quantum/quantum-portfolio-optimizer),
QiskitFunction(algorithmiq/tem),
QiskitFunction(qedma/qesem),
QiskitFunction(multiverse/singularity),
QiskitFunction(ibm/circuit-function),
QiskitFunction(q-ctrl/optimization-solver),
QiskitFunction(colibritd/quick-pde),
QiskitFunction(q-ctrl/performance-management),
QiskitFunction(kipu-quantum/iskay-quantum-optimizer)]
# Load your function
tem = catalog.load(tem_function_name)

Beispiel​

Der folgende Codeausschnitt zeigt ein Beispiel, bei dem TEM verwendet wird, um die Erwartungswerte einer Observablen für einen einfachen Quantum Circuit zu berechnen.

from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp

# Create a quantum circuit
qc = QuantumCircuit(3)
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)
for _ in range(2):
qc.barrier()
qc.cx(0, 1)
qc.cx(2, 1)
qc.barrier()
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)

# Define the observables
observable = SparsePauliOp("IYX", 1.0)

# Define the execution options
pub = (qc, [observable])
options = {"default_precision": 0.02}

# Define backend to use. TEM will choose the least-busy device
# reported by IBM if not specified
backend_name = "ibm_marrakesh"

# Run the TEM function (uses around three minutes of QPU time)
job = tem.run(pubs=[pub], backend_name=backend_name, options=options)

Verwende die Qiskit Serverless APIs, um den Status deines Qiskit Function-Workloads zu überprüfen:

# Print the ID so you can use it later, if necessary
print(job.job_id)
print(job.status())
ea1d7802-b067-4cc9-af39-3c2402d22413
QUEUED

Du kannst die Ergebnisse wie folgt abrufen:

result = job.result()
evs = result[0].data.evs
print(evs[0])
-0.10628832892063486
info

Der erwartete Wert für den rauschfreien Circuit für den angegebenen Operator sollte etwa 0.18409094298943401 betragen.

Support erhalten​

Wende dich an qiskit_ibm@algorithmiq.fi

Füge bitte folgende Informationen bei:

  • Qiskit Function Job-ID (qiskit-ibm-catalog), job.job_id
  • Eine ausführliche Beschreibung des Problems
  • Alle relevanten Fehlermeldungen oder -codes
  • Schritte zur Reproduktion des Problems

Nächste Schritte​

Empfehlungen