PEA
class PEA
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)
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 éstaisección de los datos enitem_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_resultclave'_meas'. - ValueError – Si
item_result['_meas']tiene un número de ejes no válido. - ValueError – Si y
param_shapeobservables.shapeno pueden emitirse simultáneamente.
Tipo de retorno
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)
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 bajocustom: La función de extrapolación personalizada indicada en el parámetrocustom_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 éstaisección de los datos enitem_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ónscipy.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 elpuntos 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_resultclave'_meas'. - ValueError – Si
item_result['_meas']tiene un número de ejes no válido. - ValueError – Si y
param_shapeobservables.shapeno pueden emitirse simultáneamente. - ValueError – Si no
noise_factorsestá suficientemente especificado para cualquier extrapolador.
create_instance_from_passthrough_data
static create_instance_from_passthrough_data(passthrough, trex=None)
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
Noneen 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
find_unique_layers
find_unique_layers(circuit, custom_boxing_options=None)
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
postprocess
postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)
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 bajocustom: La función de extrapolación personalizada indicada en el parámetrocustom_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ónscipy.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 elpuntos 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_shapeobservables.shapeno 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)
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_layerscon 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 ruidox):"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