Skip to main content
IBM Quantum Platform

PEC (qiskit_mitigation.pec)

PEC

class PEC

GitHub

Bases : MitigationTask

Calcule les valeurs attendues des grandeurs observables à l'aide de la méthode d'atténuation dite « Probabilistic Error Cancellation » (PEC).

Cette classe permet de préparer une QuantumProgram e dont le circuit a été atténué à l'aide de la méthode PEC, qui peut être exécutée sur du matériel à l'aide de l'Executor, puis de traiter les résultats afin de calculer les valeurs attendues atténuées d'observables données. Les paramètres de la tâche doivent être fournis en entrée à la fonction prepare, et les variables pertinentes nécessaires au post-traitement sont enregistrées en interne :

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)

Pour calculer les valeurs attendues du résultat d'un travail chargé, il est possible de créer une tâche PEC à partir des résultats du travail, en incluant toutes les variables internes nécessaires au post-traitement. Il est également possible de fournir directement à la méthode statique compute_expectation_value les variables nécessaires au post-traitement. Exemple d'exécution d'un post-traitement sur un résultat chargé :

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)

Instancier une tâche PEC.

Méthodes

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

Renvoie les couches « boxées » uniques du circuit donné en utilisant les options de « boxing » indiquées.

Paramètres

  • circuit (QuantumCircuit) – Le circuit qui lui confère ses couches uniques.
  • custom_boxing_options (dict | None) – Les options de mise en encadré personnalisées qui seront utilisées par la fonction generate_boxing_pass_manager() .

Retours

Couches uniques encadrées du circuit donné.

Type de retour

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

Crée un élément QuantumProgram dont les problèmes de sécurité (PEC) ont été corrigés, destiné à être exécuté via Executor.

Crée un élément pour un QuantumProgram, qui peut être exécuté via Executor et qui bénéficie d'une atténuation PEC (injection d'un bruit inverse pour annuler le bruit appris). Si un quantum_program est fourni, le nouvel élément sera ajouté au programme existant; dans le cas contraire, un nouveau programme sera créé, ne contenant que l'élément créé. Si cette option est broadcast_obs_and_params activée, les observables et les paramètres seront diffusés selon les règles de diffusion de Samplomatic, afin de permettre d'associer certains paramètres à certaines observables. Sinon, chaque paramètre sera évalué pour chaque observable (produit extérieur des paramètres et des observables). Il convient de noter que le post-traitement d'un produit scalaire est généralement plus rapide.

Paramètres

  • circuit (QuantumCircuit) – Le circuit quantique.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Les observables permettant de calculer leurs valeurs attendues.
  • parameters (ndarray |BindingsArray | None) – Les paramètres d'un circuit paramétrique.
  • custom_boxing_options (dict | None) – Les options de mise en encadré personnalisées qui seront utilisées par la fonction generate_boxing_pass_manager() .
  • shots_per_randomization (int) – Le nombre d'injections par randomisation.
  • num_randomizations (int) – Le nombre de randomisations.
  • broadcast_obs_and_params (bool) – Déterminer s'il faut diffuser les observables et les paramètres.
  • trex (TREX | None) – Une instance de correction TREX qui sera utilisée pour corriger les erreurs de lecture.
  • quantum_program (QuantumProgram | None) – Le programme Quantum permettant d'ajouter un élément. Si la valeur est « None », un nouveau programme sera créé.
  • noise_maps (dict[str, PauliLindbladMap] | None) – Mise en correspondance entre une référence de couche et un modèle de bruit à utiliser pour la méthode d'atténuation du PEC. Le dictionnaire peut contenir des couches qui ne sont pas présentes dans le circuit donné, mais il doit contenir toutes les couches ayant fait l'objet de mesures d'atténuation. On suppose que les couches uniques utilisées pour l'apprentissage du bruit ont été extraites à l'aide de la méthode find_unique_layers avec les mêmes options de « boxing » personnalisées.
  • scale_randomizations_by_gamma (bool) – Déterminer s'il convient d'adapter automatiquement le nombre de randomisations en fonction de gamma**2.
  • noise_gain (float |Literal['auto']) – La part de bruit à conserver après l'atténuation. Une valeur de 0 correspond à la suppression totale du bruit appris. Une valeur de 1 correspond à l'absence de suppression du bruit appris. Une valeur comprise entre et 0 1 correspond à une suppression partielle du bruit appris. Une valeur supérieure à un correspond à une amplification du bruit appris. Si "auto", la valeur comprise dans l'intervalle [0, 1] sera choisie automatiquement par la formule 1 - log(max_overhead) / log(gamma^2).
  • max_sampling_overhead (float | None) – Si scale_randomizations_by_gamma est défini sur True, limiter le rapport multiplicatif du nombre de randomisations.

Retours

Un élément QuantumProgram dont les problèmes de sécurité ont été corrigés par PEC et qui peut être exécuté via Executor.

Type de retour

QuantumProgram

postprocess

postprocess(results, measure_noise_data=None)

GitHub

Valeurs attendues du processus pour le résultat d'un élément unique ayant fait l'objet d'une mesure d'atténuation Pec.

Paramètres

  • results (QuantumProgramItemResult |QuantumProgramResult) – Résultats de l'exécution. Il peut s'agir soit de l'objet « résultats » dans son intégralité, soit du résultat relatif à l'élément dont les risques ont été atténués dans le cadre de cette tâche. Si la tâche d'étalonnage TREX est ajoutée au programme quantique, ses résultats seront utilisés pour calculer les données relatives au bruit de mesure, à condition que l'objet de résultats soit fourni dans son intégralité.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Les données relatives au bruit de mesure obtenues, à utiliser pour l'atténuation du TREX. Si la valeur est « None » et qu’une tâche d’étalonnage est présente dans le programme quantique, le bruit de mesure sera calculé à partir des résultats de la tâche d’étalonnage, à condition que l’objet « results » soit fourni dans son intégralité.

Retours

Un tableau de type « PubResult » contenant les std champs evs et dans ses données, où evs représentent std les valeurs attendues et les écarts-types de ces valeurs attendues. Si cette option est broadcast_obs_and_params définie sur « True », les données contiendront également un champ twirl_stds correspondant à l'écart-type entre les différentes randomisations.

Augmentations

  • ValueError – Si le résultat de la tâche ne comporte pas de clé '_meas' .
  • ValueError – Si les données '_meas' du résultat de l'élément comportent un nombre d'axes non valide.
  • ValueError – Si et param_shape observables.shape ne peuvent pas être diffusés simultanément, alors que broadcast_obs_and_params avait été défini sur lors True de la préparation de la tâche.

Type de retour

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

Valeurs attendues du processus pour le résultat d'un élément unique ayant fait l'objet d'une mesure d'atténuation Pec.

Cette fonction permet de calculer les valeurs attendues pour le résultat d'un élément unique ayant fait l'objet d'une atténuation PEC, sans avoir à créer une nouvelle instance de classe.

Paramètres

  • item_result (QuantumProgramItemResult) – Le résultat de l'opération.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Les observables pour lesquelles il faut calculer les valeurs attendues.
  • gamma (float) – Le facteur gamma du modèle de bruit appris pour le circuit exécuté.
  • param_shape (tuple[int, ...] | None) – Le format des valeurs des paramètres.
  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – La correspondance entre les paramètres et les indices permettant de mesurer la base.
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Liste des bases de Pauli mesurées. Le -ième i élément est une base de mesure supposée correspondre à la -ième i tranche des données contenues dans item_result.
  • broadcast_obs_and_params (bool) – Indique s'il faut diffuser les observables et les valeurs des paramètres.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Données d'étalonnage du bruit de mesure pour l'atténuation du TREX.

Retours

Un tableau de type « PubResult » contenant les std champs evs et dans ses données, où evs représentent std les valeurs attendues et les écarts-types de ces valeurs attendues. Si cette option est broadcast_obs_and_params définie sur « True », les données contiendront également un champ twirl_stds correspondant à l'écart-type entre les différentes randomisations.

Augmentations

  • ValueError – Si ne contient item_result aucune clé '_meas' .
  • ValueError – Si le nombre d'axes n'est item_result['_meas'] pas valide.
  • ValueError – Si ne contient item_result aucune clé 'pauli_signs' .
  • ValueError – Si et param_shape ne peuvent observables.shape pas être diffusés l'un par rapport à l'autre.

Type de retour

PubResult

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

Créer une instance PEC à partir d'un dictionnaire de transfert chargé à partir du résultat de l'exécution d'un programme quantique.

Paramètres

  • passthrough (dict[str, Any]) – Dictionnaire « Passthrough_data » chargé à partir du résultat de l'exécution d'un programme quantique.
  • trex (TREX | None) – Une instance TREX contenant un circuit d'étalonnage est exécutée dans le même programme quantique. Doit être conservé None si la réduction TREX n'a pas été utilisée ou si un étalonnage TREX n'a pas été effectué dans le cadre du même programme quantique.

Retours

Une instance PEC.

Type de retour

PEC

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.