ZneOptions
class ZneOptions(amplifier=Unset, noise_factors=Unset, extrapolator=Unset, extrapolated_noise_factors=Unset)
Bases: object
Opciones de mitigación de la extrapolación del ruido cero. Sólo lo utiliza el estimador V2.
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:
-
pub_result.data.evs_extrapolated y pub_result.data.stds_extrapolated,
ambos con forma
(*shape, num_extrapolators, num_evaluation_points), dondenum_extrapolatorses la longitud de la lista deoptions.resilience.zne.extrapolators, ynum_evaluation_pointses la longitud de la listaoptions.resilience.extrapolated_noise_factors. Estos valores proporcionan evaluaciones de cada extrapolador en cada valor de extrapolación de ruido especificado. -
pub_result.data.evs_noise_factors,pub_result.data.stds_noise_factors, yensemble_stds_noise_factorstienen todos la forma(*shape, num_noise_factors)dondenum_noise_factorses la longitud deoptions.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_factorsse deriva de la dispersión sobre muestras de giro, mientras queensemble_stds_noise_factorsasume 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
- 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
LayerNoiseLearningOptionspara 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 decrecientedefinida como , donde es el valor en ausencia de ruido ( ) y 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.
"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