Skip to main content
IBM Quantum Platform

ZneOptions

class ZneOptions(amplifier=Unset, noise_factors=Unset, extrapolator=Unset, extrapolated_noise_factors=Unset)

GitHub

Bases: object

Opciones de mitigación de la extrapolación del ruido cero. Sólo lo utiliza el estimador V2.

Nota

Se garantiza que cualquier estimador de V2 devuelve campos de datos denominados evs y stds que informan de las estimaciones del valor de la expectativa deseada y de los errores, respectivamente. Cuando se activan las opciones ZNE en el estimador de tiempo de ejecución, se devuelven datos adicionales.

En particular, supongamos que un pub de entrada tiene forma de matriz observable obs_shape y forma de valores de parámetros par_shape, con la correspondiente forma de pub shape=np.broadcast_shapes(obs_shape, par_shape). Entonces, el resultado del pub correspondiente contendrá además:

  1. pub_result.data.evs_extrapolated y pub_result.data.stds_extrapolated,

    ambos con forma (*shape, num_extrapolators, num_evaluation_points), donde num_extrapolators es la longitud de la lista de options.resilience.zne.extrapolators, y num_evaluation_points es la longitud de la lista options.resilience.extrapolated_noise_factors. Estos valores proporcionan evaluaciones de cada extrapolador en cada valor de extrapolación de ruido especificado.

  2. pub_result.data.evs_noise_factors, pub_result.data.stds_noise_factors, y ensemble_stds_noise_factors tienen todos la forma (*shape, num_noise_factors) donde num_noise_factors es la longitud de options.resilience.zne.noise_factors. Estos valores proporcionan valores de expectativa brutos, promediados sobre el giro si procede, en cada una de las amplificaciones de ruido; puede basar sus propias rutinas de ajuste en estos valores. En el caso de que no haya giro, ambas matrices *stds* serán iguales, de lo contrario, stds_noise_factors se deriva de la dispersión sobre muestras de giro, mientras que ensemble_stds_noise_factors asume sólo ruido de disparo y sin deriva.

Nota técnica: para observables únicos con múltiples términos de base puede resultar que se utilicen múltiples métodos de extrapolación en el mismo valor de expectativa, por ejemplo, XX se extrapola linealmente pero XY se extrapola exponencialmente en el observable {"XX": 0.5, "XY": 0.5}. Llamemos a esto un ajuste heterogéneo. Los datos de (2) se evalúan a partir de ajustes heterogéneos seleccionando el mejor ajuste para cada término individual distinto, mientras que los datos de (1) se evalúan a partir de ajustes homogéneos forzados, uno para cada extrapolador proporcionado. Si su trabajo requiere una distinción matizada en este sentido, actualmente le recomendamos que utilice observables de un solo término además de sus observables multitérmino.

Referencias

  1. Z. Cai, Multi-exponential error extrapolation and combining error mitigation techniques for NISQ applications, npj Quantum Inf 7, 80 (2021)

Atributos

Parámetros

  • amplifier (UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea'])
  • noise_factors (UnsetType | Sequence[float])
  • extrapolator (UnsetType | 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'] | ~collections.abc.Sequence[~typing.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']])
  • extrapolated_noise_factors (UnsetType | Sequence[float])

amplifier

Tipo: UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea']

Valor predeterminado: Unset

Qué técnica utilizar para amplificar el ruido.

Uno de los siguientes:

  • "gate_folding" (por defecto) utiliza gate folding de 2 qubits para amplificar el ruido. Si el ruido

    requiere amplificar sólo un subconjunto de puertas, éstas se eligen al azar.

  • "gate_folding\front" utiliza gate folding de 2 qubits para amplificar el ruido. Si el ruido

    requiere amplificar sólo un subconjunto de las puertas, entonces estas puertas se seleccionan de la parte delantera del circuito DAG topológicamente ordenado.

  • "gate_folding_back" utiliza gate folding de 2 qubits para amplificar el ruido. Si el ruido

    requiere amplificar sólo un subconjunto de las puertas, entonces estas puertas se seleccionan de la parte posterior del circuito DAG topológicamente ordenado.

  • "guisante" utiliza una técnica llamada Probabilistic Error Amplification

    (PEA ) para amplificar el ruido. Cuando se selecciona esta opción, el giro de la puerta se utilizará siempre, se haya activado o no en las opciones. En esta técnica, el modelo de ruido giratorio de cada capa única de puertas de enredo en tus circuitos ISA se aprende de antemano, ver LayerNoiseLearningOptions para las opciones de aprendizaje pertinentes. Una vez completados, tus circuitos se ejecutan en cada factor de ruido, donde cada capa de enredo de tus circuitos se amplifica inyectando probabilísticamente ruido de un solo qubit proporcional al correspondiente modelo de ruido aprendido.

extrapolated_noise_factors

Tipo: UnsetType | Sequence[float]

Valor predeterminado: Unset

Factores de ruido para evaluar el ajuste de los modelos de extrapolación en.

[0, *noise_factors]Si no se especifica, el valor predeterminado será. Esta opción no afecta en modo alguno a la ejecución ni al ajuste del modelo; únicamente determina los puntos en los que se evalúan los extrapolator valores que se devolverán en los campos de datos denominados evs_extrapolated y stds_extrapolated.

extrapolator

Tipo: UnsetType | 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'] | 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']]

Valor predeterminado: Unset

Extrapolador(es) a probar (en orden) para extrapolar a ruido cero.

Las opciones disponibles son:

  • "exponential", que ajusta los datos mediante una función exponencial decreciente

    definida como f(x;A,τ)=Aex/τf(x; A, \tau) = A e^{-x/\tau}, donde A=f(0;A,τ)A = f(0; A, \tau) es el valor en ausencia de ruido ( x=0x=0 ) y τ>0\tau>0 es una tasa positiva.

  • "double_exponential"que utiliza una suma de dos exponenciales como en la Ref. 1.

  • "polynomial_degree_(1 <= k <= 7)", que utiliza una función polinómica definida como

    f(x;c0,c1,,ck)=i=0,kcixif(x; c_0, c_1, \ldots, c_k) = \sum_{i=0, k} c_i x^i.

  • "linear"que es equivalente a "polynomial_degree_1".

  • "fallback", que simplemente devuelve los datos sin procesar correspondientes al nivel de ruido más bajo

    1factor (por lo general) sin realizar ningún tipo de extrapolación.

Los valores extrapolados (evs_extrapolated y stds_extrapolated) se ordenan según el orden de los extrapoladores proporcionados. Si se especifica más de un extrapolador, los valores evs y stds que se indican en los datos del resultado se refieren al primer extrapolador que ha tenido éxito, donde el éxito de un extrapolador se determina de forma heurística.

Valor predeterminado: ("exponential", "linear").

noise_factors

Tipo: UnsetType | Sequence[float]

Valor predeterminado: Unset

Factores de ruido a utilizar para la amplificación del ruido.

Valor predeterminado: (1, 3, 5).

Type

factores_de_ruido


Métodos

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