Skip to main content
IBM Quantum Platform

Quantum Elements Orbit – 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.

„Quantum Elements Orbit“ ist eine Qiskit-Funktion, die Quantenschaltungen für ein ausgewähltes „ IBM Quantum® “-Backend vorbereitet, dynamische Entkopplung (DD) in geplante Leerlauffenster einfügt und die resultierende Arbeitslast über eine „ IBM Quantum “-Primitive ausführt. Workloads können als einzelner Quantum Compute-Job ausgeführt oder in einem serverseitigen qiskit-ibm-runtime Batch auf untergeordnete Jobs aufgeteilt werden. Orbit akzeptiert Sampler- und Estimator-PUBs und gibt einen Standard zurück, PrimitiveResult wobei Orbit-spezifische Metadaten dem Ergebnis auf oberster Ebene sowie jedem Ergebnis des „Primitive Unified Bloc“ ( PUB ) beigefügt sind.

Standardverhalten

backend_name Wird weggelassen, wählt Orbit ein geeignetes, am wenigsten ausgelastetes „ IBM Quantum “-Backend aus, das für den „ IBM Quantum “-Compute-Service verfügbar ist. options Wird weggelassen oder None, verwendet Orbit seine integrierten Standardeinstellungen: Schaltkreise werden transpiliert und geplant, die Standard-DD-Strategie wird eingefügt, die Daten werden an den Dienst übermittelt und die Metadaten zur DD-Einfügung werden dem Ergebnis hinzugefügt.


Eingaben

Bei einem typischen Aufruf werden PUBs übermittelt, eine Primitive ausgewählt, optional ein Backend ausgewählt und optional Orbit-spezifische Optionen übergeben:

job = orbit.run(
    primitive="sampler",
    pubs=[pub, pub, pub],
    backend_name="ibm_boston",
    options={
        "pub_options": [
            {"mode": "raw"},
            {"mode": "orbit"},
            {
                "mode": "custom",
                "dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
                "transpilation_mode": "optimize",
                "mem": True,
            },
        ]
    },
)
result = job.result()

pubs stellt die Schaltkreise und die für den Betrieb erforderlichen Eingangsdaten bereit. primitive wählt den Primitivvertrag „ IBM Quantum “ aus. backend_name Wählt das Backend „ IBM Quantum “ aus; diese Angabe kann auch weggelassen werden, damit Orbit ein Backend mit der geringsten Auslastung auswählt. options Steuert die DD-Einfügung in Orbit, die Optionen für Quantencomputing, das Verhalten der Vorschau/des Simulators sowie die Metadaten-Funktionen. Nachstehend finden Sie alle Einzelheiten zu den einzelnen Eingaben.

pubs

Typ: Iterable[SamplerPubLike] or Iterable[EstimatorPubLike]

Ein oder mehrere PUBs, die mit dem ausgewählten Primitiv übereinstimmen.

  • Erforderlich: Ja
  • Zulässige Eingabetypen: Iterable von Objekten vom Typ „Sampler“ PUB oder Iterable von Objekten vom Typ „Estimator“ PUB

Jedes „ PUB “ muss mit dem Eingabevertrag des ausgewählten Primitivs übereinstimmen.

  • primitive="sampler"Für: Jedes „ PUB “ folgt der „Sampler“ PUB -Form, wie zum Beispiel (circuit, parameter_values, shots).
  • primitive="estimator"Für: Jedes PUB folgt der Schätzerform PUB, wie beispielsweise (circuit, observables, parameter_values, precision).
  • Schaltkreise müssen im Standardpfad options.transpilation_mode="optimize" keine ISA-Schaltkreise sein; Orbit transpiliert und plant sie intern.

primitive

Typ: str

Legt fest, welche „ IBM Quantum “-Primitive Orbit zur Ausführung verwendet.

  • Erforderlich: Ja
  • Zulässige Eingabetypen: str

Die Primitive legt fest, welche Elemente jede „ PUB “ enthalten muss und welche Ergebnisdaten jede PubResult zurückgibt.

  • Auswahlmöglichkeiten: "sampler" / "estimator"
  • Verwenden Sie "sampler" für abgetastete Bitstring-Daten.
  • Verwenden Sie "estimator" für Erwartungswerte und Standardfehler.

backend_name

Typ: str or None

Standardwert: None

Name des „ IBM Quantum “-Backends, auf dem das Programm ausgeführt werden soll.

  • Erforderlich: Nein

  • Standardwert: None

  • Zulässige Eingabetypen: str oder None

  • least_busy()Wird dies weggelassen oder None, wählt Orbit ein geeignetes, nicht auf einem Simulator basierendes Backend mit aus.

  • Beispiel: "ibm_boston"

options

Typ: dict or None

Standardwert: None

Funktionsspezifische Optionen zur Steuerung des Ausführungsverhaltens von Orbit.

  • Erforderlich: Nein
  • Standardwert: None
  • Zulässige Eingabetypen: dict oder None

Die Optionen steuern die Transpilierung, das Einfügen von DD, die Optionen für Quantum Compute, die qiskit-ibm-runtime Stapelverarbeitung, den Vorschaumodus, den Simulator-Modus, den Export von Backend-Informationen sowie die Minderung von Messfehlern.

  • Unbekannte Optionsschlüssel werden abgelehnt.
  • Geben Sie None, {}, oder nichts options an, um alle Standardeinstellungen zu verwenden.
  • Beispiel:
{
    "pub_options": [
        {"mode": "raw"},
        {"mode": "orbit"},
        {
            "mode": "custom",
            "dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
            "transpilation_mode": "optimize",
            "mem": True
        }
    ]
}

Optionsliste

preview

Typ: bool

Standardwert: False

Ob Orbit einen DD-Einfügungsbericht zurückgibt, ohne einen Quantum-Compute-Auftrag zu übermitteln.

  • Erforderlich: Nein

  • Standardwert: False

  • Zulässige Eingabetypen: bool

  • In Truediesem Fall wird keine QPU-Zeit verbraucht; Orbit führt lediglich eine Vorverarbeitung der Schaltkreise in pubs durch und liefert einen Einfügebericht.

  • Wenn False (Standardwert) ein Quantum-Compute-Auftrag mit durch Orbit modifizierten Schaltkreisen übermittelt und verarbeitet wird.

  • TrueWenn sowohl preview als auch simulator sind, hat der Vorschaumodus Vorrang und die Ausführung im Simulator wird ignoriert.

debug_return_circuits

Typ: bool

Standardwert: False

Ob im Vorschaumodus die vorbereitete Post-Orbit-Schaltung für jeden „ PUB “ in den Metadaten enthalten ist.

  • Erforderlich: Nein

  • Standardwert: False

  • Zulässige Eingabetypen: bool

  • Wird nur verwendet, wenn preview=True.

  • debugCircuit.circuit``TrueIn jedem „ PUB “-Bericht sind die Anzahl der debugCircuit.usedQubits,, sowie die Anzahl der Vorgänge enthalten. Außerdem wird nach bestem Bemühen debugCircuit.qasm versucht, die Schaltung zu exportieren, sofern Qiskit dazu in der Lage ist.

  • Lassen Sie diese Option bei normalen Durchläufen deaktiviert, da die Datenmengen der Schaltkreise sehr groß sein können.

transpilation_mode

Typ: string

Standardwert: optimize

Wie Orbit die „ PUB “-Schaltkreise vor dem Einfügen der DD vorbereitet.

  • Erforderlich: Nein

  • Standardwert: "optimize"

  • Gültige Eingabewerte: "optimize", "prepare", oder "validate"

  • optimization_level=2``"optimize" führt wiederholte Qiskit-Transpilationen durch und behält den Kandidaten mit der geringsten Zwei-Qubit-Tiefe für statische und dynamische Schaltungen bei.

  • optimization_level=0``"prepare" führt die Qiskit-Vorbereitung und die ALAP-Planung durch. Wird physical_layout angegeben, bildet Orbit die Schaltung zunächst auf diesen physikalischen Leiterbahnindizes ab und verwendet dabei die „trivial layout“-Methode von Qiskit.

  • "validate" geht davon aus, dass die Eingangsschaltung bereits physikalisch eingerichtet ist. Orbit überprüft die Backend-Kompatibilität, soweit dies praktikabel ist, führt vor dem Einfügen in den DD keine Neuzuordnung, Umleitung, Optimierung oder Zeitplananpassung durch und ignoriert physical_layout dies mit einer Warnung.

physical_layout

Typ: object or null

Standardwert: None

Optionale Zuordnung von logischen zu physikalischen Qubits.

  • Erforderlich: Nein
  • Standardwert: None
  • Zulässige Eingabetypen: Objekt mit nicht-negativen ganzzahligen Schlüsseln und Werten oder None

Beispiel: {"0": 85, "1": 89} Ordnet das logische Qubit 0 dem physikalischen Qubit 85 und das logische Qubit 1 dem physikalischen Qubit 89 zu. Python Aufrufer können ganzzahlige Schlüssel verwenden; JSON-Objektschlüssel sind Zeichenketten.

  • Im "optimize" Modus wird dies als anfänglicher Layout-Startwert übergeben, und die endgültige Zuordnung kann sich während der Optimierung/des Routings ändern.
  • Im "prepare" Modus bildet Orbit den Schaltkreis anhand dieser physikalischen Drahtindizes ab und nutzt anschließend die „ level-0 “-Vorbereitung mit layout_method="trivial". Auch bei explizitem Routing können SWAPs während der Ausführung den Quantenzustand verschieben.
  • Im "validate" Modus sind die mitgelieferten Schaltungsleitungen maßgeblich, sodass physical_layout mit einer Warnung ignoriert wird.
num_transpilation_steps

Typ: int

Standardwert: 300

Anzahl der stochastischen Transpilations-Startwerte Orbit-Versuche in transpilation_mode="optimize".

  • Erforderlich: Nein
  • Standardwert: 300
  • Zulässige Eingabetypen: positive ganze Zahl
mem

Typ: bool or None

Standardwert: None

Ob Orbit die Reduzierung von Messfehlern ausschließlich mittels Sampler unter Verwendung von „ M3 “ anwendet.

  • Erforderlich: Nein

  • Standardwert: None

  • Zulässige Eingabetypen: bool oder None

  • samplerWenn True, wird die Minderung von Messfehlern auf Aufnahmen aus angewendet.

  • Wenn False, werden die Aufnahmen nicht nachbearbeitet.

  • NoneIm Orbit-Modus wird MEM für ausgeführte Sampler-PUBs aktiviert, während im Raw- und Custom-Modus MEM übersprungen wird, sofern nicht anders konfiguriert.

  • simulator=False„Explicit“ True setzt primitive="sampler", preview=False, und voraus.

  • Die Rohwerte der Sampler-Zählungen werden beibehalten, und die bereinigten Zählwerte werden den Orbit-Metadaten hinzugefügt.

  • Sollte die Fehlerbehebung während der Nachbearbeitung fehlschlagen, bewahrt Orbit das Rohergebnis auf und vermerkt den Fehlschlag der Fehlerbehebung in den Metadaten.

pub_options

Typ: list[dict] or None

Standardwert: None

Ausführungsmodi und Überschreibungen pro „ PUB “.

  • Erforderlich: Nein

  • Standardwert: None

  • Zulässige Eingabetypen: list[dict] oder None

  • Ein Eintrag wird an alle PUBs gesendet; andernfalls wird ein Eintrag pro „ PUB “ übergeben.

  • {"mode": "raw"} verwendet einen einzigen optimization_level=0 Qiskit-Transpilation- und Scheduling-Durchlauf für statische oder dynamische Schaltungen und überspringt die Orbit-Optimierung, Orbit-DD, dynamisches DD und MEM.

  • {"mode": "orbit"} verwendet die Orbit-Standardeinstellungen.

  • transpilation_mode``{"mode": "custom"} kann, physical_layout, dd_qubits, dd_strategy, dynamic_dd_seq, und mem für diese PUB überschreiben.

  • physical_layout=NoneIm „Raw“-Modus wird transpilation_mode="prepare" immer mit verwendet, „Orbit DD“ wird übersprungen und globale Vorbereitungsoptionen werden ignoriert.

  • Orbit und benutzerdefinierte PUBs übernehmen die globalen Einstellungen transpilation_mode und physical_layout , sofern sie diese nicht gemäß PUB überschreiben.

  • Verwenden Sie duplizierte PUBs mit, pub_options um in einem einzigen Quantum-Compute-Job die Rohdaten, die Orbit-Standardeinstellungen und eine benutzerdefinierte DD-Strategie miteinander zu vergleichen. Für eine naive CPMG-Basislinie verwenden Sie innerhalb {"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1} der benutzerdefinierten „ PUBdd_strategy“.

Verwenden transpilation_mode="validate" Sie für vom Anrufer vorbereitete Verbindungen bei den Orbit-fähigen PUBs:

options = {
    "pub_options": [
        {"mode": "raw"},
        {"mode": "orbit", "transpilation_mode": "validate"},
        {
            "mode": "custom",
            "transpilation_mode": "validate",
            "dd_qubits": None,
            "dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
            "mem": False,
        },
    ]
}
dd_strategy

Typ: list[list[dict]]

Geordnete DD-Strategien zur Anwendung auf „ PUB “-Schaltungen.

  • Erforderlich: Nein

  • Standardwert: [[{"dd_sequence": "auto", "pulse_density": 0.25, "dd_reps": 1}]]

  • Zulässige Eingabetypen: list[list[dict]]

  • Auswahlmöglichkeiten: Eine nicht leere äußere Liste aus nicht leeren Strategielisten.

  • Die äußere Liste verweist auf PUBs oder Schaltkreise. Wird nur eine Strategie angegeben, sendet Orbit diese an alle PUBs.

  • Jede innere Liste wird Runde für Runde auf denselben Schaltkreis angewendet.

  • dd_sequenceFür jede Runde ist erforderlich; pulse_density der Standardwert ist 0.25; dd_reps der Standardwert ist 1.

dd_strategy runde Felder

Typ: str or dict or list

  • dd_sequence Feld: Einzufügende Sequenz für eine DD-Runde.
  • Erforderlich: Ja
  • Zulässige Eingabetypen: str, dict, oder benutzerdefinierte Impulsgruppe list
  • {"name": "ur", "variant": "8"}Auswahlmöglichkeiten: "auto", ein integrierter Sequenzname, ein Variantenwörterbuch wie z. B. oder eine benutzerdefinierte Liste von Impulsgruppen wie z. B. [[0.0], ["Y"], ["Xb", 0.5]].
  • Feste integrierte Namen, geordnet nach Puls-Slots: Sequenzen mit zwei Slots sind "CPMG", "pureY", und "superHahn"; Sequenzen mit vier Slots sind "XY4" und "superCPMG"; Sequenzen mit acht Slots sind "XY8"; Sequenzen mit sechzehn Slots sind "superEuler"; Sequenzen mit zwanzig Slots sind "KDD".
  • Parametrisierte integrierte Familien: "CDD-n" mit einer ganzen Zahl n >= 1 ("CDD-1" entspricht "XY4" und die Folge wächst rekursiv); "UR-n" oder "URn" mit einer geraden ganzen Zahl n >= 4 (zum Beispiel "UR-8" oder "URn8"); sowie "T-n" oder "Tn" mit einer geraden ganzen Zahl n >= 2 (zum Beispiel "T-8" oder "Tn8").
  • RGA-Einbauvarianten: "RGA-2x", "RGA-4", "RGA-4p", "RGA-8a" "RGA-8c", "RGA-16a", "RGA-16b",, "RGA-32a", "RGA-32c", "RGA-64a", "RGA-64c", und "RGA-256a".
  • Bei den integrierten Sequenznamen wird die Groß-/Kleinschreibung nicht berücksichtigt, und Trennzeichen wie Bindestriche und Unterstriche werden ignoriert. Beispielsweise sind und "rga8a" gleichwertig, "RGA-8a" ebenso wie "UR-n-8" und "UR8".
  • Benutzerdefinierte numerische Eingaben sind Phasen in Pi-Einheiten für Pi-Drehungen in der xy-Ebene. 0.0 ist +X und 0.5 ist +Y.
  • Zu den benutzerdefinierten String-Aliasen gehören "X", "Y", "Xb", und "Yb".

Typ: float

  • Feld: pulse_density Anteil der jeweiligen Leerlauflücke, der für die DD-Impulse dieser Runde zur Verfügung steht.
  • Erforderlich: Nein
  • Standardwert: 0.25
  • Zulässige Eingabetypen: float oder int
  • Auswahlmöglichkeiten: Von 0.0 bis schweben 1.0
  • 0.0 lässt die Lücken in dieser Runde ungefüllt. 1.0 packt Impulse so dicht, wie es der Zeitablauf der Sequenz zulässt.

Typ: int

Standardwert: 1

  • Feld: dd_reps Anzahl der Wiederholungen der DD-Sequenz dieser Runde innerhalb jeder zulässigen Leerlaufpause.
  • Erforderlich: Nein
  • Standardwert: 1
  • Zulässige Eingabetypen: int
  • Auswahlmöglichkeiten: Ganzzahl >= 1
dynamic_dd_seq

Typ: str or dict or list or None

Standardwert: XY8

DD-Sequenz, die für die dynamische Schaltkreis-Feedforward-DD-Einfügung von Orbit verwendet wird.

  • Erforderlich: Nein

  • Standardwert: "XY8"

  • Zulässige Eingabetypen: str, dict, benutzerdefinierte Impulsgruppe list oder None

  • Optionen: Die gleiche Sequenz wie dd_strategy[].dd_sequence, oder None wird gebildet, um die dynamische Feedforward-Einfügungsstufe zu deaktivieren.

  • Gilt, wenn Orbit bedingte Logik oder Kontrollflüsse erkennt und die DD-Pipeline für dynamische Schaltungen verwendet.

  • Zunächst wird der normale dd_strategy Durchlauf ausgeführt, anschließend wendet Orbit diese Sequenz auf die gekennzeichneten dynamischen Feedforward-Bereiche an.

dd_qubits

Typ: list[int] or None

Standardwert: None

Globale Standard-Zulassungsliste der Qubit-Indizes, die für die Einfügung in Orbit DD in Frage kommen.

  • Erforderlich: Nein

  • Standardwert: None

  • Zulässige Eingabetypen: list[int] oder None

  • Möglichkeiten: None oder eine Liste von ganzen Zahlen >= 0

  • None zielt ausschließlich auf aktive bzw. berührte Qubits ab.

  • Eine Liste kann ausschließlich inaktiv befindliche Qubits enthalten und schließt nicht aufgeführte Qubits aus.

  • pub_options[i].dd_qubits Dieser Wert kann in orbit den Einträgen unter oder custom „ PUB “ überschrieben werden.

  • "validate"Explizite Zulassungslisten dürfen nur für Orbit-fähige PUBs bereitgestellt werden, deren aufgelöster Wert transpilation_mode ist, sodass der Aufrufer Eigentümer der physikalischen Qubit-Indizes ist. dd_qubitsRaw-PUBs überspringen Orbit DD und akzeptieren keine.

save_backend_info

Typ: bool

Standardwert: False

Ob Orbit die Kalibrierungseigenschaften des Backends nach der Ausführung eines Quantum-Compute-Jobs speichert.

  • Erforderlich: Nein

  • Standardwert: False

  • Zulässige Eingabetypen: bool

  • Auswahlmöglichkeiten: True / False

  • service.job(job_id).properties()Wenn diese Option aktiviert ist, fragt Orbit die Daten ab, schreibt die serialisierten Backend-Eigenschaften unter ab /dataund meldet den gespeicherten Pfad in den Orbit-Metadaten.

  • Im Batch-Modus erstellt Orbit für jeden untergeordneten Job einen Snapshot und meldet diese in backendInfo.snapshots.

  • Fehler werden als Warnungen gemeldet und führen nicht dazu, dass ansonsten erfolgreiche Ergebnisse der Primitiven verworfen werden.

default_shots

Typ: int

Standardwert: 4096

Standard-Shots für Sampler-PUBs, in denen keine Shots ausdrücklich angegeben sind.

  • Erforderlich: Nein

  • Standardwert: 4096

  • Zulässige Eingabetypen: int

  • Auswahlmöglichkeiten: Ganzzahl > 0

  • Gilt nur für primitive="sampler".

default_precision

Typ: float

Standardwert: 0.015625

Standardmäßige Zielgenauigkeit für Estimator-PUBs, bei denen die Genauigkeit nicht explizit angegeben ist.

  • Erforderlich: Nein

  • Standardwert: 0.015625

  • Zulässige Eingabetypen: float oder int

  • Auswahlmöglichkeiten: Float > 0

  • Gilt nur für primitive="estimator".

runtime_options

Typ: dict

IBM Quantum Primitive Optionen, die an die zugrunde liegende Primitive „ SamplerV2 “ oder „ EstimatorV2 “ weitergegeben werden.

  • Erforderlich: Nein

  • Standardwert: {"resilience_level": 0, "dynamical_decoupling": {"enable": false}}

  • Zulässige Eingabetypen: dict

  • Verschachtelte Optionswörterbücher werden akzeptiert, einschließlich erweiterter und experimenteller Optionen für die ausgewählte Primitive.

  • Die dynamische Entkopplung zur Laufzeit ist standardmäßig deaktiviert, sodass der DD-Einfügevorgang von Orbit der einzige DD-Durchlauf ist, sofern der Benutzer diese Funktion nicht aktiviert.

Erfahrene Sampler-Anwender können beispielsweise Felder zur Fehlersuche in dynamischen Schaltkreisen aktivieren:

options = {
    "runtime_options": {
        "experimental": {
            "execution": {
                "scheduler_timing": True,
                "stretch_values": True,
            }
        }
    }
}
  • Warnung: Man sollte diesen Wert daher mit Bedacht ändern und bestimmte Funktionen wie das Twirling manuell aktivieren, während DD weiterhin ausgeschlossen bleibt.

resilience_level

Typ: int or None

Standardwert: 0

Ausfallsicherheitsstufe der Schätzroutine.

  • Erforderlich: Nein

  • Standardwert: 0

  • Zulässige Eingabetypen: int oder None

  • Auswahlmöglichkeiten: 0 / 1 / 2 / None

  • Gilt für primitive="estimator".

  • Verwenden None Sie, um die Option „Runtime“ nicht festzulegen.

  • primitive="sampler"Wenn diese Option auf gesetzt ist, ignoriert Orbit sie und fügt eine Warnung zu den Orbit-Metadaten hinzu.

dynamical_decoupling

Typ: dict

Optionen zur dynamischen Entkopplung wurden an Quantum Compute weitergeleitet.

  • Erforderlich: Nein
  • Standardwert: {"enable": false}
  • Zulässige Eingabetypen: dict

enable

Typ: bool

Standardwert: False

Ob qiskit-ibm-runtime DD zusätzlich zur Orbit-DD-Einfügung aktiviert werden soll.

  • Erforderlich: Nein

  • Standardwert: False

  • Zulässige Eingabetypen: bool

  • Auswahlmöglichkeiten: True / False

  • Wenn diese Option aktiviert ist, gibt Orbit eine Warnung aus, da die gleichzeitige Anwendung von Runtime DD und Orbit DD zu unerwartetem Verhalten führen kann.

sequence_type

Typ: str or None

Standardwert: None

Optionaler DD-Sequenztyp zur Laufzeit.

  • Erforderlich: Nein
  • Standardwert: None
  • Zulässige Eingabetypen: str oder None

Wird an Quantum Compute weitergeleitet, sobald es bereitgestellt wird.

scheduling_method

Typ: str or None

Standardwert: None

Optionale Methode zur DD-Planung zur Laufzeit.

  • Erforderlich: Nein
  • Standardwert: None
  • Zulässige Eingabetypen: str oder None

Wird an Quantum Compute weitergeleitet, sobald es bereitgestellt wird.

extra_slack_distribution

Typ: str or None

Standardwert: None

Optionale „DD extra-slack“-Distribution für die Laufzeitumgebung.

  • Erforderlich: Nein
  • Standardwert: None
  • Zulässige Eingabetypen: str oder None

Wird an Quantum Compute weitergeleitet, sobald es bereitgestellt wird.

skip_reset_qubits

Typ: bool or None

Standardwert: None

Optionale Runtime-DD-Einstellung, die steuert, ob Reset-Qubits übersprungen werden.

  • Erforderlich: Nein
  • Standardwert: None
  • Zulässige Eingabetypen: bool oder None

Wird an Quantum Compute weitergeleitet, sobald es bereitgestellt wird.

max_execution_time

Typ: int or None

Standardwert: None

Weiche Obergrenze für die maximale Ausführungszeit jedes „Quantum Compute“-Primitiv-Jobs.

  • Erforderlich: Nein
  • Standardwert: None
  • Zulässige Eingabetypen: int oder None

Der Wert wird in Sekunden angegeben.

  • Möglichkeiten: None oder eine ganze Zahl > 0
  • In None diesem Fall wird die Standard-Laufzeit verwendet.
  • Im Batch-Modus wird die Obergrenze auf jeden untergeordneten Primitiv-Job angewendet.
batch

Typ: dict or None

Standardwert: None

Serverseitige qiskit-ibm-runtime Batch -Konfiguration.

  • Erforderlich: Nein

  • Standardwert: None

  • Zulässige Eingabetypen: dict oder None

  • Wenn diese Angabe weggelassen wird oder None, übermittelt Orbit alle vorbereiteten PUBs als einen einzigen „Quantum Compute“-Primitiv-Job.

  • Bei der Übergabe teilt Orbit die vorbereiteten PUBs in der Reihenfolge ihrer Eingabe auf, erstellt den authentifizierten Batch innerhalb der Remote-Funktion, übermittelt alle untergeordneten Jobs, schließt den Batch und sammelt und führt anschließend die Ergebnisse der untergeordneten Jobs in der ursprünglichen Reihenfolge von „ PUB “ zusammen.

  • Der Batch-Modus ist für eigenständige Arbeitslasten vorgesehen, deren PUBs im Voraus bekannt sind, wie beispielsweise Parameterdurchläufe oder die Erstellung von Kurven. Verwenden Sie stattdessen den Sitzungsmodus, wenn spätere Eingaben von früheren Ergebnissen abhängen.

  • Der Batch-Modus erfordert die Ausführung auf einem echten „ IBM Quantum “-Backend und ist nicht kompatibel mit oder preview=True simulator=True.

  • Die Konfiguration muss JSON-serialisierbar sein. Erstellen Sie kein lokales qiskit_ibm_runtime.Batch Objekt und übergeben Sie es nicht an orbit.run(...); ein vom Aufrufer erstellter Batch kann die asynchrone Ausführungsumgebung von Qiskit-Funktionen nicht steuern.

  • Wenn der Wert von „ PUB “ kleiner oder gleich ist max_pubs_per_job, erstellt Orbit einen untergeordneten Job, und der Batch bietet keine Partitionsparallelität.

max_pubs_per_job

Typ: int

Maximale Anzahl aufeinanderfolgender PUBs, die in jedem untergeordneten Job übermittelt werden dürfen.

  • Erforderlich: Ja, wenn angegeben batch wird
  • Zulässige Eingabetypen: int
  • Auswahlmöglichkeiten: Ganzzahl > 0

Für jede N Eingabe-PUB erstellt Orbit einen untergeordneten ceil(N / max_pubs_per_job) Job. Der letzte untergeordnete Job kann weniger PUBs enthalten.

max_time

Typ: int or str or None

Standardwert: None

Optionale maximale Lebensdauer der Charge qiskit-ibm-runtime .

  • Erforderlich: Nein

  • Standardwert: None

  • Gültige Eingabetypen: int, str, oder None

  • Eine positive ganze Zahl gibt die Sekunden an, zum Beispiel 7200.

  • Eine Zeitangabe besteht aus einem oder mehreren Paaren aus einer positiven Zahl und einer Einheit, wobei s, m, h, oder verwendet werden d, wie beispielsweise "2h" oder "1h30m".

  • Eine Zahlenfolge wie ist "7200" ungültig; verwende stattdessen 7200 die Ganzzahl.

Beispielsweise unterteilt der folgende Aufruf ordered_pubs in Unteraufträge mit jeweils höchstens 300 PUBs, die alle innerhalb eines Batches ausgeführt werden:

job = orbit.run(
    primitive="sampler",
    pubs=ordered_pubs,
    backend_name="ibm_brisbane",
    options={
        "batch": {
            "max_pubs_per_job": 300,
            "max_time": "2h",
        }
    },
)

result = job.result()
batch_report = result.metadata["quantum_elements_orbit"]["batch"]
simulator

Typ: bool

Standardwert: False

Ob Orbit die Arbeitslast auf einem lokalen Aer-Simulator statt auf einer echten QPU ausführt.

  • Erforderlich: Nein
  • Standardwert: False
  • Zulässige Eingabetypen: bool

Der Simulator läuft innerhalb des Funktionscontainers.

  • Auswahlmöglichkeiten: True / False
  • TrueWird ignoriert, wenn preview ist.
  • Es wird ein „normal“ PrimitiveResult zurückgegeben, dem Orbit-Metadaten beigefügt sind.
simulator_noise

Typ: str

Standardwert: backend

TrueDas Rauschmodell wird verwendet, wenn simulator ist.

  • Erforderlich: Nein

  • Standardwert: "backend"

  • Zulässige Eingabetypen: str

  • Auswahlmöglichkeiten: "backend" / "ideal"

  • "backend" verwendet AerSimulator.from_backend(backend) , wann immer möglich.

  • "ideal" verwendet ein einfaches, rauschfreies AerSimulator.

gate_dur

Typ: int or None

Standardwert: None

Dauer eines DD-Gates oder -Impulses.

  • Erforderlich: Nein

  • Standardwert: None

  • Zulässige Eingabetypen: int oder None

  • Warnung: Verwenden Sie einen expliziten Wert nur für kontrollierte Tests oder wenn Sie einen kalibrierten, backend-spezifischen Grund dafür haben.

  • Der Wert wird in denselben Einheiten angegeben, die das Backend für Verzögerungen verwendet, in der Regel dt.

  • Möglichkeiten: None oder eine ganze Zahl > 0

  • In None diesem Fall ermittelt Orbit einen backend-abhängigen Wert aus backend.target unter Verwendung der längeren kalibrierten X- oder sqrt(X)-Gate-Dauer.


Ausgaben

Die Funktion gibt ein Qiskit zurück, das für PubResult jeden Eingangs PUB einen enthält PrimitiveResult . Orbit speichert die Normaldaten des ausgewählten Primitivs und fügt unter quantum_elements_orbit. Orbit-Metadaten hinzu. Im Batch-Modus werden die Ergebnisse der untergeordneten Jobs so zusammengeführt, dass die Anzahl und Reihenfolge der zurückgegebenen „ PUB “ mit den ursprünglichen Eingabe-PUBs übereinstimmen, unabhängig von den Grenzen der untergeordneten Jobs.

Typ: PrimitiveResult

Standardmäßig PrimitiveResult mit angehängten Orbit-Metadaten.

  • Denn primitive="sampler" jedes PubResult.data enthält Sampler-Ergebnisdaten wie beispielsweise Bit-Arrays des klassischen Registers.
  • Denn primitive="estimator" jedes PubResult.data enthält Schätzungsergebnisse wie Erwartungswerte und Standardfehler.
  • Im Vorschaumodus ist PubResult.data jedes Feld leer, da kein „ IBM Quantum “-Primitiv übermittelt wurde.

Metadaten der obersten Ebene

metadata["quantum_elements_orbit"]

Typ: dict[str, Any]

Aggregierter Orbit-Bericht für den gesamten Funktionsaufruf.

functionVersion

Typ: str

Orbit-Core-Version, mit der das Ergebnis erzielt wurde.

preview

Typ: bool

Ob das Ergebnis im Vorschaumodus erstellt wurde.

simulator

Typ: bool

Ob der Simulator-Modus angefordert wurde.

simulatorNoise

Typ: str

Geräuschmodus des Simulators: "backend" oder "ideal".

executionMode

Typ: str

Wert angeben, "batch" wenn Orbit die serverseitige qiskit-ibm-runtime Stapelverarbeitung verwendet.

batch

Typ: dict[str, Any]

Im Batch-Modus anzeigen. Enthält die Runtime-Batch-ID in id, sortierte IDs der untergeordneten Jobs jobIds in und sortierte Partitionsdatensätze in partitions. Jeder Partitionsdatensatz enthält index, pubStart, pubCount, und jobId.

primitive

Typ: str

Ausgewählte Primitive: "sampler" oder "estimator".

ddStrategy

Typ: list[list[dict]]

Für den Lauf wurde eine normalisierte DD-Strategie verwendet.

pubOptions

Typ: list[dict[str, Any]]

Ausführungsmodi und Überschreibungen pro „ PUB “ wurden geklärt. ddStrategy``transpilationModeJeder Eintrag enthält den Index „ PUB “, den Modus, „resolved“, physicalLayout, mem, orbitEnabled ddQubits, dynamicDdSeq,, sowie gegebenenfalls den Wert „resolved“ pro „ PUB “.

dynamicDdSeq

Typ: str or dict or list or None

Für den Lauf wurde eine DD-Sequenz mit dynamischer Schaltung und Vorwärtskopplung verwendet.

ddQubits

Typ: list[int] or None

Für den Lauf verwendete globale DD-Qubit-Standardzulassungsliste. Die Berichte unter „Per- PUB “ enthalten die endgültige Zulassungsliste für jeden „ PUB “.

runtimeOptions

Typ: dict[str, Any]

Laufzeitoptionen, die Orbit anzuwenden versuchte, darunter resilienceLevel und dynamicalDecoupling.

transpilationMode

Typ: string

Für Orbit-fähige PUBs wurde der globale Schaltungsvorbereitungsmodus angefordert.

physicalLayout

Typ: dict or None

Für Orbit-fähige PUBs wird eine globale Zuordnung vom logischen zum physikalischen Layout angefordert.

numTranspilationSteps

Typ: int

Anzahl der für die optimierte Transpilierung konfigurierten stochastischen Transpilierungs-Startwerte.

backendInfo

Typ: dict[str, Any]

Status des Exports der Backend-Kalibrierung. Enthält enabled, saved, sowie – sofern verfügbar – den Backend-Namen, die Job-ID, den Speicherpfad und Warnungen. Im Batch-Modus enthält snapshots [Datei] einen Exportbericht für jeden untergeordneten Job pro Partition.

warnings

Typ: list[str]

Warnungen auf Laufebene, wie z. B. das Überschreiben des Simulator-Modus durch die Vorschau, die gleichzeitige Aktivierung von Runtime DD und Orbit DD oder das Ignorieren von resilience_level. durch den Sampler.

pubs

Typ: list[dict[str, Any]]

Pro Eingabe- PUB ein Bericht über den Eintritt in die Umlaufbahn.

metadata["resource_usage"]

Typ: dict[str, dict[str, float]]

Ressourcenauslastung pro Phase mit Einträgen zur Hardware-Optimierung, zum Warten auf die QPU, zur QPU-Ausführung und zur Nachbearbeitung.

  • Zu den Phasen gehören RUNNING: OPTIMIZING_FOR_HARDWARE, RUNNING: WAITING_FOR_QPU, RUNNING: EXECUTING_QPU, und RUNNING: POST_PROCESSING.
  • RUNNING: EXECUTING_QPU umfasst QPU_TIME.

Stapelausgabe

Bei einem Batch-Lauf result.metadata["quantum_elements_orbit"]["batch"] wird jeder zurückgegebene Bereich von „ PUB “ dem untergeordneten Job zugeordnet, der ihn ausgeführt hat:

result = job.result()
orbit_report = result.metadata["quantum_elements_orbit"]
batch_report = orbit_report["batch"]

print(orbit_report["executionMode"])  # "batch"
print(batch_report["id"])
print(batch_report["jobIds"])

for partition in batch_report["partitions"]:
    start = partition["pubStart"]
    stop = start + partition["pubCount"]
    child_results = list(result)[start:stop]
    print(partition["index"], partition["jobId"], start, stop)

job.runtime_jobs() stellt die IDs der untergeordneten Jobs über den Qiskit-Function-Job bereit und job.runtime_sessions() stellt die Batch-ID bereit. Die Batch-Metadaten werden mit dem übermittelt PrimitiveResult. Verwenden Sie diese daher, wenn bei einer späteren Analyse PUBs den untergeordneten Jobs zugeordnet werden müssen, ohne das ursprüngliche „Function“-Job-Objekt beizubehalten.

Wenn Orbit versucht save_backend_info=True, pro untergeordnetem Job einen Snapshot zur Backend-Kalibrierung zu erstellen, und die Erfassung auf der obersten Ebene meldet backendInfo.snapshots. Wenn MEM für Sampler-PUBs aktiviert ist, verwendet Orbit den Kalibrierungs-Snapshot jedes untergeordneten Jobs für die PUBs in dieser Partition, bevor die Ergebnisse erneut zusammengeführt werden.

Der Eintrag zur Ressourcenauslastung RUNNING: EXECUTING_QPU gibt die Summe der verfügbaren QPU-Zeiten der untergeordneten Jobs an. Untergeordnete Prozesse, für die keine QPU-Zeitdaten vorliegen, können dazu führen, dass diese Messung unvollständig ist.

Metadaten zu „Per- PUB -Orbit“

Jede Datei PubResult.metadata["quantum_elements_orbit"] enthält den Einfügungsbericht für die jeweilige „ PUB “.

pubIndex

Typ: int

Index des „ PUB “ in der übermittelten Arbeitslast.

mode

Typ: str

Aufgelöster Ausführungsmodus pro „ PUB “: "raw", "orbit", oder "custom".

orbitEnabled

Typ: bool

Ob die Orbit-DD-Einfügung für die „ PUB “ aktiviert war.

transpilationMode

Typ: string

Der Modus zur Schaltungsvorbereitung für diese PUB wurde festgelegt.

physicalLayout

Typ: dict or None

Die Zuordnung vom logischen zum physikalischen Layout für dieses PUB wurde festgelegt. Im validate Modus wird dieser Wert ignoriert, wobei eine Warnung ausgegeben wird.

mem

Typ: bool or None

Einstellung zur Minderung von Messfehlern für dieses PUB festgelegt.

dynamicDdSeq

Typ: str or dict or list or None

Aufgelöste DD-Sequenz mit dynamischer Schaltung und Vorwärtskopplung für diesen PUB.

ddQubits

Typ: list[int] or None

Die Liste der zulässigen DD-Qubits für dieses PUB wurde festgelegt.

status

Typ: str

Status der DD-Einfügung für diese „ PUB “, z. B. ob DD angewendet oder übersprungen wurde.

numRounds

Typ: int

Anzahl der DD-Strategierunden, die auf die „ PUB “ angewendet wurden.

warnings

Typ: list[str]

PUB -Stufe-Warnungen im Zusammenhang mit der Einfügung von DD und der Kompatibilitätsbehandlung.

insertionSummary

Typ: dict[str, Any]

Gesamtübersicht über die DD-Einfügungen für diese „ PUB “. Umfasst den Status, die Anzahl der anfänglichen und gefüllten Lücken, die Anzahl der hinzugefügten DD-Sequenzen, die Anzahl der hinzugefügten Gatter, die Gatterdauer, die Schaltungstiefe und -größe vor und nach der Einfügung sowie Einfügungswarnungen.

perRoundSummaries

Typ: list[dict[str, Any]]

Zusammenfassungen der DD-Einfügungen nach Runden. Jeder Eintrag enthält den Rundenindex, die Sequenz, die Impulsdichte, die Wiederholungsanzahl, die Anzahl der Pausen, die Anzahl der hinzugefügten Gates, die Gate-Dauer, die Schaltungstiefe und -größe vor und nach dieser Runde sowie Warnmeldungen.

measurementErrorMitigation

Typ: dict[str, Any]

Liegt vor, wenn „Resolved MEM“ für mindestens einen „ PUB “ aktiviert ist. Gibt an, ob die „ M3 “-Abwehrmaßnahme angewendet, teilweise angewendet, übersprungen oder fehlgeschlagen ist. Per- PUB -Einträge behalten die Zahlen vor der Minderung bei und beziehen die geminderten Zahlen mit ein, wenn die Minderung erfolgreich ist.

Schaltungstiefe nach DD

DD fügt echte Impulse und Teilverzögerungen in geplante Leerlauffenster ein, sodass sich die gemeldete Schaltungstiefe und -größe in der Regel erhöhen. Bei der Einfügung wird die geplante Dauer des Leerlauffensters beibehalten; die Gate-Tiefe wird dabei nicht beibehalten.

Vorschau der Ausgabe

Wenn gilt options.preview``True , gibt Orbit ein reines Metadaten-Objekt zurück PrimitiveResult. Es wird kein Quantum-Compute-Auftrag übermittelt, es werden keine Sampler-Zählwerte oder Estimator-Werte ausgefüllt, und die QPU-Zeit wird als 0.0. gemeldet. Verwenden Sie den Vorschaumodus, um DD-Einfügungsberichte zu überprüfen, bevor Sie sie auf der Hardware ausführen.

Simulatorausgabe

FalseWenn options.simulator gilt True und options.preview ist, führt Orbit die Post-DD-Workload mit einem lokalen Aer-Simulator innerhalb des Funktionscontainers aus. Das Ergebnis ist nach wie vor ein normaler PrimitiveResult; Orbit-Datensatz simulator=True und der ausgewählte simulatorNoise Modus in den Metadaten der obersten Ebene.

Ergebnis der Minderung von Messfehlern

Wenn für mindestens eine „ PUB “ die Funktion „MEM“ aktiviert ist, fügt measurementErrorMitigation Orbit Metadaten hinzu. Wenn MEM erfolgreich ist, gibt die Methode des get_counts() Sampler-Registers das MEM-korrigierte Histogramm zurück. Die unbereinigten Laufzeitwerte stehen weiterhin als measurementErrorMitigation["rawCounts"]. zur Verfügung.

Zu den erfolgreichen Einträgen zur Abwehr von „Per- PUB “-Angriffen gehören:

  • enabled
  • method
  • status
  • register
  • rawCounts
  • quasiDistribution
  • mitigatedCounts
  • measurementMapping
  • mappingSource
  • rawCountsPreserved

Bei dynamischen Schaltungen wendet Orbit MEM auf die zurückgegebene Ausgangsbitstring als Histogramm-Nachbearbeitung an. Orbit lässt keine Rückschlüsse darauf zu, ob jedes Bit aus einer Endmessung oder einer Messung in der Schaltung stammt, und es ändert weder nachträglich noch in Echtzeit bedingte Verzweigungen, bei denen unbearbeitete Messergebnisse verwendet wurden. Diese Behandlung eignet sich für Bitfolgen, die als Schaltungsausgänge gedacht sind; Benutzer sollten sie jedoch nicht als Korrektur des dynamischen Kontrollflusses interpretieren, der diese Ausgänge erzeugt hat.

Sollte die Fehlerbehebung fehlschlagen, speichert Orbit das Rohergebnis und protokolliert den Fehlerstatus sowie die Fehlermeldung in den Metadaten.


Fehlerbehandlung

Orbit löst bei schwerwiegenden Fehlern strukturierte qiskit_serverless.ServerlessError Fehler aus. Jeder Fehler enthält eine code, message, und Nutzlast details . Orbit ordnet Fehler nach Möglichkeit den bestehenden Fehlerkategorien von IBM Quantum zu; für Validierungsfehler wird der Code verwendet 1221. Orbitspezifische Fehler nutzen den für QE reservierten Code-Bereich 4700 bis 4709 nur dann, wenn kein vorhandener „ IBM Quantum “-Code besser passt. Allgemeine Hinweise zu Fehlercodes finden Sie in der Fehlercode-Übersicht unter „ IBM Quantum “.

Häufige schwerwiegende Fehler

Überprüfen Sie zunächst die Felder details „Fehler“ message und „“. Sie identifizieren das ungültige Feld, das Backend, den „ PUB “-Index oder einen Fehler im vorgelagerten Quantum Compute, sofern Orbit dies feststellen kann.

  • Bei Fehlern bei der Eingabevalidierung wird der Code verwendet 1221. Dazu gehören ungültige Optionstypen, unbekannte Optionsschlüssel, leere pubs, ungültige dd_strategy, ungültige pub_options Längen, dd_qubits bei denen die Auflösung anders transpilation_mode als ist "validate", vom Aufrufer vorbereitete Verbindungen, die nicht mit dem ausgewählten Backend-Ziel kompatibel sind, ungültige physical_layout Werte, ein fehlender oder nicht-positiver Wert batch.max_pubs_per_job, ein ungültiger Wert batch.max_time, der Batch-Modus in Kombination mit dem Vorschau- oder Simulator-Modus sowie inkompatible MEM-Anforderungen wie mem=True mit primitive="estimator"``preview=True, oder simulator=True.
  • 1211Bei Fehlern aufgrund nicht unterstützter Primitive wird der Code verwendet. Orbit akzeptiert nur primitive="sampler" und primitive="estimator".
  • 1009Bei Fehlern bei der Backend-Auswahl oder bei der Backend-Funktionalität wird der Code 1007 oder verwendet. Dazu gehören nicht verfügbare Backend-Namen, das Fehlen eines geeigneten, am wenigsten ausgelasteten Backends oder ein Backend, das nicht über die für die DD-Einfügung erforderlichen Zeitangaben verfügt.
  • Für DD-Einfügung, Basisübersetzung nach DD, Transpilierung und QASM-Roundtrip-Fehler wird der Code verwendet 1003. Diese können auftreten, wenn eine Schaltung für das ausgewählte Backend und die ausgewählte DD-Strategie nicht konsistent transpiliert, eingeplant, konvertiert oder aufgefüllt werden kann.
  • Bei Fehlern bei der Übermittlung von Quantum-Compute-Aufträgen wird der Code verwendet 1245; bei Aufträgen, die fehlschlagen, bevor ein Ergebnis erzeugt wird, wird der Code verwendet 5203. Orbit speichert einen von einer vorgelagerten Quantum-Compute-Instanz zurückgegebenen Fehlercode, sobald ein solcher auftritt, wobei der Orbit-Fallback-Code in details. enthalten ist. Bei Batch-Fehlern details können auch batch_id, failed_partition, failed_job_id, completed_job_ids, und enthalten sein remaining_job_ids.
  • Fehler bei der Vorbereitung vor der Übermittlung an Orbit, bei denen es sich nicht um Eingabe-, Backend- oder DD-Fehler handelt, werden mit dem QE-Code gekennzeichnet 4701. Das Feld details.stage kennzeichnet die Grenze, beispielsweise oder runtime_service pre_submit_preparation.
  • Fehler bei der Ergebnisgestaltung von Umlaufbahnen nutzen den QE-Code 4702. Diese treten auf, wenn Quantum Compute ein Ergebnis mit einer falschen „ PUB “-Form zurückgibt oder Orbit die erforderlichen Metadaten nicht anhängen kann; details.stage identifiziert result_iteration, result_shape, pub_metadata, result_metadata, oder batch_result_merge.
  • Die QE-Codes bis 4703 4709 sind für zukünftige Orbit-spezifische Kategorien reserviert und derzeit nicht vergeben.

Nicht schwerwiegende Fehler werden als Warnungen gemeldet, anstatt den Auftrag abzubrechen, sofern Orbit das Ergebnis sicher beibehalten kann. Warnungen auf Run-Ebene werden unter PUB angezeigt metadata["quantum_elements_orbit"]["warnings"]– Warnungen auf Level-Ebene erscheinen in jedem Bericht unter PUB. Warnereignisse, die wiederhergestellt werden können, verwenden den Code, wenn 1300 die Umgebung „ Qiskit Functions “ Warnereignisse akzeptiert. Beispiele hierfür sind: preview=True hat Vorrang vor simulator=True, qiskit-ibm-runtime DD ist neben Orbit DD aktiviert, der Sampler ignoriert oder der Export der Backend-Kalibrierung schlägt fehl runtime_options.resilience_level, obwohl das Ergebnis der Primitive ansonsten verfügbar ist.

Auch Fehler bei der Minderung von Messfehlern sind nicht schwerwiegend. Wenn die „ M3 “-Abwehr nicht angewendet werden kann, speichert Orbit das Rohergebnis des Samplers und protokolliert measurementErrorMitigation.status="failed" dies zusammen mit einer Fehlermeldung in den Orbit-Metadaten.

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