Referencia de la API de mitigación de errores de redes Tensor de Algorithmiq
Qiskit Functions — Herramientas preconfiguradas creadas por organizaciones asociadas — que abstraen partes del flujo de trabajo de desarrollo de software para simplificar y acelerar el descubrimiento de algoritmos y el desarrollo de aplicaciones a escala industrial. Haz clic aquí para ver la guía de esta función de Qiskit.
Guía de funciones de Algorithmiq TEM Qiskit
Entradas
Actualmente, TEM presenta las siguientes limitaciones:
- No se admiten circuitos parametrizados. El argumento «parámetros» debe establecerse en
Nonesi se especifica la precisión. Esta restricción se eliminará en futuras versiones. - Solo se admiten circuitos sin bucles. Esta restricción se eliminará en futuras versiones.
- No se admiten puertas no unitarias, como las de reinicio, medición y todas las formas de flujo de control. La compatibilidad con el reinicio se añadirá en próximas versiones.
Parámetros
pubs
Tipo: Iterable[EstimatorPubLike]
Una secuencia de objetos similares a los de PUB (bloques primitivos unificados), como tuplas (circuit, observables) o (circuit, observables, parameters, precision). Consulte la sección «Descripción general de los PUB» para obtener más información. Si se supera un circuito que no es ISA, se transpilará con los ajustes óptimos. Si se pasa un circuito ISA, no se transpilará; en ese caso, la observable debe definirse en toda la QPU.
- Obligatorio: Sí
- Ejemplo:
(circuit, observables)
backend_name
Tipo: str
Valor predeterminado: Least busy backend
Nombre del backend al que se va a realizar la consulta
- Requisito: No
- Ejemplo:
"ibm_fez"
Opciones
Tipo: dict
Las opciones de entrada para esta función se especifican como un diccionario anidado. Consulte la lista completa de opciones y sus valores predeterminados.
- Requisito: No
- Ejemplo:
{"max_bond_dimension": 100}
Un diccionario que recoge las opciones avanzadas del TEM. El diccionario puede contener las claves de la siguiente lista. Si no se especifica ninguna de las opciones, se utilizará el valor predeterminado que figura en la lista. Los valores predeterminados son adecuados para el uso habitual de TEM.
Lista de opciones
tem_max_bond_dimension
Tipo: int
Valor predeterminado: 500
El tamaño máximo de los enlaces que se utilizará en las redes tensoriales.
tem_compression_cutoff
Tipo: float
Valor predeterminado: 1e-16
El valor de corte que se utilizará para las redes tensoriales.
compute_shadows_bias_from_observable
Tipo: bool
Valor predeterminado: False
Un indicador booleano que señala si el sesgo del protocolo clásico de medición de sombras debe adaptarse a la observable « PUB » o no. Si el valor es «False», se utilizará el protocolo clásico de sombras (probabilidad igual de medir Z, X, Y).
shadows_bias
Tipo: np.ndarray
Valor predeterminado: np.array([1 / 3, 1 / 3, 1 / 3])
El sesgo que se utilizará para el protocolo de medición aleatoria de sombras clásicas, una matriz de tipo 1d o 2d de tamaño 3 o de forma (num_qubits, 3), respectivamente. El orden es ZXY.
max_execution_time
Tipo: int or None
Valor predeterminado: None
El tiempo máximo de ejecución en la QPU, expresado en segundos. Si el tiempo de ejecución supera este valor, el trabajo se cancelará. En ese caso None, se aplicará el límite predeterminado establecido por Qiskit Runtime.
num_randomizations
Tipo: int
Valor predeterminado: 32
El número de aleatorizaciones que se utilizarán para el aprendizaje del ruido y el giro de la puerta.
max_layers_to_learn
Tipo: int
Valor predeterminado: True
El número máximo de capas únicas que se van a aprender.
mitigate_readout_error
Tipo: bool
Valor predeterminado: True
Un indicador booleano que indica si se debe aplicar la mitigación de errores de lectura o no.
num_readout_calibration_shots
Tipo: int
Valor predeterminado: 10000
El número de disparos que se utilizarán para mitigar los errores de lectura.
default_precision
Tipo: float
Valor predeterminado: 0.02
La precisión predeterminada que se utilizará para los PUB en los que no se haya especificado la precisión.
seed
Tipo: int or None
Valor predeterminado: None
Establece la semilla del generador de números aleatorios para garantizar la reproducibilidad. Si es así None, no establezcas la semilla.
shots_per_randomization
Tipo: int
Valor predeterminado: 128
El número total de intentos que se utilizarán por cada circuito de aprendizaje aleatorio.
layer_pair_depths
Tipo: list[int]
Valor predeterminado: [0, 1, 2, 4, 16, 32]
La profundidad de los circuitos (medida en número de pares) que se utilizará en los experimentos de aprendizaje.
layer_noise_model
Tipo: NoiseLearnerResult, Sequence[LayerError], or None
Valor predeterminado: None
El ruido precalculado se obtiene de una ejecución anterior.
private
Tipo: bool
Valor predeterminado: False
Si los trabajos de la QPU deben ser privados. Si se establece en «True», se impedirán las descargas posteriores de los datos del experimento, por lo que se recomienda para trabajos confidenciales.
tem_enforce_linear_circuit
Tipo: bool
Valor predeterminado: False
Si se debe aplicar la topología lineal al circuito.
Precisión
La precisión de los resultados se puede solicitar de tres maneras. La precisión se puede especificar en el PUB, y se aplicará únicamente a ese PUB. De lo contrario, se puede default_precision pasar un en las opciones, tal y como se ha indicado anteriormente. Por último, para usuarios avanzados, se puede especificar el número concreto de disparos por PUB en las opciones mediante default_shots, lo que anulará cualquier otra opción de precisión.
Si se pasa un default_precision valor o un valor por PUB, se calcula el número de iteraciones necesarias para alcanzar la precisión deseada. Esto se lleva a cabo en función de los parámetros de la QPU y las tasas de error seleccionados, de la siguiente manera:
- Cálculo del error por puerta en capas (EPLG), que cuantifica el ruido introducido por las capas de puertas de dos qubits. Si hay propiedades de backend disponibles, extrae la fidelidad correspondiente; de lo contrario, utiliza un valor predeterminado.
- Contar el número de puertas de dos qubits en el circuito, ya que suelen ser las principales fuentes de ruido.
- Cálculo de un prefactor de ruido basado en el número de puertas de dos qubits y en la EPLG.
- Utilizando la precisión solicitada, calcula el número de disparos necesarios mediante una escala basada en el prefactor de ruido y la inversa del cuadrado de la precisión.
Este enfoque garantiza que el número de disparos sea suficiente para alcanzar la precisión deseada, teniendo en cuenta tanto la estructura del circuito como las características de ruido del backend.
Resultados
Un Qiskit PrimitiveResults que contiene el resultado con corrección TEM. El resultado de cada PUB se devuelve como un objeto PubResult que contiene los siguientes campos:
datos
Tipo: Databin
Un Qiskit DataBin que contiene la observable mitigada por TEM y su error estándar. El formulario « DataBin » contiene los siguientes campos:
evs: El valor observable ajustado según el modelo TEM.stds: El error estándar de la magnitud observable corregida por TEM.
metadatos
Tipo: dict
Un diccionario que contiene resultados adicionales. El diccionario contiene las siguientes claves:
"evs_non_mitigated": El valor observable sin mitigación de errores."stds_non_mitigated": El error estándar del resultado sin mitigación de errores."evs_mitigated_no_readout_mitigation": El valor observable con mitigación de errores, pero sin mitigación de errores de lectura."stds_mitigated_no_readout_mitigation": El error estándar del resultado con mitigación de errores, pero sin mitigación de errores de lectura."evs_non_mitigated_with_readout_mitigation": El valor observable sin mitigación de errores, pero con mitigación de errores de lectura."stds_non_mitigated_with_readout_mitigation": El error estándar del resultado sin mitigación de errores, pero con mitigación de errores de lectura."resource_usage": Un diccionario que recoge los recursos temporales utilizados por el TEM.