PEC (qiskit_mitigation.pec)
PEC
class PEC
Basen: MitigationTask
Berechnet Erwartungswerte von Observablen unter Verwendung des PEC-Verfahrens (Probabilistic Error Cancellation).
Die Klasse ermöglicht die Erstellung eines „ QuantumProgram “ mit einer mittels der PEC-Methode gemilderten Schaltung, der mithilfe des Executors auf Hardware ausgeführt werden kann, sowie die Nachbearbeitung der Ergebnisse zur Berechnung der gemilderten Erwartungswerte bestimmter Observablen. Die Aufgabenparameter sollten als Eingabe an die Funktion „prepare“ übergeben werden, und die für die Nachbearbeitung benötigten Variablen werden intern gespeichert:
pec = PEC()
program = pec.prepare(circuit=circuit,
observables=observables,
parameters=parameter_valuesת
noise_maps=learned_noise)
job = executor.run(program)
results = job.result()
mitigated_result = pec.postprocess(results)Um die Erwartungswerte eines geladenen Auftragsergebnisses zu berechnen, kann aus den Auftragsergebnissen eine PEC-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:
pec = PEC()
program = pec.prepare(circuit=circuit,
observables=observables,
parameters=parameter_valuesת
noise_maps=learned_noise)
job_id = executor.run(program).job_id
job = service.job(job_id)
results = job.result()
pec = load_tasks_from_result(results)[0]
mitigated_result = pec.postprocess(results)Eine PEC-Aufgabe instanziieren.
Methoden
find_unique_layers
find_unique_layers(circuit, custom_boxing_options=None)
Gibt die eindeutigen „Boxed“-Ebenen der angegebenen Schaltung unter Verwendung der angegebenen „Boxing“-Optionen zurück.
Parameter
- circuit (QuantumCircuit) – Die Schaltung, die ihre einzigartigen Schichten bildet.
- 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 zusammengefasste Schichten der gegebenen Schaltung.
Rückgabetyp
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, scale_randomizations_by_gamma=True, noise_gain='auto', max_sampling_overhead=100)
Erstellt ein Element mit QuantumProgram PEC-Abschwächung zur Ausführung über den Executor.
Erstellt ein Element für a QuantumProgram, das über den Executor ausgeführt werden kann und PEC-geschützt ist (fügt inverses Rauschen ein, um das gelernte Rauschen zu kompensieren). quantum_program Wird ein angegeben, wird das neue Element dem bestehenden Programm hinzugefügt; andernfalls wird ein neues Programm erstellt, das ausschließlich das neu 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 Beobachtungsgröße ausgeführt (Äußeres Produkt aus Parametern und Beobachtungsgrößen). 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 |BindingsArray | 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 Ebenenreferenz und einem Rauschmodell, das für die PEC-Minderungsmethode verwendet werden soll. Das Dict kann Ebenen enthalten, die in der angegebenen Schaltung nicht vorhanden sind, muss jedoch alle abgeschwächten Ebenen 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. - scale_randomizations_by_gamma (bool) – Ob die Anzahl der Randomisierungen automatisch anhand von gamma**2 skaliert werden soll.
- noise_gain (float |Literal['auto']) – Der Anteil des Rauschens, der nach der Rauschunterdrückung erhalten bleiben soll. Ein Wert von
0entspricht der vollständigen Beseitigung des erlernten Rauschens. Ein Wert von bedeutet1, dass das gelernte Rauschen nicht entfernt wird. Ein Wert zwischen und01entspricht einer teilweisen Entfernung des gelernten Rauschens. Ein Wert größer als eins bewirkt eine Verstärkung des gelernten Rauschens. Wenn"auto",[0, 1]wird der Wert im Bereich automatisch anhand der Formel ausgewählt1 - log(max_overhead) / log(gamma^2). - max_sampling_overhead (float | None) – Wenn „scale_randomizations_by_gamma“ auf „True“ gesetzt ist, wird das multiplikative Verhältnis der Anzahl der Randomisierungen begrenzt.
Rückgabe
Ein Element mit QuantumProgram PEC-Abschwächung, das über den Executor ausgeführt werden kann.
Rückgabetyp
postprocess
postprocess(results, measure_noise_data=None)
Prozesserwartungswerte für das Ergebnis eines einzelnen PEC-gemilderten Postens.
Parameter
- results (QuantumProgramItemResult |QuantumProgramResult) – Die Ergebnisse der Ausführung. Dies kann entweder das gesamte Ergebnisobjekt oder das Ergebnis des durch die Korrekturmaßnahme 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.
- measure_noise_data (PauliLindbladMap |ndarray | None) – Die ermittelten Messrauschdaten, die zur TREX-Minderung verwendet werden sollen. Wenn „None“ angegeben ist und das Quantenprogramm eine Kalibrierungsaufgabe enthält, wird das Messrauschen anhand der Ergebnisse der Kalibrierungsaufgabe berechnet, sofern das gesamte Ergebnisobjekt bereitgestellt wird.
Rückgabe
Ein „ PubResult “, der in seinen Daten die std Felder und evs enthält, 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 das Ergebnis des Aufgabenelements keinen
'_meas'Schlüssel hat. - ValueError – Wenn die Daten
'_meas'des Elementergebnisses eine ungültige Anzahl von Achsen aufweisen. - ValueError – Wenn
param_shapeund nichtobservables.shapegegeneinander gesendet werden können, obwohl beiTrueder Aufgabenvorbereitung auf gesetztbroadcast_obs_and_paramswurde.
Rückgabetyp
compute_expectation_value_pec
static compute_expectation_value_pec(item_result, observables, gamma, param_shape=None, param_basis_pairs=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None)
Prozesserwartungswerte für das Ergebnis eines einzelnen PEC-gemilderten Postens.
Mit dieser Funktion lassen sich Erwartungswerte für das Ergebnis eines einzelnen, durch PEC 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.
- gamma (float) – Der Gamma-Faktor des erlernten Rauschmodells für die ausgeführte Schaltung.
- 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 “, der in seinen Daten die std Felder und evs enthält, 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
'_meas'Schlüsselitem_resulthat. - ValueError – Wenn die Anzahl der Achsen ungültig
item_result['_meas']ist. - ValueError – Wenn keinen
'pauli_signs'Schlüsselitem_resulthat. - ValueError – Wenn und
param_shapenichtobservables.shapegegeneinander ausgestrahlt werden können.
Rückgabetyp
create_instance_from_passthrough_data
static create_instance_from_passthrough_data(passthrough, trex=None)
Erstellen Sie eine PEC-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-Minderung angewendet wurde oder im Rahmen desselben Quantenprogramms keine TREX-Kalibrierung durchgeführt wurde.
Rückgabe
Eine PEC-Instanz.
Rückgabetyp