Skip to main content
IBM Quantum Platform

GateFolding

class GateFolding

GitHub

Basen: MitigationTask

Berechnet Erwartungswerte von Observablen unter Verwendung der Zero-Noise-Extrapolation (ZNE) mit einer Methode zur Minderung von Gate-Folding-Effekten.

Die Vorlesung vermittelt die Erstellung einer „ QuantumProgram “ mit einer Schaltung, die mithilfe von ZNE und der Gate-Folding-Methode optimiert wurde. Diese kann auf Hardware mithilfe des Executors ausgeführt werden, und die Ergebnisse können nachbearbeitet werden, um optimierte Erwartungswerte für bestimmte Observablen zu berechnen. Die Aufgabenparameter sollten als Eingabe an die Funktion „prepare“ übergeben werden, und die für die Nachbearbeitung benötigten Variablen werden intern gespeichert:

gf_task = GateFolding()
program = gf_task.prepare(circuit=circuit,
                       observables=observables,
                       parameters=parameter_values,
                       noise_factors=noise_factors_array,
                       extrapolator=extrapolators_list)
job = executor.run(program)
results = job.result()
mitigated_result = gf_task.postprocess(results)

Um Erwartungswerte für das Ergebnis eines geladenen Jobs zu berechnen, kann aus den Job-Ergebnissen eine „ GateFolding “-Aufgabe erstellt werden, die alle für die Nachbearbeitung erforderlichen internen Variablen enthält. Alternativ können die für die Nachbearbeitung benötigten Variablen direkt als Eingabe an die statische compute_expectation_value Methode übergeben werden. Beispiel für die Durchführung einer Nachbearbeitung eines geladenen Ergebnisses:

gf_task = GateFolding()
program = gf_task.prepare(circuit=circuit,
                       observables=observables,
                       parameters=parameter_values,
                       noise_factors=noise_factors_array,
                       extrapolator=extrapolators_list)
job_id = executor.run(program).job_id

job = service.job(job_id)
results = job.result()
gf_task = load_tasks_from_result(results)[0]
mitigated_result = gf_task.postprocess(results)

Eine „ GateFolding “-Aufgabe instanziieren.


Attribute

VERSION

Standardwert: '0.1'


Methoden

compute_expectation_value

static compute_expectation_value(item_result, observables, param_shape=None, param_basis_pairs=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None)

GitHub

Erwartungswerte für das Ergebnis eines einzelnen Elements.

Mit dieser Funktion lassen sich Erwartungswerte für das Ergebnis eines einzelnen, nicht gemilderten Elements berechnen, ohne dass eine neue Klasseninstanz instanziiert werden muss.

Parameter

  • item_result (QuantumProgramItemResult) – Das Ergebnis des Artikels.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Die Observablen, für die Erwartungswerte berechnet werden sollen.
  • param_shape (tuple[int, ...] | None) – Die Form der Parameterwerte.
  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – Die Zuordnung zwischen den Parametern und den Indizes zur Messung der Basis.
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Eine Liste der gemessenen Pauli-Basen. Der -te i Eintrag ist eine Messbasis, von der angenommen wird, dass sie der -ten i Scheibe der Daten in entspricht item_result.
  • broadcast_obs_and_params (bool) – Ob Observables und Parameterwerte übertragen werden sollen.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Kalibrierungsdaten zum Messrauschen für die TREX-Minderung.

Rückgabe

Ein „ PubResult “, der in seinen Daten die std Felder und evs enthält, wobei Erwartungswerte evs sind und die Standardabweichungen der Erwartungswerte std sind. Wenn auf „True“ gesetzt broadcast_obs_and_params ist, enthalten die Daten zusätzlich ein Feld twirl_stds , das die Standardabweichung zwischen den verschiedenen Randomisierungen angibt.

Erhöhungen

  • ValueError – Wenn keinen '_meas' Schlüssel item_result hat.
  • ValueError – Wenn eine ungültige Anzahl von Achsen item_result['_meas'] aufweist.
  • ValueError – Wenn und param_shape nicht observables.shape gegeneinander ausgestrahlt werden können.

Rückgabetyp

PubResult

compute_expectation_value_gate_folding

static compute_expectation_value_gate_folding(item_results, observables, param_shape, param_basis_pairs, noise_factors, extrapolator, extrapolated_noise_factors=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None, custom_fit=None)

GitHub

Erwartungswerte für das Ergebnis eines einzelnen Elements.

Mit dieser Funktion lassen sich Erwartungswerte für das Ergebnis eines einzelnen, durch „Gate_Folding“ bereinigten Elements berechnen, ohne dass eine neue Klasseninstanz instanziiert werden muss.

Parameter

  • item_results (list[QuantumProgramItemResult]) – Liste der Suchergebnisse – jeweils eines pro Rauschfaktor.

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Die Observablen, für die Erwartungswerte berechnet werden sollen.

  • param_shape (tuple[int, ...] | None) – Die Form der Parameterwerte.

  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – Die Zuordnung zwischen den Parametern und den Indizes zur Messung der Basis.

  • noise_factors (list[float]) – Die Rauschfaktoren, die zur Verstärkung des Rauschens verwendet wurden.

  • extrapolated_noise_factors (float |int |list[float] | None) – Rauschfaktoren zur Bewertung der Anpassungen.

  • extrapolator (list[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']]) –

    Das bzw. die zu verwendenden Extrapolationsmodelle. Die Modelle werden in der Reihenfolge ihrer Priorität getestet. Unterstützte Modelle (jedes passt zur genannten Funktion des Rauschfaktors x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): ein Polynom vom Grad k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (Raten, deren Abnahme begrenzt ist)
    • "fallback": keine Übereinstimmung; der Messwert bei dem niedrigsten Rauschfaktor
    • custom: Die im Parameter custom_fit angegebene benutzerdefinierte Extrapolationsfunktion
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Eine Liste der gemessenen Pauli-Basen. Der -te i Eintrag ist eine Messbasis, von der angenommen wird, dass sie dem -ten i Ausschnitt der Daten in jedem der entspricht item_results.

  • broadcast_obs_and_params (bool) – Ob Observables und Parameterwerte übertragen werden sollen.

  • measure_noise_data (PauliLindbladMap |ndarray | None) – Kalibrierungsdaten zum Messrauschen für die TREX-Minderung. Dies kann entweder ein „ PauliLindbladMap “ eines vorab gelernten Rauschmodells oder das Ergebnis einer Kalibrierungsschaltung sein.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Eine Funktion zur benutzerdefinierten Anpassung, die für die Extrapolation verwendet wird. Sollte ein Tupel in folgender Form enthalten: (function, p_0, bounds). Die Funktion sollte die unabhängige Variable als erstes Argument und die anzupassenden Parameter als separate, verbleibende Argumente entgegennehmen. p_0 ist ein Array mit den Anfangswerten für die Parameter, und „bounds“ sind die Grenzwerte für die Parameter. Diese Parameter werden als Argumente an die Funktion scipy.optimize.curve_fit übergeben.

Rückgabe

  • evs: Erwartungswerte, die am Punkt ohne Rauschen berechnet wurden.

  • std: die Standardabweichungen der extrapolierten Erwartungswerte, die am Punkt mit Nullrauschen berechnet wurden.

  • evs_noise_factors: an den Punkten „noise_factors“ berechnete Erwartungswerte.

  • stds_noise_factors: Standardabweichungen, berechnet an den „noise_factors“-Punkten.

  • stds_twirl_noise_factors: Standardabweichungen zwischen verschiedenen Randomisierungen, berechnet bei der

    Lärmfaktoren-Punkte.

  • evs_extrapolated: Erwartungswerte, die an den Punkten „extrapolated_noise_factors“ berechnet wurden.

    Auf „None“ setzen, wenn „None“ extrapolated_noise_factors ist.

  • stds_extrapolated: Standardabweichungen, berechnet an den Punkten „extrapolated_noise_factors“.

    Auf „None“ setzen, wenn „None“ extrapolated_noise_factors ist.

Die Datei „ PubResult “ enthält außerdem ein Feld selected_extrapolators in den Metadaten, in dem die gültigen Extrapolatoren aufgeführt sind, die zur Extrapolation der Daten für jeden beobachtbaren Term am Extrapolationspunkt ohne Rauschen verwendet werden.

Rückgabetyp

Ein „ PubResult “, der die folgenden Felder enthält

Erhöhungen

  • ValueError – Wenn eines der keinen '_meas' Schlüssel item_results hat.
  • ValueError – Wenn einer der item_resultsDatensätze '_meas' eine ungültige Anzahl von Achsen aufweist.
  • ValueError – Wenn und param_shape nicht observables.shape gegeneinander ausgestrahlt werden können.
  • ValueError – Wenn für einen beliebigen Extrapolator unterbestimmt noise_factors ist.

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

Erstellen Sie eine Instanz von „ GateFolding “ aus einem Passthrough-Wörterbuch, das aus dem Ergebnis der Ausführung eines Quantenprogramms geladen wurde.

Parameter

  • passthrough (dict[str, Any]) – „Passthrough_data“-Wörterbuch, das aus dem Ergebnis der Ausführung eines Quantenprogramms geladen wurde.
  • trex (TREX | None) – Eine TREX-Instanz, die eine Kalibrierungsschaltung enthält, wird im selben Quantenprogramm ausgeführt. Sollte beibehalten werden, None falls keine TREX-Abmilderung angewendet wurde oder im Rahmen desselben Quantenprogramms keine TREX-Kalibrierung durchgeführt wurde.

Rückgabe

Eine Instanz von „ GateFolding “.

Rückgabetyp

GateFolding

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

Gibt die eindeutigen „boxed“ Ebenen der angegebenen Schaltung unter Verwendung der angegebenen „Boxing“-Optionen zurück.

Parameter

  • circuit (QuantumCircuit) – Die Schaltung, um ihre einzigartigen Schichten zu bilden.
  • custom_boxing_options (dict | None) – Die benutzerdefinierten Box-Optionen, die von der Funktion generate_boxing_pass_manager() verwendet werden.

Rückgabe

Eindeutige, in Kästchen unterteilte Schichten der gegebenen Schaltung.

Rückgabetyp

Liste [ CircuitInstruction ]

postprocess

postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)

GitHub

Prozesserwartungswerte für das Ergebnis einer einzelnen „ GateFolding “-Aufgabe.

Parameter

  • results (list[QuantumProgramItemResult] | QuantumProgramResult) – Die Ergebnisse der Ausführung. Dies kann entweder das gesamte Ergebnisobjekt oder die Elemente dieser Aufgabe sein, bei denen das Gate-Folding gemildert wurde. Wird die TREX-Kalibrierungsaufgabe zum Quantenprogramm hinzugefügt, werden ihre Ergebnisse zur Berechnung der Messrauschdaten herangezogen, sofern das gesamte Ergebnisobjekt bereitgestellt wird.

  • noise_factors (Sequence[float] | None) – Die Rauschfaktoren, die zur Verstärkung des Rauschens verwendet wurden.

  • extrapolated_noise_factors (list[float] | None) – Rauschfaktoren zur Bewertung der Anpassungen.

  • extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –

    Das bzw. die zu verwendenden Extrapolationsmodelle. Die Modelle werden in der Reihenfolge ihrer Priorität getestet. Unterstützte Modelle (jedes passt zur genannten Funktion des Rauschfaktors x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): ein Polynom vom Grad k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (Raten, deren Abnahme begrenzt ist)
    • "fallback": keine Übereinstimmung; der Messwert bei dem niedrigsten Rauschfaktor
    • custom: Die im Parameter custom_fit angegebene benutzerdefinierte Extrapolationsfunktion
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Kalibrierungsdaten zum Messrauschen für die TREX-Minderung. Dies kann entweder ein „ PauliLindbladMap “ eines vorab gelernten Rauschmodells oder das Ergebnis einer Kalibrierungsschaltung sein.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Eine Funktion zur benutzerdefinierten Anpassung, die für die Extrapolation verwendet wird. Sollte ein Tupel in folgender Form enthalten: (function, p_0, bounds). Die Funktion sollte die unabhängige Variable als erstes Argument und die anzupassenden Parameter als separate, verbleibende Argumente entgegennehmen. p_0 ist ein Array mit den Anfangswerten für die Parameter, und „bounds“ sind die Grenzwerte für die Parameter. Diese Parameter werden als Argumente an die Funktion scipy.optimize.curve_fit übergeben.

Rückgabe

  • evs: Erwartungswerte, die am Punkt ohne Rauschen berechnet wurden.

  • std: die Standardabweichungen der extrapolierten Erwartungswerte, die am Punkt mit Nullrauschen berechnet wurden.

  • evs_noise_factors: an den Punkten „noise_factors“ berechnete Erwartungswerte.

  • stds_noise_factors: Standardabweichungen, berechnet an den „noise_factors“-Punkten.

  • stds_twirl_noise_factors: Standardabweichungen zwischen verschiedenen Randomisierungen, berechnet bei der

    Lärmfaktoren-Punkte.

  • evs_extrapolated: Erwartungswerte, die an den Punkten „extrapolated_noise_factors“ berechnet wurden.

    Auf „None“ setzen, wenn „None“ extrapolated_noise_factors ist.

  • stds_extrapolated: Standardabweichungen, berechnet an den Punkten „extrapolated_noise_factors“.

    Auf „None“ setzen, wenn „None“ extrapolated_noise_factors ist.

Die Datei „ PubResult “ enthält außerdem ein Feld selected_extrapolators in den Metadaten, in dem die gültigen Extrapolatoren aufgeführt sind, die zur Extrapolation der Daten für jeden beobachtbaren Term am Extrapolationspunkt ohne Rauschen verwendet werden.

Rückgabetyp

Ein „ PubResult “, der die folgenden Felder enthält

Erhöhungen

  • ValueError – Wenn eines der Ergebnisse der Aufgabe keinen '_meas' Schlüssel hat.
  • ValueError – Wenn die Daten '_meas' eines der Suchergebnisse eine ungültige Anzahl von Achsen aufweisen.
  • ValueError – Wenn und param_shape nicht observables.shape gegeneinander ausgestrahlt werden können.

prepare

prepare(circuit, observables, parameters, custom_boxing_options=None, shots_per_randomization=64, num_randomizations=128, broadcast_obs_and_params=False, trex=None, quantum_program=None, *, folding_method='random', noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)

GitHub

Erstellt ein Element QuantumProgram mit der Kennzeichnung „ GateFolding “, das über den Executor ausgeführt werden soll.

Erstellt ein Element für a QuantumProgram, das über den Executor ausgeführt werden kann und einer „ GateFolding “-Minderung unterzogen wird (verstärkt das Rauschen mithilfe von Gate-Folding-Techniken und extrapoliert es bis zum rauschfreien Punkt). quantum_program Wird ein angegeben, wird das neue Element dem bestehenden Programm hinzugefügt; andernfalls wird ein neues Programm erstellt, das ausschließlich das erstellte Element enthält. Wenn wahr broadcast_obs_and_params ist, werden die Observablen und Parameter gemäß den Samplomatic-Broadcasting-Regeln übertragen, damit einige der Parameter bestimmten Observablen zugeordnet werden können. Andernfalls wird jeder Parameter für jede Beobachtbare ausgewertet (Äußeres Produkt aus Parametern und Beobachtbaren). Beachten Sie, dass die Nachbearbeitung eines Außenprodukts in der Regel schneller ist.

Parameter

  • circuit (QuantumCircuit) – Der Quantenschaltkreis.

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Die Observablen zur Berechnung ihrer Erwartungswerte.

  • parameters (ndarray | None) – Die Parameter einer parametrischen Schaltung.

  • custom_boxing_options (dict | None) – Die benutzerdefinierten Box-Optionen, die von der Funktion generate_boxing_pass_manager() verwendet werden.

  • shots_per_randomization (int) – Die Anzahl der Schüsse pro Randomisierung.

  • num_randomizations (int) – Die Anzahl der Randomisierungen.

  • broadcast_obs_and_params (bool) – Ob Observables und Parameter übertragen werden sollen.

  • trex (TREX | None) – Eine TREX-Korrekturinstanz, die zur Korrektur von Auslesefehlern verwendet wird.

  • quantum_program (QuantumProgram | None) – Das Quantum-Programm zum Hinzufügen eines Artikels. Wenn „None“, wird ein neues Programm erstellt.

  • folding_method (Literal['random', 'front', 'back']) –

    Die Technik, mit der die 2-Qubit-Gatter so gefaltet werden, dass das Rauschen verstärkt wird. Wenn der Rauschfaktor es erfordert, nur einen Teil der Gatter zu verstärken, werden diese Gatter nach folgendem Verfahren ausgewählt:

    • "random" (Standard): Die Gatter werden zufällig ausgewählt.
    • "front": Die Gatter werden aus dem vorderen Teil der topologisch geordneten DAG-Schaltung ausgewählt.
    • "back": Die Gatter werden aus dem hinteren Teil der topologisch geordneten DAG-Schaltung ausgewählt.
  • noise_factors (Sequence[float |int]) – Die Rauschfaktoren, die zur Verstärkung des Rauschens zu verwenden sind.

  • extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –

    Das bzw. die Extrapolationsmodelle, deren Verwendung in der Nachbearbeitung geplant ist. Wird im Vorfeld verwendet, um zu überprüfen, ob genügend Rauschfaktoren vorhanden sind, damit eine gültige Anpassung mit diesen Extrapolatoren möglich ist. Wenn None, findet keine Validierung statt. Unterstützte Modelle (jedes passt zur genannten Funktion des Rauschfaktors x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): ein Polynom vom Grad k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (Raten, deren Abnahme begrenzt ist)
    • "fallback": keine Übereinstimmung; der Messwert bei dem niedrigsten Rauschfaktor
  • extrapolated_noise_factors (list[float] | None) – Die Rauschfaktoren zur Bewertung der Anpassungen sollen bei der Nachbearbeitung verwendet werden. Dient zum Speichern der Daten für eine einfache Nachbearbeitung. Kann bei der Nachbearbeitung überschrieben werden.

Rückgabe

Ein Element mit QuantumProgram dem Status „ GateFolding “ (abgemildert), das über den Executor ausgeführt werden kann.

Rückgabetyp

QuantumProgram

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