Skip to main content
IBM Quantum Platform

PEC (qiskit_mitigation.pec)

PEC

class PEC

GitHub

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)

GitHub

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

Liste [ CircuitInstruction ]

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)

GitHub

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_layers mit 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 0 entspricht der vollständigen Beseitigung des erlernten Rauschens. Ein Wert von bedeutet 1 , dass das gelernte Rauschen nicht entfernt wird. Ein Wert zwischen und 0 1 entspricht 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ählt 1 - 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

QuantumProgram

postprocess

postprocess(results, measure_noise_data=None)

GitHub

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_shape und nicht observables.shape gegeneinander gesendet werden können, obwohl bei True der Aufgabenvorbereitung auf gesetzt broadcast_obs_and_params wurde.

Rückgabetyp

PubResult

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)

GitHub

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 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 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üssel item_result hat.
  • ValueError – Wenn die Anzahl der Achsen ungültig item_result['_meas'] ist.
  • ValueError – Wenn keinen 'pauli_signs' Schlüssel item_result hat.
  • ValueError – Wenn und param_shape nicht observables.shape gegeneinander ausgestrahlt werden können.

Rückgabetyp

PubResult

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

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, None falls keine TREX-Minderung angewendet wurde oder im Rahmen desselben Quantenprogramms keine TREX-Kalibrierung durchgeführt wurde.

Rückgabe

Eine PEC-Instanz.

Rückgabetyp

PEC

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