Skip to main content
IBM Quantum Platform

QESEM von Qedma – API-Referenz

  • Qiskit Functions

    Qiskit Functions — von Partnerorganisationen entwickelte vorgefertigte Tools — abstrahieren Teile des Softwareentwicklungs-Workflows, um die Erforschung von Algorithmen und die Anwendungsentwicklung im großen Maßstab zu vereinfachen und zu beschleunigen. Klicken Sie hier, um die Anleitung zu dieser Qiskit-Funktion anzuzeigen.


Eingaben

pubs

Typ: EstimatorPubLike

Dies ist die Haupteingabe. Das Pub enthält 2–4 Elemente: einen Schaltkreis, eine oder mehrere Observablen, 0 oder einen einzelnen Satz von Parameterwerten sowie eine optionale Genauigkeit. Wenn keine Genauigkeit angegeben wurde, wird die default_precision aus options verwendet.

Die Genauigkeit „ PUB “ kann entweder ein „float“-Wert oder ein „Dictionary“ sein. Ein Float-Wert legt die Zielgenauigkeit für die zurückgegebenen Erwartungswerte fest. Ein Nachschlagewerk ordnet Rauschskalenfaktoren den Zielgenauigkeiten zu und fordert Ergebnisse der quasi-probabilistischen Fehleroptimierung (QET) auf den angegebenen Skalen an.

1.0QESEM gibt zudem komplementäre Skalierungsfaktoren um zurück; die angestrebte Genauigkeit wird ausschließlich für die angeforderten Skalierungsfaktoren garantiert.

  • Erforderlich: Ja
  • Beispiel: [(circuit, [obs1,obs2,obs3], parameter_values, 0.03)]
  • QET-Beispiel: [(circuit, [obs1, obs2], None, {0.5: 0.15, 1.3: 0.2})]

backend_name

Typ: `str`

Standardwert: QESEM will get least busy device reported by IBM

Name des zu verwendenden Backends

  • Erforderlich: Nein
  • Beispiel: "ibm_fez"

instance

Typ: `str`

Der Name der Cloud-Ressource der Instanz, der in diesem Format verwendet werden soll

  • Erforderlich: Nein
  • Beispiel: "CRN"

Optionen

Typ: `dict`

Die Eingabeparameter für diese Funktion werden als verschachteltes Wörterbuch angegeben. Hier finden Sie die vollständige Liste der Optionen und ihrer Standardwerte.

  • Erforderlich: Nein
  • Beispiel: { "default_precision": 0.03, "max_execution_time": 3600, "transpilation_level": "standard"}

Optionsliste

estimate_time_only

Standardwert: None

Mit diesem Flag können Benutzer eine Schätzung der QPU-Zeit erhalten, die für die Ausführung der Schaltung mit QESEM benötigt wird.

  • Bei der Einstellung „None“ wird die Schaltung mit QESEM ausgeführt.
  • Wenn diese Option aktiviert ist "analytical", wird eine Obergrenze für die QPU-Zeit berechnet, ohne dass dabei QPU-Leistung verbraucht wird. Diese Schätzung erfolgt in 30-Minuten-Schritten (zum Beispiel 30 Minuten, 60 Minuten, 90 Minuten usw.). Sie ist typischerweise pessimistisch und lässt sich nur für einzelne Pauli-Observablen oder für Summen von Pauli-Observablen ohne sich überschneidende Unterstützungsbereiche berechnen (siehe beispielsweise Z0+Z1 ). Es eignet sich in erster Linie dazu, den Komplexitätsgrad verschiedener vom Benutzer eingegebener Parameter (Schaltung, Genauigkeit usw.) zu vergleichen.
  • Um eine genauere Schätzung der QPU-Zeit zu erhalten, setzen Sie dieses Flag auf "empirical". Obwohl diese Option die Durchführung einer geringen Anzahl von Durchläufen erfordert, liefert sie eine deutlich genauere Schätzung der QPU-Zeit. Diese Schätzung erfolgt in 5-Minuten-Schritten (zum Beispiel 20 Minuten, 25 Minuten, 30 Minuten usw.). Der Benutzer kann wählen, ob er die empirische Zeitschätzung im Batch- oder im Sitzungsmodus ausführen möchte. Weitere Informationen finden Sie in der execution_mode Beschreibung. Beispielsweise dauert die empirische Zeitschätzung im Batch-Modus weniger als 10 Minuten QPU-Zeit.
  • Auswahlmöglichkeiten: "analytical" / "empirical" / Keine
default_precision

Standardwert: 0.02

Gilt für pubs solche, die keine Genauigkeit aufweisen. Die Genauigkeit gibt den zulässigen Fehler bei den Erwartungswerten der Observablen als Absolutwert an. Konkret wird die Laufzeit der QPU für die Minderung so festgelegt, dass sie Ausgabewerte für alle relevanten Observablen liefert, die innerhalb eines 1- σ\sigma -Konfidenzintervalls der Zielgenauigkeit liegen. Werden mehrere Beobachtungsgrößen angegeben, läuft die Optimierungsmaßnahme so lange, bis für jede der eingegebenen Beobachtungsgrößen die Zielgenauigkeit erreicht ist.

  • Auswahlmöglichkeiten: 0 < float
max_execution_time

Standardwert: 3,600 (one hour)

Hiermit können Sie die QPU-Zeit, angegeben in Sekunden, begrenzen, die für den gesamten QESEM-Prozess verwendet werden soll. Der Standardwert beträgt 3.600 Sekunden (eine Stunde). Da die endgültige QPU-Zeit, die zum Erreichen der Zielgenauigkeit benötigt wird, während des QESEM-Jobs dynamisch ermittelt wird, können Sie mit diesem Parameter den Aufwand des Experiments begrenzen. Ist die dynamisch ermittelte QPU-Zeit kürzer als die vom Benutzer zugewiesene Zeit, hat dieser Parameter keinen Einfluss auf das Experiment. Der max_execution_time Parameter ist insbesondere dann nützlich, wenn die von QESEM vor Beginn des Auftrags bereitgestellte Schätzung der Bearbeitungszeit zu pessimistisch ausfällt und der Benutzer den Abhilfevorgang dennoch starten möchte. Sobald die Zeitbegrenzung erreicht ist, sendet QESEM keine neuen Schaltkreise mehr. Bereits gesendete Durchläufe werden weiter ausgeführt (sodass die Gesamtzeit das Limit um bis zu 30 Minuten überschreiten kann), und der Benutzer erhält die verarbeiteten Ergebnisse der bis zu diesem Zeitpunkt ausgeführten Durchläufe. Wenn Sie ein QPU-Zeitlimit festlegen möchten, das kürzer ist als die geschätzte Berechnungszeit, wenden Sie sich bitte an Qedma, um eine Einschätzung der Genauigkeit zu erhalten, die innerhalb dieses Zeitlimits erreichbar ist.

  • Auswahlmöglichkeiten: 0 < Ganzzahl < 28.800 (8 Stunden)
transpilation_level

Standardwert: standard

Nachdem eine Schaltung an QESEM übermittelt wurde, erstellt das Programm automatisch mehrere alternative Schaltungsumsetzungen und wählt diejenige aus, die die QPU-Zeit minimiert. So könnten beispielsweise alternative Implementierungen Qedma-optimierte fraktionierte RZZ-Gatter nutzen, um die Schaltungstiefe zu verringern. Natürlich sind alle Transpilationen hinsichtlich ihres idealen Ausgangs mit der Eingangsschaltung gleichwertig. Um mehr Kontrolle über die Transpilierung der Schaltkreise zu erlangen, legen Sie die Transpilierungsstufe in der options. fest. Während "transpilation_level": "standard" dem oben beschriebenen Standardverhalten entspricht, "transpilation_level": "minimal_with_layout_opt" umfasst nur die minimal notwendigen Änderungen an der ursprünglichen Schaltung; dazu gehört beispielsweise die Abbildung der Schaltung auf den Verbindungsgraphen des Geräts. Beachten Sie, dass in jedem Fall eine automatische Hardware-Zuordnung zu hochpräzisen Qubits erfolgt.

transpilation_level
Beschreibung
„Standard“Standardmäßige QESEM-Transpilierung. Erstellt mehrere alternative Transpilationen und wählt diejenige aus, die die QPU-Zeit minimiert. Die Barrieren können im Schichtbildungsschritt modifiziert werden.
"minimal_with_layout_opt"Minimale Transpilierung: Die optimierte Schaltung wird strukturell der Eingangsschaltung sehr ähnlich sein. Die in dieser Stufe bereitgestellten Schaltungen sollten mit dem Basis-Gate-Satz des Bausteins übereinstimmen; daher sollten Sie Ihre Schaltung separat auf den Basis-Gate-Satz des Bausteins transpilieren. Beispiele hierfür sind: CX, Rzz(α) und Standard-Einzelqubit-Gatter (U, x, sx, rz usw.). Die Barrieren werden beim Schichtungsprozess berücksichtigt.

"minimal_with_layout_opt"Verwenden Sie für Jobs, die mehrere Eingangs-PUBs oder mehrere parametergebundene Schaltungsinstanzen enthalten,.

  • Auswahlmöglichkeiten: „minimal_with_layout_opt“ / „standard“
execution_mode

Standardwert: batch

Der Benutzer kann wählen, ob er den QESEM-Job entweder in einer dedizierten „ IBM “-Sitzung oder über mehrere „ IBM “-Batches hinweg ausführen möchte:

  • Sitzungsmodus : Sitzungen sind zwar kostspieliger, führen aber zu einer kürzeren Zeit bis zum Ergebnis. Sobald die Sitzung beginnt, ist die QPU ausschließlich für den QESEM-Auftrag reserviert. Die Nutzungsberechnung umfasst sowohl die für die QPU-Ausführung aufgewendete Zeit als auch die damit verbundenen klassischen Berechnungen (die von QESEM und IBM durchgeführt werden). Die QESEM-Qiskit-Funktion übernimmt automatisch das Eröffnen und Schließen der Sitzung. Benutzern mit uneingeschränktem Zugriff auf QPUs (z. B. bei lokalen Installationen) wird empfohlen, den Sitzungsmodus zu verwenden, um die Ausführung von QESEM zu beschleunigen.

  • Batch-Modus : Im Batch-Modus wird die QPU während klassischer Berechnungen freigegeben, was zu einer geringeren QPU-Auslastung führt. Da Batch-Jobs in der Regel über einen längeren Zeitraum laufen, besteht ein erhöhtes Risiko von Hardware-Abweichungen; QESEM verfügt über Funktionen zur Erkennung und Kompensation solcher Abweichungen, wodurch die Zuverlässigkeit auch bei längeren Laufzeiten gewährleistet bleibt.

  • Auswahlmöglichkeiten: "session" / "batch"

parallel_execution

Standardwert: True

Mit diesem Flag kann der Benutzer die Eingangsschaltung parallel auf der QPU ausführen. QESEM prüft, ob andere Patches auf der QPU eine ausreichende Genauigkeit aufweisen. Wenn solche Patches die QPU-Zeit verkürzen, führt QESEM die Eingangsschaltung auf diesen Patches parallel aus. Die Ergebnisse der Patches werden mittels inverser Varianzgewichtung zusammengefasst.

  • parallel_execution=TrueBeispiel: Ein Benutzer möchte eine 8-Qubit-Schaltung auf ibm_marrakesh einem 156-Qubit-Gerät mit ausführen. QESEM erstellt neun Kopien der transpilierten Schaltung, die jeweils einem bestimmten 8-Qubit-Patch im Konnektivitätsgraphen von Marrakesh zugeordnet sind. Nach der Ausführung erhält der Benutzer für jede Eingangsgröße einen Erwartungswert und einen Fehlerbalken.

  • Auswahlmöglichkeiten: "False" / "True"

description

Standardwert: None

Optionale Beschreibung, die dem QESEM-Auftrag beigefügt werden soll.

Caution

Die geschätzte QPU-Laufzeit variiert je nach Backend. Achten Sie daher bei der Ausführung der QESEM-Funktion darauf, dass Sie diese auf demselben Backend ausführen, das bei der Ermittlung der QPU-Zeitabschätzung ausgewählt wurde.

Note

QESEM beendet den Lauf, sobald die Zielgenauigkeit erreicht ist oder sobald erreicht ist max_execution_time– je nachdem, was zuerst eintritt.

Note

Barrier-Operationen werden in der Regel verwendet, um die Schichten von Zwei-Qubit-Gattern in Quantenschaltungen zu spezifizieren. Mit "minimal_with_layout_opt" QESEM bleiben die durch die Barrieren festgelegten Schichten erhalten. Dabei "standard" werden die durch die Barrieren festgelegten Schichten bei der Minimierung der QPU-Zeit als eine Transpilationsalternative betrachtet.


Ausgaben

Die Ausgabe der QESEM-Funktion ist ein PrimitiveResult, das pro Eingabe PUB, ein PubResult sowie Metadaten auf Job-Ebene enthält.

Auf jedes Element PrimitiveResult``PubResult kann durch Indizierung zugegriffen werden und es enthält ein Feld data sowie ein metadata Feld.

  • Das data Feld enthält mindestens ein Array mit Erwartungswerten (PubResult.data.evs) und ein Array mit Standardfehlern (PubResult.data.stds). Je nach den verwendeten Optionen kann es auch weitere Daten enthalten.

  • Das metadata Feld enthält Metadaten auf der Ebene „ PUB “ (PubResult.metadata), darunter die detaillierten QESEM-Ergebnisse und Ausführungsmetriken.

Zu den gängigen PubResult.metadata Feldern gehören:

Feld
Beschreibung
resultsQESEM-Ergebnisse pro Schaltkreis und pro Messgröße.
noisy_resultsUnkorrigierte Erwartungswerte und Fehlerbalken, sofern verfügbar.
transpiled_circsInformationen zur transpilierten Schaltung, einschließlich der Qubit-Zuordnungen und der Anzahl der Messbasen.
total_qpu_timeVom Job genutzte QPU-Zeit.
gate_fidelitiesWährend des Experiments gemessene Gate-Treuewerte.
total_shotsGesamtzahl der vom Auftrag verwendeten Aufnahmen.
mitigation_shotsAnzahl der zur Schadensminderung eingesetzten Schüsse.
resource_usageAufschlüsselung der Ressourcennutzung für den Auftrag.

Die detaillierten QESEM-Daten für jede Beobachtung werden in metadata["results"]… gespeichert. Die Ergebnisse werden zunächst nach Schaltungsinstanz und anschließend nach Messgröße gruppiert. Jeder beobachtbare Eintrag kann das QESEM-Ergebnis (qesem), das Ergebnis ohne Kompensation (unmitigated), Ergebnisse zur Rauschskalierung (noise_scaling) sowie heuristische QESEM-Ergebnisse (qesem_heuristic) enthalten.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.