Modelo de ejecución dirigida (beta)
Todos los componentes del modelo de ejecución dirigida están actualmente en beta y puede que no sean estables. Te invitamos a probarlos y a enviar comentarios abriendo un issue en los repositorios de GitHub de Samplomatic o Qiskit Runtime.
Las interfaces de las primitivas Sampler y Estimator proporcionan una abstracción de alto nivel para que los desarrolladores de algoritmos se concentren más en la innovación y menos en la conversión de datos. Sin embargo, son menos adecuadas para los científicos de información cuántica, quienes requieren más control y flexibilidad para sus experimentos a escala utilitaria. El modelo de ejecución dirigida, actualmente en versión beta, aborda esta necesidad. Este modelo de ejecución ofrece los elementos necesarios para capturar las intenciones de diseño en el lado del cliente y desplaza la costosa generación de variantes de Circuit al lado del servidor, de modo que puedas ajustar la mitigación de errores y otras técnicas sin sacrificar el rendimiento. Este modelo explícito y composable facilita la experimentación con nuevas técnicas, la reproducción de resultados y el intercambio de métodos.
En su versión beta, el modelo de ejecución dirigida se enfoca en darte control sobre las técnicas integradas en el Sampler y el Estimator existentes, incluyendo el twirling de Pauli, el aprendizaje e inyección de modelos de ruido, y los cambios de base. El soporte para otras capacidades se irá añadiendo gradualmente con el tiempo.
Flujo de trabajo
Uno de los principales objetivos del modelo de ejecución dirigida es proporcionar una forma modular de aplicar métodos de mitigación de errores. Por ejemplo, puedes definir qué capas del Circuit mitigar o ajustar las tasas de ruido que se inyectan en el Circuit.
Para aplicar la mitigación de errores a un Circuit en este marco, tu flujo de trabajo generalmente implicará los siguientes pasos (las herramientas mencionadas aquí se describen con más detalle en la siguiente sección):
-
Agrupa las instrucciones en cajas (boxes) y aplícales anotaciones. Las anotaciones capturan la transformación prevista sin generar realmente las variantes del Circuit.
-
Aprende los modelos de ruido de las capas únicas, si es necesario, usando el nuevo NoiseLearnerV3.
-
Construye el circuit plantilla y el samplex a partir del Circuit con cajas.
-
Ejecuta el circuit plantilla y el samplex con la primitiva Executor, que generará y ejecutará las variantes del Circuit según las instrucciones.
-
Post-procesa los resultados de la ejecución. Por ejemplo, puedes aplicar post-selección o extrapolar valores de expectativa mitigados a partir de los resultados de la ejecución.
Herramientas para el modelo de ejecución dirigida
Las siguientes herramientas se pueden usar en conjunto para implementar una técnica de mitigación de errores en el modelo de ejecución dirigida.
Samplomatic
Samplomatic es una nueva biblioteca de código abierto que admite aleatorizaciones de muestreo personalizadas. Utiliza la construcción box para razonar sobre colecciones de operaciones de Circuit que deben tratarse como si tuvieran un contexto de ruido estable, y usa anotaciones en las cajas para que puedas declarar y configurar intenciones. Por ejemplo, puedes estratificar tu Circuit en cajas, añadir una anotación de twirling a cada caja y especificar qué grupo de twirling usar, como se muestra en la siguiente figura:

Un Circuit con cajas anotadas se puede usar para generar un circuit plantilla y un samplex. El circuit plantilla de salida es un Circuit parametrizado que se ejecutará sin más modificaciones (salvo que se le asignen diferentes valores de parámetros). El samplex, que es el tipo central de la biblioteca Samplomatic, representa una distribución de probabilidad paramétrica sobre los parámetros del circuit plantilla y otros campos de valores de tipo array. Estos campos se pueden usar para post-procesar los datos recopilados al ejecutar el circuit plantilla vinculado. En otras palabras, el par circuit plantilla y samplex le indica a la primitiva Executor (descrita a continuación) exactamente qué parámetros generar y qué circuits vinculados ejecutar. Como estas dos construcciones se crean en el lado del cliente, puedes hacer inspección local y muestreo para verificar las salidas antes de enviarlas para su ejecución en hardware.
Para simplificar el proceso de generación de cajas anotadas, la biblioteca Samplomatic también proporciona pasadas del Transpiler que agrupan automáticamente las instrucciones del Circuit en cajas anotadas, según las estrategias que definas.
Para aprender más sobre Samplomatic, visita la documentación de guías y de referencia de API. No dudes en enviar comentarios y reportar errores en su repositorio de GitHub.
Primitiva Executor
Executor es una nueva primitiva de Qiskit Runtime que toma el par circuit plantilla y samplex como entrada, genera y vincula valores de parámetros según el samplex, ejecuta los circuits vinculados en el hardware y devuelve los resultados de la ejecución y los metadatos. Sigue las directrices del par de entrada y no toma ninguna decisión implícita por ti, de modo que el proceso sea transparente y eficiente.
Para acceder a Executor, instala la rama executor_preview de qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
Las entradas y la salida de la primitiva Executor son muy diferentes a las del Sampler y el Estimator. Consulta la referencia de API de Executor para más información. Además, la guía de inicio rápido de Executor ofrece una descripción general y ejemplos de código.
NoiseLearnerV3
De forma similar al NoiseLearner actual, este programa auxiliar de Qiskit Runtime devuelve el modelo de ruido disperso de Pauli-Lindblad que se usa en muchos métodos de mitigación de errores, incluyendo PEC, PEA y PNA. En el NoiseLearner original, pasas una lista de circuits y el programa estratifica los circuits en capas y devuelve el modelo de ruido para cada capa única. NoiseLearnerV3, en cambio, te da control sobre cómo estratificar tus circuits y el programa simplemente toma como entradas una lista de instrucciones de Circuit con cajas (por ejemplo, capas únicas).
NoiseLearnerV3 también admite el aprendizaje de ruido de medición. Para cada conjunto de instrucciones en la lista de entrada, ejecuta el protocolo de aprendizaje de Pauli-Lindblad si el conjunto contiene Gates de uno y dos Qubits, y el protocolo TREX si el conjunto contiene mediciones.
Para acceder a NoiseLearnerV3, instala la rama executor_preview de qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
Para aprender más sobre NoiseLearnerV3, consulta la documentación de su referencia de API.
Próximos pasos
- Explora dos addons de Qiskit, Shaded lightcones y Propagated noise absorption, que están construidos sobre este modelo de ejecución.