Skip to main content
IBM Quantum Platform

PEA

class PEA

GitHub

Bases: MitigationTask

Calcula los valores esperados de las magnitudes observables utilizando el método de mitigación denominado «amplificación probabilística del error» (PEA).

Esta clase permite crear un objeto QuantumProgram con un circuito mitigado mediante el método PEA, que se puede ejecutar en hardware mediante el Executor y procesar posteriormente los resultados para calcular los valores esperados mitigados de determinadas observables. Los parámetros de la tarea deben introducirse como datos de entrada en la función «prepare», y las variables pertinentes necesarias para el posprocesamiento se guardan internamente:

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)

Para calcular los valores esperados del resultado de un trabajo cargado, se puede crear una tarea PEA a partir de los resultados del trabajo con todas las variables internas necesarias para el posprocesamiento. Como alternativa, las variables necesarias para el posprocesamiento pueden introducirse directamente como parámetros del método estático compute_expectation_value . Ejemplo de cómo ejecutar el posprocesamiento de un resultado cargado:

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)

Crear una instancia de una tarea PEA.


Atributos

VERSIÓN

Valor predeterminado: '0.1'


Métodos

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

Valores esperados del proceso para el resultado de un único elemento.

Esta función se puede utilizar para calcular los valores esperados de un resultado de un elemento concreto sin necesidad de crear una nueva instancia de la clase.

Parámetros

  • item_result (QuantumProgramItemResult) – El resultado del artículo.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Las variables observables para las que se calculan los valores esperados.
  • param_shape (tuple[int, ...] | None) – El formato de los valores de los parámetros.
  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – La correspondencia entre los parámetros y los índices para medir la base.
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Una lista de las bases de Pauli medidas. El elemento i éste es una base de medida que se supone que corresponde a la ésta i sección de los datos en item_result.
  • broadcast_obs_and_params (bool) – Si se deben difundir los observables y los valores de los parámetros.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Datos de calibración del ruido de medición para la mitigación de TREX.

Devuelve

Un « PubResult » que contiene y evs std como campos en sus datos, donde evs son valores esperados y std son la desviación estándar de los valores esperados. Si broadcast_obs_and_params se establece en «True», los datos contendrán también un campo twirl_stds que representa la desviación estándar entre las distintas aleatorizaciones.

Subidas

  • ValueError – Si no tiene item_result clave '_meas' .
  • ValueError – Si item_result['_meas'] tiene un número de ejes no válido.
  • ValueError – Si y param_shape observables.shape no pueden emitirse simultáneamente.

Tipo de retorno

PubResult

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)

GitHub

Valores esperados del proceso para el resultado de un único elemento.

Esta función se puede utilizar para calcular los valores esperados de un resultado concreto de un elemento mitigado de «Pea» sin necesidad de crear una nueva instancia de la clase.

Parámetros

  • item_result (QuantumProgramItemResult) – El guisante atenuó el resultado de la partida.

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Las variables observables para las que se calculan los valores esperados.

  • param_shape (tuple[int, ...] | None) – El formato de los valores de los parámetros.

  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – La correspondencia entre los parámetros y los índices para medir la base.

  • noise_factors (list[float]) – Los factores de ruido que se utilizaron para amplificar el ruido.

  • extrapolated_noise_factors (float |int |list[float] | None) – Factores de ruido a tener en cuenta a la hora de evaluar los ajustes.

  • 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']]) –

    El modelo o modelos de extrapolación que se vayan a utilizar. Los modelos se probarán por orden de prioridad. Modelos compatibles (cada uno de ellos se ajusta a la función indicada del factor de ruido x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio de grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tasas limitadas al decaimiento)
    • "fallback": no se ajusta; el valor medido con el factor de ruido más bajo
    • custom: La función de extrapolación personalizada indicada en el parámetro custom_fit
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Una lista de las bases de Pauli medidas. El elemento i éste es una base de medida que se supone que corresponde a la ésta i sección de los datos en item_result.

  • broadcast_obs_and_params (bool) – Si se deben difundir los observables y los valores de los parámetros.

  • measure_noise_data (PauliLindbladMap |ndarray | None) – Datos de calibración del ruido de medición para la mitigación de TREX. Puede ser, bien un « PauliLindbladMap » de un modelo de ruido aprendido previamente, bien el resultado de un circuito de calibración.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Una función de ajuste personalizado que se utilizará para la extrapolación. Debe incluir una tupla con el siguiente formato: (function, p_0, bounds). La función debe tomar la variable independiente como primer argumento y los parámetros de ajuste como los demás argumentos, por separado. p_0 es una matriz que contiene los valores iniciales estimados para los parámetros, y «bounds» son los límites de dichos parámetros. Estos parámetros se enviarán como argumentos de la función scipy.optimize.curve_fit .

Devuelve

  • evs: valores esperados calculados en el punto de ruido cero.

  • std: las desviaciones estándar de los valores esperados extrapolados evaluados en el punto de ruido cero.

  • evs_noise_factors: valores esperados calculados en los puntos de noise_factors.

  • stds_noise_factors: desviaciones estándar calculadas en los puntos de los factores de ruido.

  • stds_twirl_noise_factors: desviaciones estándar entre las diferentes aleatorizaciones, calculadas en el

    puntos de «ruido_factores».

  • evs_extrapolated: valores esperados calculados en los puntos extrapolados_noise_factors.

    Establecer en «None» si es extrapolated_noise_factors «None».

  • stds_extrapolated: desviaciones estándar calculadas en los puntos extrapolados de los factores de ruido.

    Establecer en «None» si es extrapolated_noise_factors «None».

El archivo « PubResult » también contendrá un campo selected_extrapolators en los metadatos que recoge los extrapoladores válidos utilizados para extrapolar los datos de cada término observable para el punto de extrapolación sin ruido.

Tipo de retorno

Un objeto « PubResult » que contiene los siguientes campos

Subidas

  • ValueError – Si no tiene item_result clave '_meas' .
  • ValueError – Si item_result['_meas'] tiene un número de ejes no válido.
  • ValueError – Si y param_shape observables.shape no pueden emitirse simultáneamente.
  • ValueError – Si no noise_factors está suficientemente especificado para cualquier extrapolador.

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

Crear una instancia de PEA a partir de un diccionario de paso cargado desde el resultado de la ejecución de un programa cuántico.

Parámetros

  • passthrough (dict[str, Any]) – Diccionario «Passthrough_data» cargado a partir del resultado de la ejecución de un programa cuántico.
  • trex (TREX | None) – Una instancia de TREX que contiene un circuito de calibración se ejecuta dentro del mismo programa cuántico. Debe mantenerse None en caso de que no se haya utilizado la mitigación TREX o no se haya ejecutado una calibración TREX como parte del mismo programa cuántico.

Devuelve

Una instancia de PEA.

Tipo de retorno

PEA

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

Devuelve las capas empaquetadas únicas del circuito indicado utilizando las opciones de empaquetado especificadas.

Parámetros

  • circuit (QuantumCircuit) – El circuito para descubrir sus capas únicas.
  • custom_boxing_options (dict | None) – Las opciones de encajado personalizadas que utilizará la función generate_boxing_pass_manager() .

Devuelve

Capas únicas en recuadros del circuito en cuestión.

Tipo de retorno

lista [ CircuitInstruction ]

postprocess

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

GitHub

Valores esperados del proceso para el resultado de un único elemento.

Parámetros

  • results (QuantumProgramItemResult |QuantumProgramResult) – Resultados de la ejecución. Puede ser tanto el objeto de resultados completo como el resultado del elemento «pea mitigated» de esta tarea. Si se añade la tarea de calibración TREX al programa cuántico, sus resultados se utilizarán para calcular los datos de ruido de medición, siempre que se facilite el objeto de resultados completo.

  • noise_factors (Sequence[float] | None) – Los factores de ruido que se utilizaron para amplificar el ruido.

  • extrapolated_noise_factors (list[float] | None) – Factores de ruido a tener en cuenta a la hora de evaluar los ajustes.

  • 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) –

    El modelo o modelos de extrapolación que se vayan a utilizar. Los modelos se probarán por orden de prioridad. Modelos compatibles (cada uno de ellos se ajusta a la función indicada del factor de ruido x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio de grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tasas limitadas al decaimiento)
    • "fallback": no se ajusta; el valor medido con el factor de ruido más bajo
    • custom: La función de extrapolación personalizada indicada en el parámetro custom_fit
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Datos de calibración del ruido de medición para la mitigación de TREX. Puede ser, bien un « PauliLindbladMap » de un modelo de ruido aprendido previamente, bien el resultado de un circuito de calibración.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Una función de ajuste personalizado que se utilizará para la extrapolación. Debe incluir una tupla con el siguiente formato: (function, p_0, bounds). La función debe tomar la variable independiente como primer argumento y los parámetros de ajuste como los demás argumentos, por separado. p_0 es una matriz que contiene los valores iniciales estimados para los parámetros, y «bounds» son los límites de dichos parámetros. Estos parámetros se enviarán como argumentos de la función scipy.optimize.curve_fit .

Devuelve

  • evs: valores esperados calculados en el punto de ruido cero.

  • std: las desviaciones estándar de los valores esperados extrapolados evaluados en el punto de ruido cero.

  • evs_noise_factors: valores esperados calculados en los puntos de noise_factors.

  • stds_noise_factors: desviaciones estándar calculadas en los puntos de los factores de ruido.

  • stds_twirl_noise_factors: desviaciones estándar entre las diferentes aleatorizaciones, calculadas en el

    puntos de «ruido_factores».

  • evs_extrapolated: valores esperados calculados en los puntos extrapolados_noise_factors.

    Establecer en «None» si es extrapolated_noise_factors «None».

  • stds_extrapolated: desviaciones estándar calculadas en los puntos extrapolados de los factores de ruido.

    Establecer en «None» si es extrapolated_noise_factors «None».

El archivo « PubResult » también contendrá un campo selected_extrapolators en los metadatos que recoge los extrapoladores válidos utilizados para extrapolar los datos de cada término observable para el punto de extrapolación sin ruido.

Tipo de retorno

Un objeto « PubResult » que contiene los siguientes campos

Subidas

  • ValueError – Si el resultado de la tarea no tiene ninguna clave '_meas' .
  • ValueError – Si los datos '_meas' del resultado del elemento tienen un número de ejes no válido.
  • ValueError – Si y param_shape observables.shape no pueden emitirse simultáneamente.

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)

GitHub

Crea un elemento QuantumProgram con mitigación PEA para su ejecución a través de Executor.

Crea un elemento para un QuantumProgram, que se puede ejecutar mediante Executor y está mitigado mediante PEA (amplifica el ruido escalando el ruido de Pauli inyectado y extrapola hasta el punto de ruido cero). Si quantum_program se especifica un, el nuevo elemento se añadirá al programa existente; en caso contrario, se creará un nuevo programa que contenga únicamente el elemento creado. Si el valor es broadcast_obs_and_params «True», las variables observables y los parámetros se transmitirán siguiendo las reglas de transmisión de Samplomatic, lo que permitirá asociar algunos de los parámetros a algunas de las variables observables. De lo contrario, cada parámetro se ejecutará para cada observable (producto exterior de los parámetros y los observables). Ten en cuenta que el posprocesamiento de un producto exterior suele ser más rápido.

Parámetros

  • circuit (QuantumCircuit) – El circuito cuántico.

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Las magnitudes observables para calcular sus valores esperados.

  • parameters (ndarray | None) – Los parámetros de un circuito paramétrico.

  • custom_boxing_options (dict | None) – Las opciones de encajado personalizadas que utilizará la función generate_boxing_pass_manager() .

  • shots_per_randomization (int) – El número de inyecciones por aleatorización.

  • num_randomizations (int) – El número de aleatorizaciones.

  • broadcast_obs_and_params (bool) – Si se deben transmitir los observables y los parámetros.

  • trex (TREX | None) – Una instancia de mitigación de TREX que se utilizará para mitigar los errores de lectura.

  • quantum_program (QuantumProgram | None) – El programa de Quantum para añadir un artículo. Si es «None», se creará un nuevo programa.

  • noise_maps (dict[str, PauliLindbladMap] | None) – Una correspondencia entre la referencia de capa y un modelo de ruido que se utilizará para la amplificación del ruido. El diccionario puede contener capas que no estén presentes en el circuito dado, pero debe contener todas las capas mitigadas. Se supone que las capas únicas utilizadas para el aprendizaje del ruido se extrajeron mediante el método find_unique_layers con las mismas opciones de «boxing» personalizadas.

  • noise_factors (Sequence[float |int]) – Los factores de ruido que hay que utilizar para amplificar el ruido.

  • 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) –

    El modelo o modelos de extrapolación que se prevé utilizar en el posprocesamiento. Se utiliza en la preparación para comprobar que existen suficientes factores de ruido que permitan un ajuste válido con estos extrapoladores. Si None, no se llevará a cabo la validación. Modelos compatibles (cada uno de ellos se ajusta a la función indicada del factor de ruido x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio de grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tasas limitadas al decaimiento)
    • "fallback": no se ajusta; el valor medido con el factor de ruido más bajo
  • extrapolated_noise_factors (list[float] | None) – Está previsto utilizar los factores de ruido para evaluar los ajustes en el posprocesamiento. Se utiliza para guardar los datos y facilitar su posterior procesamiento. Se puede sobrescribir en el posprocesamiento.

Devuelve

Un elemento con QuantumProgram PEA mitigada que se puede ejecutar mediante Executor.

Tipo de retorno

QuantumProgram

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.