PEA
class PEA
Basen: MitigationTask
Berechnet Erwartungswerte von Observablen unter Verwendung der PEA-Minderungsmethode (Probabilistic Error Amplification).
Die Klasse ermöglicht die Erstellung eines „ QuantumProgram “ mit einer mithilfe der PEA-Methode gemilderten Schaltung, der mithilfe des „Executor“ auf Hardware ausgeführt werden kann, sowie die Nachverarbeitung der Ergebnisse zur Berechnung der gemilderten Erwartungswerte bestimmter Beobachtungsgrößen. Die Aufgabenparameter sollten als Eingabe an die Funktion „prepare“ übergeben werden, und die für die Nachbearbeitung benötigten Variablen werden intern gespeichert:
pea_task = PEA()
program = pea_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 = pea_task.postprocess(results)Um die Erwartungswerte eines geladenen Auftragsergebnisses zu berechnen, kann aus den Auftragsergebnissen eine PEA-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 der Nachbearbeitung eines geladenen Ergebnisses:
pea_task = PEA()
program = pea_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()
pea_task = load_tasks_from_result(results)[0]
mitigated_result = pea_task.postprocess(results)Eine PEA-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)
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
iEintrag ist eine Messbasis, von der angenommen wird, dass sie der -teniScheibe der Daten in entsprichtitem_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, dessen Daten die std Felder und evs enthalten, wobei die Erwartungswerte und die Standardabweichungen der Erwartungswerte std sind evs . 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 Schlüssel
'_meas'item_resulthat. - ValueError – Wenn eine ungültige Anzahl von Achsen
item_result['_meas']aufweist. - ValueError – Wenn und
param_shapenichtobservables.shapegegeneinander ausgestrahlt werden können.
Rückgabetyp
compute_expectation_value_pea
static compute_expectation_value_pea(item_result, 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)
Erwartungswerte für das Ergebnis eines einzelnen Elements.
Mit dieser Funktion lassen sich Erwartungswerte für das Ergebnis eines einzelnen „Pea-Mitigated“-Elements berechnen, ohne eine neue Klasseninstanz anzulegen.
Parameter
-
item_result (QuantumProgramItemResult) – Das Ergebnis des Postens „Erbsen“ fiel moderat aus.
-
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 Rauschfaktorcustom: Die im Parametercustom_fitangegebene benutzerdefinierte Extrapolationsfunktion
-
meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Eine Liste der gemessenen Pauli-Basen. Der -te
iEintrag ist eine Messbasis, von der angenommen wird, dass sie der -teniScheibe der Daten in entsprichtitem_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. 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 weitere 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 Funktionscipy.optimize.curve_fitübergeben.
Rückgabe
-
evs: Erwartungswerte, die am Punkt mit null 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 anhand derLärmfaktoren-Punkte.
-
evs_extrapolated: Erwartungswerte, die an den Punkten „extrapolated_noise_factors“ berechnet wurden.Auf „None“ setzen, wenn „None“
extrapolated_noise_factorsist. -
stds_extrapolated: Standardabweichungen, berechnet an den Punkten der extrapolierten Rauschfaktoren.Auf „None“ setzen, wenn „None“
extrapolated_noise_factorsist.
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 für den rauschfreien Extrapolationspunkt verwendet werden.
Rückgabetyp
Ein „ PubResult “, das die folgenden Felder enthält
Erhöhungen
- ValueError – Wenn keinen Schlüssel
'_meas'item_resulthat. - ValueError – Wenn eine ungültige Anzahl von Achsen
item_result['_meas']aufweist. - ValueError – Wenn und
param_shapenichtobservables.shapegegeneinander ausgestrahlt werden können. - ValueError – Wenn für einen beliebigen Extrapolator unterbestimmt
noise_factorsist.
create_instance_from_passthrough_data
static create_instance_from_passthrough_data(passthrough, trex=None)
Erstellen Sie eine PEA-Instanz 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, geladen aus dem Ergebnis der Ausführung eines Quantenprogramms.
- trex (TREX | None) – Eine TREX-Instanz, die eine Kalibrierungsschaltung enthält, wird im selben Quantenprogramm ausgeführt. Sollte beibehalten werden,
Nonefalls keine TREX-Abmilderung verwendet wurde oder im Rahmen desselben Quantenprogramms keine TREX-Kalibrierung durchgeführt wurde.
Rückgabe
Eine PEA-Instanz.
Rückgabetyp
find_unique_layers
find_unique_layers(circuit, custom_boxing_options=None)
Gibt die eindeutigen, in Boxen verpackten 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
postprocess
postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)
Erwartungswerte für das Ergebnis eines einzelnen Elements.
Parameter
-
results (QuantumProgramItemResult |QuantumProgramResult) – Die Ergebnisse der Ausführung. Dies kann entweder das gesamte Ergebnisobjekt oder das Ergebnis des durch „pea“ gemilderten Elements dieser Aufgabe sein. 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 Rauschfaktorcustom: Die im Parametercustom_fitangegebene 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 weitere 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 Funktionscipy.optimize.curve_fitübergeben.
Rückgabe
-
evs: Erwartungswerte, die am Punkt mit null 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 anhand derLärmfaktoren-Punkte.
-
evs_extrapolated: Erwartungswerte, die an den Punkten „extrapolated_noise_factors“ berechnet wurden.Auf „None“ setzen, wenn „None“
extrapolated_noise_factorsist. -
stds_extrapolated: Standardabweichungen, berechnet an den Punkten der extrapolierten Rauschfaktoren.Auf „None“ setzen, wenn „None“
extrapolated_noise_factorsist.
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 für den rauschfreien Extrapolationspunkt verwendet werden.
Rückgabetyp
Ein „ PubResult “, das die folgenden Felder enthält
Erhöhungen
- ValueError – Wenn das Ergebnis des Aufgabeneintrags keinen
'_meas'Schlüssel hat. - ValueError – Wenn die Daten
'_meas'des Elementergebnisses eine ungültige Anzahl von Achsen aufweisen. - ValueError – Wenn und
param_shapenichtobservables.shapegegeneinander 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, *, noise_maps=None, noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)
Erstellt ein Element mit QuantumProgram PEA-Abmilderung zur Ausführung über den Executor.
Erstellt ein Element für a QuantumProgram, das über den Executor ausgeführt werden kann und PEA-abgeschwächt ist (verstärkt das Rauschen durch Skalierung des eingespeisten Pauli-Rauschens und extrapoliert zum Nullrauschpunkt). 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 „True“ ist broadcast_obs_and_params , 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 jedes Observabel ausgewertet (äußeres Produkt aus Parametern und Observablen). 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.
-
noise_maps (dict[str, PauliLindbladMap] | None) – Eine Zuordnung zwischen einer Ebenereferenz und einem Rauschmodell, das zur Rauschverstärkung verwendet werden soll. Das Dict kann Schichten enthalten, die in der angegebenen Schaltung nicht vorhanden sind, muss jedoch alle abgeschwächten Schichten enthalten. Es wird davon ausgegangen, dass die für das Rauschlernen verwendeten eindeutigen Schichten mithilfe der Methode
find_unique_layersmit denselben benutzerdefinierten Boxing-Optionen extrahiert wurden. -
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 Extrapolationsmodell 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 Rauschfaktorsx):"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 PEA-Abmilderung, das über den Executor ausgeführt werden kann.
Rückgabetyp