IBM Quantum Notas de la versión de Compute Client
0.49.0 (10 de agosto de 2026)
Notas de actualización
- Las clases de opciones del paquete
options_modelsse basan ahora en de Pydantic, en lugarBaseModelde endataclass. ( 3042 ) - Se ha cambiado la versión predeterminada del esquema de Executor a « 2.0 ». ( 3043 )
- El servicio « Qiskit Runtime » ha pasado a denominarse « IBM Quantum Compute », y se han actualizado las referencias al mismo en la documentación. La clase
QiskitRuntimeServiceya está disponible comoIBMQuantumComputeService. ( 3070 )
Notas sobre características en desuso
- El uso de stdlib
asdictcon las clases de opciones deloptions_modelspaquete ya no se recomienda, ya que ahora son modelos de Pydantic. En su lugar, utiliza directamenteoptions.model_dump()para serializarlas en undict. ( 3042 ) - Esta opción
post_selectionya noNoiseLearnerV3se recomienda y se eliminará en una versión futura. ( 3160 )
Nuevas funciones
- Se han añadido una
MidCircuitResetinstrucción y una pasada delConvertToMidCircuitResetAndMeasuretranspilador. La nueva versión amplía la funcionalidadConvertToMidCircuitMeasureexistente al sustituir también las instruccionesresetno terminales por implementaciones de reinicio a mitad de circuito específicas del hardware. ( 2903 ) - Se ha añadido el campo
bit_flip_checksaNoiseLearnerV3Options, lo que permite a los usuarios solicitar comprobaciones de inversión de bits en los resultados de los circuitos de aprendizaje con ruido. ( 2907 ) - Se ha añadido un
persistparámetro opcional aFakeBackendV2.refresh(). Por defecto (persist=True), el comportamiento no cambia: la configuración y las propiedades actualizadas sobrescriben los archivos de datos incluidos en el paquete instalado, de modo que la actualización se mantiene entre sesiones. Al pasar este parámetropersist=False, los datos actualizados se guardan en un directorio temporal, lo que permiterefresh()que la operación se realice con éxito incluso cuando el paquete está instalado en una ubicación de solo lectura (por ejemplo, un directoriosite-packagesde todo el sistema) en la que, de otro modo, sobrescribir los archivos incluidos provocaría unPermissionError. En ese modo, el backend solo se actualiza para la sesión actual y los cambios no se guardan en el disco. ( 2977 ) IBMBackendAhora cuenta con un atributophysical_qubitsque devuelve el número de qubits físicos del backend (suma de qubits programables, qubits de reinicio y acopladores). El atributo también está disponible enFakeBackendV2para los backends que no están retirados. ( 3080 )- El IAM URL utilizado por ahora
QiskitRuntimeService.instances()puede anularse mediante la variable de entornoIAM_URL, siguiendo la misma convención que las variablesGLOBAL_CATALOG_URLGLOBAL_SEARCH_URLy del SDK de IBM. Esto permite redirigir el tráfico de IAM a través de un punto de conexión privado (por ejemplo,https://private.iam.cloud.ibm.com) en entornos VPE sin necesidad de realizar ningún cambio en el código. ( 3135 )
Corrección de errores
- Mejorar el mensaje de advertencia que aparece cuando un trabajo recuperado se ha serializado con una versión de Qiskit más reciente que la instalada localmente. Antes de llamar a
qiskit.qpy.load,RuntimeDecoderahora se muestra un mensaje claro que sugiere actualizar apip install -U qiskitcuando la versión del formato QPY integrado es más reciente que la que admite la versión instalada de Qiskit. ( 2426 ) FakeProviderForBackendV2.backends()Ahora también devuelve ocho backends falsos que se podían importar desdeqiskit_ibm_runtime.fake_providerpero que no figuraban en la lista de backends del proveedor, además de los que ya devolvía:FakeAachen,FakeBerlin,FakeBoston,FakeBrussels,FakeKingston,FakeMiami,FakePittsburgh, yFakeStrasbourg. Anteriormente, al llamar a (FakeProviderForBackendV2().backend(name="fake_kingston")y a las otras siete) se producía unQiskitBackendNotFoundErrora pesar de que las clases de fondo existían. ( 3164 )
0.48.0 (14 de julio de 2026)
Notas de actualización
- La versión mínima necesaria de Qiskit es ahora
2.3.0, y la de Samplomatic es0.18.0. Los usuarios deExecutorya pueden hacer girar sus circuitos con el"local_c1"grupo «twirling», compatible con la versión0.17.0de Samplomatic y posteriores. ( 2925 )
Notas sobre características en desuso
-
Todas las clases que representan resultados están ahora disponibles a través del
qiskit_ibm_runtime.resultspaquete; por consiguiente, las siguientes clases se han trasladado al paquete «results»:PauliLindbladError,LayerError,NoiseLearnerResult(que antes formaba parte deqiskit_ibm_runtime.utils.noise_learner_result)EstimatorPubResult(que antes formaba parte deqiskit_ibm_runtime.utils.estimator_pub_result)
La importación desde las ubicaciones anteriores ha quedado obsoleta, y las referencias se eliminarán en una futura versión. ( 2835 )
-
La ejecución de un
SamplerV2trabajo con valores diferentespub.shotsen cada PUB ha quedado obsoleta. Del mismo modo, se desaconseja ejecutar unaEstimatorV2tarea con valores diferentespub.precisionen los distintos PUB. ( 2992 ) -
Establecer
MeasureNoiseLearningOptions.shots_per_randomizationelintvalor en está en desuso y se eliminará en futuras versiones. Por favor, utiliza"auto"en su lugar. ( 3004 )
Nuevas funciones
-
El
RuntimeJobV2.usage()método admite ahora un parámetro opcionalpartial( 2884 ):- Si el
partialindicador esFalse, el método devolverá0hasta que finalice el cálculo del uso del trabajo. TrueSi elpartialindicador está activado, el método devolverá el consumo parcial incremental del trabajo, independientemente de que se haya completado el cálculo.
- Si el
-
Se han añadido opciones para solicitar los tiempos del programa de circuitos y para obtener las resoluciones numéricas de los tramos de cada circuito al ejecutar tareas de Executor. ( 2790 ) ( 2789 )
-
Se ha añadido compatibilidad con
instance="auto"enQiskitRuntimeServiceyQiskitRuntimeService.save_account(). Al pasarinstance="auto"este parámetro, se activa explícitamente la selección automática de instancias sin que se generen las advertencias «instancia no definida» ni «Cargando/Utilizando instancia» durante la recuperación del backend. El valor se puede guardar en el archivo de la cuenta para que se aplique en cada instanciación posterior. ( 2854 ) -
Se ha añadido un
use_fractional_gatesparámetro aQiskitRuntimeService.least_busy(), que se ajusta al comportamiento del mismo parámetro enQiskitRuntimeService.backend(). Cuando se establece enTrue, solo se tienen en cuenta los backends que incluyen puertas fraccionarias en sus puertas básicas; los backends que no las incluyen se omiten y se da prioridad al siguiente backend que cumpla los requisitos y esté menos ocupado. ( 2855 ) -
Se ha reintroducido la compatibilidad para pasar varios decodificadores de resultados a
RuntimeJobV2yRuntimeJobV2.result(). ( 2899 ) -
Se ha añadido compatibilidad con
QuantumProgram.meas_level = "both", que puede utilizarse para solicitar que en los resultados del programa cuántico aparezcan tanto las mediciones clasificadas como las con núcleo. ( 2973 )
Corrección de errores
3*piSe ha corregido un error en laFoldRzzAngleetapa del transpilador por el queRzzlas puertas cuyo ángulo coincidía exactamente con el+-pilímite (por ejemplo,-3*pi,7*pi) se agrupaban en un circuito que difería del original en una fase global depi. Ahora, la pasada deduce la paridad de enrollamiento perdida2*pidirectamente a partir del ángulo de enrollamiento, de modo que el circuito plegado conserva la unidad completa (incluida la fase global) para todos los ángulos. ( 2856 )SamplerV2.run()Al utilizar backends de diferentes instancias, el servicio utilizado por los métodos deEstimatorV2.run(),, y otras primitivas.run()garantiza ahora que el cliente de la API utilizado para enviar el trabajo sea el que pertenece al backend, en lugar de utilizar siempre el cliente de la API activo. ( 2931 )- Se ha corregido el plegado de los ángulos fuera de límites
rzzdurante la transpilación. Con la configuración anterior se producía un error por el que las pasadas de traducción que se ejecutaban después de la pasada « FoldRzzAngle » podían modificar los ángulos y hacer que fueran negativos o superiores api/2. El error se soluciona configurando elangle_boundsen el objetivo del backend como(0, pi/2)para larzzpuerta y registrando unrzzenvoltorio en la pasada delWrapAnglestranspilador. Este mecanismo sustituye el uso delIBMDynamicFractionalTranslationPluginplugin y laFoldRzzAngleetapa del transpilador. ( 2960 )
Otras notas
- La biblioteca utiliza ahora la versión
2026-04-15de la API REST de Qiskit Runtime. ( 2845 ) - Se ha eliminado el complemento
IBMFractionalTranslationPluginde transpilador, que ya no se utilizaba. ( 2880 ) - La versión predeterminada del esquema para Executor es ahora
1.1. ( 2911 )
0.47.0 (12 de mayo de 2026)
Nuevas funciones
-
Se han añadido las clases «Executor» y « QuantumProgram », que permiten aprovechar al máximo el conjunto de funciones que ofrece el paquete Samplomatic.
-
Se ha añadido la clase « NoiseLearnerV3 » para calcular el ruido de las instrucciones que contienen cuadros anotados.
-
Se ha añadido un script para recuperar la configuración y las propiedades de un backend real.
-
Se ha añadido un nuevo backend ficticio,
FakeKingston. Se trata de un dispositivo Heron de 156 qubits r2. ( 2711 ) -
global_searchLas interacciones con los servicios de la plataforma « IBM Cloud » (que tienen lugar duranteQiskitRuntimeServicela instanciación, con los nombres de servicio,global_catalogyresource_controller) ahora se ajustan a los mecanismos de configuración del SDK de « IBM Cloud », lo que permite pasar configuraciones personalizadas a través de variables de entorno o archivos de credenciales. ( 2712 ) -
Se ha añadido
draw_chunk_timings()aqiskit_ibm_runtime.visualizationpara representar gráficamente los tiempos de ejecución de una o varias instancias de la nueva clase contenedora de tiempos de fragmentos,ChunkTiming, en un gráfico de barras interactivo. También hay disponible un método prácticoChunkTiming.draw()para el caso de un único resultado mediantejob.result().timing.draw(). ( 2727 ) -
-aPartiendo del script de instantáneas del backend ficticio presentado en la versión 2711, el script ahora también genera__init__.pyarchivos yfake_<backend_name>.pypara cada backend, y añade un nuevo argumento /--accountpara seleccionar una cuenta específica al recuperar datos del backend de diferentes regiones de la nube (por ejemplo, us-east frente a eu-de).Con este script actualizado, se han añadido los siguientes backends ficticios que faltaban:
FakeAachen,FakeBerlin,FakeBoston,FakeBrussels,FakeMiami,FakePittsburgh, yFakeStrasbourg. ( 2736 )
Notas de actualización
- Los
RuntimeJobV2.result()métodos yRuntimeJobV2.wait_for_final_state()ahora admiten un parámetro opcionalpoll_interval, que permite personalizar el intervalo entre las solicitudes al servicio. El valor predeterminado es ahora0.5segundos para los trabajos que no son de sesión, y0.1segundos para los trabajos de sesión. ( 2762 )
Notas sobre características en desuso
-
Se ha rediseñado el paquete
extras« Python »:commonydocumentationestán obsoletos y se eliminarán env0.48.performanceSe ha introducido para las dependencias opcionales que no son de desarrollo y que aportan un mayor rendimiento o funcionalidades adicionales.- Las dependencias de desarrollo tienen ahora una granularidad más precisa (
style,style_local,test,doc), y la opcióndev«extra» sigue permitiendo instalar un conjunto completo de herramientas de desarrollo. ( 2707 )
Corrección de errores
`GlobalSearchV2Losproxiesargumentos yssl_verificationdeQiskitRuntimeServiceahora se transmiten a las solicitudes subyacentes de HTTP dirigidas a los servicios,GlobalCatalogV1, yIAMAuthenticator, lo que permite instanciarQiskitRuntimeServicecorrectamente cuando se utiliza un proxy. ( 2592 )- Se ha añadido la posibilidad de especificar
calibration_idyuse_fractional_gatesal iniciar una sesión desde unsession_id. Esto corrige errores conocidos, concretamente el hecho de que al instanciar unSessionobjeto mediantefrom_idno se conserva el valor decalibration_idestablecido durante la instanciación inicial del originalSession, ni el valor deuse_fractional_gatesestablecido durante la instanciación inicial del backend. ( 2652 ) filter``map``NoiseLearner.run()Ahora es compatible con generadores, expresiones de generador y otros iteradores de una sola pasada. Anteriormente, estos se agotaban tras la comprobación de tipos inicial, lo que provocaba que los trabajos se enviaran sin ningún circuito. ( 2759 )
0.46.1 (23 de marzo de 2026)
Corrección de errores
- Se ha corregido un error por el que, en la versión
setuptools_scmanterior, se había~=8.0asignado erróneamente a. Se ha restablecido la restricción de versión a>=6.2.
0.46.0 (23 de marzo de 2026)
Otras notas
- La versión mínima necesaria de Qiskit es ahora
2.2.0. ( 2689 )
0.45.1 (12 de febrero de 2026)
Corrección de errores
- Al crear objetos de backend, .QiskitRuntimeService anteriormente solo
rzzcomprobaba las puertas en las puertas básicas del backend para decidir si utilizar la caché o crear un nuevo objeto de backend. Ahora, .QiskitRuntimeService comprobará lasrxpuertas yrzzen las puertas básicas del backend para decidir si actualizar la configuración o recuperarla de la caché. ( 2524 ) - La inicialización ya no falla si no es posible
QiskitRuntimeServicerecuperar la información del catálogo de una instancia (por ejemplo, debido a que la instancia está archivada). ( 2603 )
0.45.0 (8 de enero de 2026)
Nuevas funciones
qiskit-ibm-runtimeAhora es compatible con Qiskit v2.3.- El
delete_job()método ha sido reintroducido. ( 2541 )
Corrección de errores
- Corrección de
QiskitRuntimeService.backend()un error que se producía cuando el indicadoruse_fractional_gates=Truecomprobaba si había puertas o, o ambasRx,Rzzen lugar de soloRzzpuertas en la base del backend. ( 2520 )
Otras notas
- La versión mínima requerida de Qiskit es ahora
2.0.0, ya que la1.xserie Qiskit ya no es compatible. ( 2543 )
0.44.1 (12 de febrero de 2026)
Notas sobre características en desuso
- El envío de circuitos con campos no vacíos
circuit.calibrationsestá en desuso y se eliminará enqiskit-ibm-runtimev0.45. ( 2574 )
Corrección de errores
- Al crear objetos de backend, .QiskitRuntimeService anteriormente solo
rzzcomprobaba las puertas en las puertas básicas del backend para decidir si utilizar la caché o crear un nuevo objeto de backend. Ahora, .QiskitRuntimeService comprobará lasrxpuertas yrzzen las puertas básicas del backend para decidir si actualizar la configuración o recuperarla de la caché. ( 2524 ) - La inicialización ya no falla si no es posible
QiskitRuntimeServicerecuperar la información del catálogo de una instancia (por ejemplo, debido a que la instancia está archivada). ( 2603 )
0.44.0 (16 de diciembre de 2025)
Notas de actualización
-
Si se solicita un backend que no admite puertas fraccionarias al activar el indicador
use_fractional_gates=TrueenQiskitRuntimeService.backend(),IBMInputValueErrorse generará un error. ( 2405 ) -
Se ha actualizado el resolutor URL para que tanto el canal
ibm_cloudcomoibm_quantum_platformel canal generen ahora el mismo punto de entrada en tiempo de ejecución: URL (https://quantum.cloud.ibm.com/api/v[x]). Anteriormente, elibm_cloudcanal generaba una URL obsoleta ( URL ) y dependía de redireccionamientos. Este cambio elimina esa dependencia y armoniza la generación de « URL » en todos los canales. No hay cambios visibles para el usuario. ( 2486 ) -
Se ha establecido un orden
draw_circuit_schedule_timing()de canales en el eje y para, de acuerdo con el orden de los canales en el argumentoincluded_channelsde entrada. ( 2492 ) -
Se ha añadido un nuevo argumento
merge_common_instructionsde entradadraw_circuit_schedule_timing()que, si se establece enTrue, fusionará las instrucciones del mismo tipo basándose en la continuidad temporal.Ejemplo ( 2494 ):
from qiskit_ibm_runtime.visualization import draw_circuit_schedule_timing job_result: SamplerPubResult = job.result() circuit_schedule: str = job_result[0].metadata["compilation"]["scheduler_timing"]["timing"] fig = draw_circuit_schedule_timing( circuit_schedule=circuit_schedule, merge_common_instructions=True ) fig.show()
Nuevas funciones
-
Cuando se envía un trabajo, ahora aparecerán advertencias si la instancia utilizada ha alcanzado su límite. ( 2458 )
-
Se ha añadido un backend «Fake Nighthawk» (
FakeNighthawk) al módulofake_provider.Su mapa de acoplamiento y puertas básicas coinciden con los de un backend Nighthawk real, pero las propiedades no pretenden representar los valores de error típicos de Nighthawk. Puedes utilizar este backend falso para, por ejemplo, transpilear y optimizar tus circuitos en preparación para los próximos backends Nighthawk. Para un circuito Ising de red cuadrada de 100 qubits con 10 pasos de Trotter,
FakeNighthawkmostró una mejora del 600 % en la profundidad del circuito en comparación con un backend Heron. ( 2476 ) -
El
qiskit_ibm_runtime.transpiler.passesmódulo se ha ampliado con una nueva pasada del transpilador:ConvertMidCircMeas. Esta pasada detecta instrucciones no terminalesMeasureen un circuito y las convierte en instrucciones de medición en tiempo real compatibles con el dispositivo de destino. El pase se compone de dos argumentos:-
target(obligatorio): El objetivo del backend que define las instrucciones compatibles. -
mcm_name(opcional): El nombre de la instrucción de medición a mitad de circuito que se va a utilizar.El valor predeterminado es
measure_2. El nombre debe seguir el patrónmeasure_[X](por ejemplo,measure_3,measure_reset).
Durante la inicialización, el paso comprueba que el destino especificado admita la instrucción de medición a mitad de circuito indicada en al menos un qubit. De lo contrario, la construcción fracasa. Al ejecutarse, el comando realiza lo siguiente:
- Funciona en un circuito ya tendido.
- Sustituye únicamente las
Measure`instrucciones no terminales por la instrucción de medición en medio del circuito especificada, siempre que el destino la admita en el qubit físico correspondiente.
No hace lo siguiente:
- No sustituye a las mediciones en el terminal.
- No sustituye a las instrucciones de medición en circuito existentes (por ejemplo,
measure_2ameasure_3). - No convierte las mediciones en el punto medio del circuito en mediciones en los terminales.
Ejemplo de uso ( 2317 ):
from qiskit import QuantumCircuit from qiskit.transpiler import PassManager from qiskit.providers.fake_provider import GenericBackendV2 from qiskit_ibm_runtime.circuit import MidCircuitMeasure from qiskit_ibm_runtime.transpiler.passes import ConvertToMidCircuitMeasure from qiskit.transpiler.target import Target # Fake target construction for demo purposes mcm = MidCircuitMeasure() target = GenericBackendV2(num_qubits=2, seed=0).target target.add_instruction(mcm, {(i,): None for i in range(2)}) # Example usage qc = QuantumCircuit(2, 2) qc.measure(0, 0) qc.cx(0,1) qc.measure(1, 1) my_pass = ConvertToMidCircuitMeasure(target) pm = PassManager([my_pass]) new_qc = pm.run(qc) print(new_qc)Salida prevista:
┌────────────┐ q_0: ┤0 ├──■───── │ │┌─┴─┐┌─┐ q_1: ┤ Measure_2 ├┤ X ├┤M├ │ │└───┘└╥┘ c_0: ╡0 ╞══════╬═ └────────────┘ ║ c_1: ════════════════════╩═ -
Corrección de errores
- Corrección del error de autenticación IAM al utilizar una configuración de proxy especificada en
QiskitRuntimeService. El parche inyecta losproxiesatributosverifyy deQiskitRuntimeServiceenIAMTokenManagercuando se utiliza la autenticación en la nube (CloudAuth). ( 2344 )
Otras notas
- Se han eliminado los métodos obsoletos
check_pending_jobs()``delete_job()y, junto con la compatibilidad con Python 3.9. ( 2439 ) - Añadido
CircuitSchedulecomo entrada opcional adraw_circuit_schedule_timing(). Esto permite el preprocesamiento manual de los datos de sincronización del programa del circuito fuera de su función de dibujo. ( 2457 )
0.43.1 (23 de octubre de 2025)
Notas de actualización
- Al iniciar el sistema
QiskitRuntimeServicecon una cuenta guardada, loswarningmensajes de registro de nivel relativos al nombre de la cuenta guardada (o a la cuenta predeterminada) se han rebajado alinfonivel. ( 2445 )
0.43 (14 de octubre de 2025)
Notas sobre características en desuso
-
Se ha añadido un nuevo
targetargumento al inicializador tras las pasadas de análisis y relleno del transpilador:ALAPScheduleAnalysis,PadDelay,PadDynamicalDecoupling,BlockBasePadder. Este cambio armoniza estas pasadas con la arquitectura general del transpilador de Qiskit y sustituye al uso deldurationsargumento.La
DynamicCircuitInstructionDurationsclase, utilizada en las pasadas de programación personalizadas, ha quedado obsoleta a partir de la versiónqiskit-ibm-runtimev0.43. Esta clase se optimizó para las operaciones de programación en los procesadores Eagle, pero ha quedado obsoleta con la oferta actual de procesadores Heron. Esta clase se utilizó para definir el`durationsargumento en las pasadas de programación mencionadas anteriormente (ALAPScheduleAnalysis,PadDelay,PadDynamicalDecoupling,BlockBasePadder). El argumento también está en desuso y se eliminará en una futura versión.targetSe recomienda a los usuarios que migren al argumento. ( 2403 ) -
La clase
RuntimeOptionsestá obsoleta. Originalmente, esta clase sólo se utilizaba con programas personalizados y ya no es necesaria. (2435 )
Nuevas funciones
-
El
qiskit_ibm_runtimepaquete se ha ampliado con dos nuevos módulos:circuitycircuit.library. Estos módulos están diseñados para reflejar la estructura de los módulos correspondientesqiskitdel SDK, al tiempo que proporcionan implementaciones específicas de cada proveedor de los objetos de circuito y las instrucciones.La primera incorporación a esta nueva biblioteca de circuitos es la clase
MidCircuitMeasure. Esta clase permite la creación de instrucciones que siguen la convención de nomenclaturameasure_<identifier>, que se asignan a instrucciones específicas de hardware de medición de mitad de circuito que coinciden con ese patrón. El nombre por defecto de esta instrucción es"measure_2".Ejemplo de uso:
from qiskit import QuantumCircuit from qiskit_ibm_runtime.circuit import MidCircuitMeasure measure_2 = MidCircuitMeasure() measure_3 = MidCircuitMeasure("measure_3") qc = QuantumCircuit(1, 1) qc.append(measure_2, [0], [0]) qc.append(measure_3, [0], [0]) qc.measure([0], [0])Salida:
┌────────────┐┌────────────┐┌─┐ q: ┤0 ├┤0 ├┤M├ │ Measure_2 ││ Measure_3 │└╥┘ c: ╡0 ╞╡0 ╞═╩═ └────────────┘└────────────┘La utilidad
convert_to_target()se ha actualizado para admitir un campo"instruction_signatures"adicional en los archivos de configuración del backend (configuration.json). Este campo está destinado a representar instrucciones no unitarias y no estándar notificadas por el backend y debe respetar el siguiente esquema:"instruction_signatures" = [ { "name": "measure_2", "num_qubits": 1, "num_clbits": 1, "parameters": [], "return_type": "Bool", "description": "An alternative measurement. This can be used as a mid-circuit measurement in a dynamic circuit. ", }, { "name": "reset_2", "num_qubits": 1, "num_clbits": 1, "parameters": [], "return_type": "Bool", "description": "An alternative reset instruction.", } ]Además de este cambio, la función
convert_to_target()ahora acepta un argumentocustom_name_mappingy expone las banderasadd_delayyfilter_faultyde la implementación original del núcleo. (2316 ) -
QiskitRuntimeService.backends()yQiskitRuntimeService.backend()tiene un nuevo parámetro,calibration_id. Esta calibración personalizada se utilizará para crear el objetivo y también se empleará al ejecutar tareas primitivas en el backend. ( 2432 ) -
Se ha añadido una nueva función
visualization.draw_circuit_schedule_timing()para trazar los datos de temporización de la programación de circuitos devueltos en los metadatos de los resultados del trabajo. Actualmente se trata de una función beta y requiere que la opción experimental de"scheduler_timing"esté configurada enTrue, como se muestra a continuación. Actualmente sólo está disponible para los empleos deSampler.sampler = SamplerV2(backend) sampler.options.experimental = { "execution": { "scheduler_timing": True, }, }A continuación, se puede acceder a los datos de planificación del circuito desde los metadatos de resultados del trabajo de la siguiente manera:
job_result: SamplerPubResult = job.result() circuit_schedule = job_result[0].metadata["compilation"]["scheduler_timing"] circuit_schedule_timing = circuit_schedule["timing"]Esta función utiliza la nueva clase
CircuitSchedulepara cargar, analizar, preprocesar y trazar los datos para su trazado utilizando una interfaz compatible con Plotly. (2328 ) -
Ahora se admiten puntos finales privados virtuales para IBM Quantum Platform. Obtenga más información en nuestra guía sobre puntos finales privados virtuales. (2367 )
-
Ahora es posible recuperar las etiquetas de un trabajo sin tener que recuperarlo realmente con
QiskitRuntimeService.job(). ( 2420 ) -
El paso
ConvertISAToCliffordsoporta ahora la Cliffordización de circuitos que contienen puertas fraccionarias. (2427 )
0.42.0 (15 de septiembre de 2025)
Corrección de errores
- El comportamiento del
QiskitRuntimeService.least_busy()método era inconsistente porque esperaba una respuesta fija de la API para el campo «reason», que en el esquema de la API figura como opcional. Esto se ha solucionado dejando de depender de este campo. ( 2411 )
Notas de actualización
-
Cuando
QiskitRuntimeServicese inicialice sin una instancia y no haya ninguna instancia de cuenta guardada, ahora aparecerá una advertencia en la que se detallarán los filtros actuales (tags,region, yplans_preference) y las instancias disponibles. Siplans_preferenceno se configura, se da prioridad a las instancias del plan gratuito y de prueba frente a las instancias de pago.También se han añadido advertencias adicionales para dejar más clara la instancia activa actual:
- Mensajes de advertencia para indicar a los usuarios si están utilizando una cuenta guardada o si están utilizando credenciales especificadas manualmente.
- Cuando Qiskit Runtime seleccione automáticamente una instancia para el backend solicitado, aparecerá un aviso con el nombre de la instancia y el tipo de plan.
Ahora puedes iniciar
QiskitRuntimeServicesesión solo con un token de API (clave). Dado que se ha eliminado elibm_quantumnombre del canal y que tanto el canalibm_cloudcomoibm_quantum_platformel canal apuntan a la misma API, elchannelparámetro ya no es necesario.ibm_quantum_platformes el canal predeterminado. ( 2375 ) -
Dado que en
0.32.0se eliminó el soporte para la transmisión de resultados, se han eliminado la opción de entorno obsoleta (0.38.0)callback, así como los parámetrosBaseRuntimeJobclient_paramsyuser_callback.También se ha eliminado la clase
RuntimeJob. Todas las primitivas devuelven trabajos comoRuntimeJobV2. Se han actualizado las sugerencias de tipo en todo el código base para reflejar este cambio. (2298 ) -
RuntimeJobV2.properties()Ahora se recuperarán las propiedades del backend correspondientes al momento en que el trabajo comenzó a ejecutarse, en lugar de al momento en que se creó. ( 2369 ) -
Se ha corregido una incoherencia en la conversión de unidades de
rep_timesenQasmBackendConfigurationpara mantener la coherencia entre la inicialización y la serialización. Ahora, el parámetro se convierte correctamente de microsegundos a segundos durante la inicialización y vuelve a microsegundos al serializarse medianteto_dict(), lo que coincide con el comportamiento de otros parámetros de tiempo:rep_delay_rangeydefault_rep_delay. ( 2386 ) -
A partir de ahora, se generará un error constante durante la inicialización del servicio si se proporciona un token de API no válido a
QiskitRuntimeService.También se producirá un error si la cuenta asociada al token especificado no tiene acceso a la instancia dada. Este era el comportamiento documentado anteriormente en las notas de la versión
0.40.0. (2408 )
Nuevas funciones
-
Dado que los backends ahora admiten la ejecución de trabajos que contienen tanto compuertas fraccionarias como circuitos dinámicos, las instrucciones de flujo de control ya no se filtran al utilizar
use_fractional_gates=True. Como resultado, existe un nuevo plugin de traducción de estados,IBMDynamicFractionalTranslationPlugin, para orientar circuitos tanto con circuitos dinámicos como con puertas fraccionarias.IBMFractionalTranslationPluginestá obsoleto porque ya no es necesario. (2366 )
0.41.1 (18/08/2025)
Corrección de errores
-
Se han corregido varios errores por los que, al tener una instancia guardada por defecto o al pasar el nombre de la instancia, se producía un
IBMInputValueErroral crear unSession/BatchAdemás,
QiskitRuntimeService.least_busy()ahora devuelve correctamente el backend menos ocupado en los casos en los que se pasa elinstanceparámetro y no hay ninguna instancia predeterminada. ( 2359 )
0.41.0 (24 de julio de 2025)
Preludio
La versión qiskit-ibm-runtime v0.41.0 se centra en la eliminación de IBM Quantum Platform Classic y en la mejora de la experiencia de usuario para la nueva IBM Quantum Platform. Entre las nuevas funciones, mejoras y correcciones de errores menores, destacan las siguientes:
- El canal
ibm_quantumy el IQP Classic ya no son compatibles.QiskitRuntimeService.least_busy()es considerablemente más rápido.QiskitRuntimeService.usage()Se ha actualizado para mostrar información sobre el límite de uso actual de la instancia, el consumo y el tiempo restante.
Notas de actualización
- Debido a la desaparición de IBM Quantum Platform Classic, el canal
ibm_quantumya no es compatible conqiskit-ibm-runtime. No se podrá acceder a las cuentas y datos guardados del canalibm_quantum. Utilice en su lugar el canalibm_quantum_platform. Consulte nuestra guía de migración para obtener más información. (2289 )
Nuevas funciones
-
Se ha añadido un nuevo parámetro,
tags, al inicializador yQiskitRuntimeService.save_account()alQiskitRuntimeServicemétodo.tagsSe puede utilizar para filtrar instancias, de modo que solo se devuelvan aquellas que tengan las etiquetas indicadas.Además, si no se devuelven instancias válidas al utilizar los filtros
tags,region, oplans_preference, ahora se producirá un error en la inicialización. Asegúrese de que los nombres detagsyregioncoinciden exactamente con la instanciatagsoregion(sin distinguir mayúsculas de minúsculas). Enplans_preference, siempre que se introduzca un nombre de plan que coincida, se dará prioridad a las instancias con el nombre de plan coincidente. (2277 ) -
Con la migración a la nueva IBM Quantum Platform, había algunas incoherencias con IBM Quantum Platform Classic que debían solucionarse:
QiskitRuntimeService.usage()Ahora devuelve información de uso de la instancia activa actual de IBM Cloud.QiskitRuntimeService.delete_job()No es compatible con la nueva plataforma, por lo que ha quedado obsoleto.RuntimeJobV2.instance()devolverá ahora el CRN de la instancia IBM Cloud.RuntimeJob.queue_usage()no es compatible con la nueva plataforma, por lo que ha quedado obsoleta. (2296 )
-
El soporte para ejecutar
qiskit-ibm-runtimecon Python 3.9 ha sido obsoleto y será eliminado en una futura versión.Además,
qiskit-ibm-runtimeya es oficialmente compatible con Python 3.13. (2314 ) -
Al guardar una cuenta, ahora hay una comprobación de validación para asegurarse de que los parámetros
region,plans_preference, ytagsson válidos. (2319 ) -
Hay un nuevo método que
QiskitRuntimeService.active_instance()devuelve el objetoIBM CloudCRN de la instancia activa actual.El
QiskitRuntimeService.jobs()método se ha actualizado para que acepte correctamente elinstanceparámetro, que se puede utilizar para filtrar trabajos. ( 2325 ) -
QiskitRuntimeService.usage()Se ha actualizado para incluir unusage_remaining_secondscampo. Este campo incluye la diferencia entre el valor notificadousage_limit_secondsousage_allocation_seconds(dependiendo de cómo esté configurada la instancia) yusage_consumed_seconds. Para obtener más información sobre los límites de asignación de instancias, haz clic aquí. ( 2329 ) -
refresh()tiene un nuevo parámetro,use_fractional_gates, que se puede establecer enTruepara permitir que el falso backend incluya puertas fraccionarias. Tenga en cuenta que este método sólo funciona si tiene acceso al backend real. (2342 ) -
Se ha actualizado el
QiskitRuntimeServicepara que utilice una nueva versión de la API. Con la nueva versión, elQiskitRuntimeService.least_busy()método se ha actualizado para aprovechar la versión mejoradaBackendsResponseV2, lo que lo hace considerablemente más rápido. ( 2323 ) -
La clase
TwirledSliceSpantiene un nuevo miembrodata_slice_versionde datos de tipo entero, con un valor por defecto de 1. Cuando se establece en 2, las tuplas de la sección de datos contienen información sobre las tomas de PUB, que se utilizan paraTwirledSliceSpan.mask()dar forma a la matriz devuelta. El último eje se recortará, de modo que su longitud se reducirá apub_shots. ( 2312 ) -
Añadida serialización para
qiskit.quantum_info.PauliLindbladMap. (2297 ) -
Existe un nuevo método
convert_to_rzz_valid_pub(), que puede utilizarse para transformar un PUB en un PUB equivalente que sea compatible con las restricciones Rzz. Actualmente, el método no admite circuitos dinámicos y no preserva la fase global. (2126 )
Corrección de errores
- Se ha corregido un error por
BasePrimitiveel que las primitivas instanciadas dentro de unSessiongestor de contexto oBatchsin elmodeparámetro obtenían el backend del servicio (por nombre) en lugar de utilizar el backend pasado a oSessionBatch. Esto podría provocar problemas cuando los usuarios modificaran elSessionbackend oBatch(por ejemplo, al eliminar una puerta), ya que las primitivas obtendrían del servicio el objeto del backend sin modificar. Tras la corrección, se utiliza directamente elSessionobjeto backend oBatch. ( 2282 ) - Se ha solucionado un problema por
IBMBackendel que los cambios en las propiedades, como las modificaciones enbasis_gates, persistían incluso después de que se hubiera actualizado el objeto del backend. ( 2283 ) - Se ha corregido la serialización de los intervalos de ejecución, para garantizar que las ejecuciones de versiones antiguas de qiskit-ibm-runtime no se bloqueen al intentar descodificar intervalos de ejecución recién codificados. Sin embargo, la deserialización con versiones anteriores devolverá ahora los intervalos de ejecución en formato de diccionario, y no en forma de objeto
ExecutionSpans.TwirledSliceSpanV2Como parte de este trabajo, también hemos eliminado eldata_slice_versioncampo deTwirledSliceSpan; los intervalos de segmentos «twirled» que tienen en cuenta las tomas de pub ahora se gestionan mediante una nueva clase. ( 2347 )
Otras notas
max_experimentsLos atributos obsoletosIBMBackendy se han eliminado,max_shotsy elIBMBackend.max_circuits()método ahora devuelveNone. Consulta la guía de límites de trabajos para obtener más información. ( 2235 )- Se han eliminado los métodos
defaults()yFakeBackendV2, que estaban obsoletosIBMBackend. Quedaron obsoletas en la versión « v0.38.0 ». También se han eliminado los valores predeterminados de Pulse de todos los backends falsos. ( 2238 ) - Se ha mejorado el mensaje de error que se muestra cuando
ExecutionSpan.mask()se invoca para unPUBque no está incluido en elspan. ( 2311 )
0.40.1 (4 de junio de 2025)
Corrección de errores
- Se ha corregido un problema por el que, si no se había guardado ninguna instancia ni se había pasado ninguna durante la inicialización, el servicio no podía realizar ninguna llamada a la API hasta
QiskitRuntimeService.backend()que se llamara primero a oQiskitRuntimeService.backends()a. - Se ha corregido un error por el que si se establecía
use_fractional_gatespero ya se había almacenado en caché la configuración del backend, podía devolverse la configuración incorrecta. (2269 )
Otras notas
- Se han actualizado los mensajes de error relacionados con los ángulos de puerta de
rzzque estaban fuera del rango permitido de 0 a durante la validación del circuito para aclarar que el valor del ángulo solicitado en el circuito era el problema y no un valor de ángulo proporcionado por el backend. (2276 )
0.40.0 (28 de mayo de 2025)
Nuevas funciones
-
Se han introducido los siguientes cambios para apoyar la próxima migración de la plataforma IBM Quantum :
-
Se ha introducido un nuevo tipo de canal,
ibm_quantum_platform, para la inicialización de servicios (QiskitRuntimeService()). Se une a los canales existentesibm_quantum(ahora obsoleto) yibm_cloud. Por defecto, se seleccionaibm_quantum_platformcuando no se especifica ningún canal. Este nuevo canal conecta con la nueva API de la plataforma IBM Quantum y está pensado para sustituir aibm_cloud. Mientras tanto, el canalibm_cloudredirigirá a la nueva API, pero se desaconseja su uso continuado. -
Ya no es necesario introducir
instanceun valor para guardar (QiskitRuntimeService.save_account()) o inicializar (QiskitRuntimeService()) una cuenta en la nueva plataforma (yibm_quantum_platform, de forma temporal,ibm_clouden los canales). Si no se pasa ninguna instancia, se comprobarán todas las instancias al recuperar un backend, (service.backend("backend_name")). Si se pasa una instancia aQiskitRuntimeService.save_account(), o se pasa durante la inicialización, se utilizará como instancia predeterminada al recuperar backends. La instancia que se pase durante la inicialización tendrá prioridad sobre la guardada en la cuenta. -
Ten en cuenta que el token de la API de IBM Cloud (
token) es necesario para guardar (QiskitRuntimeService.save_account()) o inicializar (QiskitRuntimeService()) una cuenta en la nueva plataforma. Se considera el identificador de la cuenta y desbloqueará los recursos asociados a la cuenta en la que se creó el token. Aquí puedes consultar la lista de tokens por cuenta. Solo se puede utilizar una cuenta por token de API. Si quieres utilizar varias cuentas, debes crear varios tokens de API. -
Los
QiskitRuntimeService.backend()métodos yQiskitRuntimeService.backends()se han actualizado para aceptar uninstancepasado explícitamente al recuperar backends:service.backend(name="...", instance="..."). -
Se han añadido nuevos parámetros,
region, yplans_preference, al inicializador yQiskitRuntimeService.save_account()alQiskitRuntimeServicemétodo. Se pueden utilizar para dar prioridad a determinadas instancias en la nueva plataforma (yibm_quantum_platform, de forma temporal,ibm_clouda los canales) sin tener que especificar explícitamente el CRN. Más concretamente:region: Establece una preferencia de región.us-eastoeu-de.plans_preference: Es una lista de tipos de cuenta, ordenados por preferencia. Se dará prioridad a una instancia del primer tipo de la lista.
Por ejemplo, si
regionse guarda comous-east, sólo se comprobarán las instancias deus-east. Si se defineplans_preference, las instancias se priorizarán en el orden indicado, por lo que['Open', 'Premium']priorizaría todas las instancias del Plan Abierto, después todas las del Plan Premium y después el resto. Tenga en cuenta que los nombres de los planes enplans_preferencedeben coincidir exactamente con los nombres de la API (sin distinguir mayúsculas de minúsculas). -
El
instanceparámetro de entrada deQiskitRuntimeServicese ha ampliado para admitir nuevos tipos de entrada para losibm_quantum_platformcanales yibm_cloud. Además del nombre de recurso « IBM Cloud » ( CRN ), ahora se puede introducir el nombre de la instancia como valor de la instancia. -
El
instances()método se ha ampliado para mostrar todas las instancias disponibles asociadas a una cuenta para losibm_quantum_platformcanales yibm_cloud, además del canal ya habilitadoibm_quantum.Los siguientes fragmentos de código muestran los nuevos patrones de uso habilitados por los cambios descritos anteriormente (2239 ):
# save account service = QiskitRuntimeService.save_account( # No channel needs to be specified, ibm_quantum_platform is the default token=token, region="eu-de", # Optional plans_preference=['Open',...], #Optional set_as_default=True #Optional ) # initialize account service = QiskitRuntimeService() # defaults to ibm_quantum_platform account service.backend(name="...") # picks instance based on saved preferences service.backend(name="...", instance="...") # can also explicity pass in an instance to use # initialize account with instance service = QiskitRuntimeService(instance = "...") # sets instance as default instance service.backend(name="...") # only checks default instance, fails if the backend not in the instance service.backend(name="...", instance="...") # can still explicity pass in a different instance # OR # save account with instance service = QiskitRuntimeService.save_account( # No channel needs to be specified, ibm_quantum_platform is the default token=token, instance="..." # This will be the default instance region="us-east", # Optional plans_preference=['Open',...], #Optional set_as_default=True #Optional ) # initialize account service = QiskitRuntimeService() # defaults to ibm_quantum_platform account service.backend(name="...") # only checks saved default instance from save_account service.backend(name="...", instance="...") # can also explicity pass in an instance which takes precendence # initializing account with instance works the same way service = QiskitRuntimeService(instance = "...") # sets instance as default instance, overrides instance from save_account service.backend(name="...") # only checks default instance, fails if the backend not in the instance service.backend(name="...", instance="...") # can still explicity pass in a different instance
-
-
La opción
privatedeEnvironmentOptionses ahora compatible con los canalesibm_cloudyibm_quantum_platform(nueva plataforma Quantum IBM ). Cuando esta opción se establece enTrue, el trabajo se devolverá sin parámetros, y los resultados sólo se pueden recuperar una vez.También hay una nueva propiedad
private()que devuelve si un trabajo es privado o no. (2263 )
Corrección de errores
- Se ha eliminado la llamada a
defaults()entarget()porque ya no se utilizan los valores predeterminados de backend en la generación de objetivos. (2261 )
0.39.0 (13 de mayo de 2025)
Nuevas funciones
- La versión máxima admitida del servicio QPY es ahora la 14. (2231 )
- Las entradas de Pub en
EstimatorV2están ahora sujetas a un nuevo paso de validación que comprueba que los observables estén formados por operaciones de Pauli que solo contengan {I, X, Y, Z}. ( 2254 )
Corrección de errores
- Se ha añadido un nuevo parámetro
create_newa lasBatchclases ySession. Este parámetro permite a los usuarios controlar si se debe llamar al punto final de la API de sesión POST al inicializar la clase. El valor por defecto esTrue, ya que así ocurre en la mayoría de los flujos de trabajo destinados a los usuarios. Sin embargo, métodos comoSession.from_id()lo configuran enFalsepara evitar que se genere una nueva sesión mientras la sesión original siga activa. Con esto se han solucionado los problemas por los que se generaban varias sesiones al mismo tiempo al llamar a.from_id(). ( 2195 ) - Se ha eliminado la indicación de tipo incorrecta
Optionaldelbackendparámetro enSessionyBatch. ( 2222 ) Session.from_id()Ahora genera un error si la sesión no tiene un backend conocido. Esto suele ocurrir cuando aún no se ha ejecutado ningún trabajo en la sesión. ( 2226 )
Otras notas
- IBM Cloud utilizarán ahora un token de acceso para llamar a la API Qiskit Runtime en lugar del token proporcionado por el usuario. (2102 )
IBMInputValueErrorhereda ahora deValueError, además de la clase padre existenteIBMError. Algunas funciones de validación que antes generaban excepcionesValueErrorahora generan excepcionesIBMInputValueError. (2250 )
0.38.0 (15 de abril de 2025)
Notas sobre características en desuso
RuntimeJobAhora está en desuso y se eliminará como muy pronto tres meses después de esta versión.RuntimeJobfue sustituido porRuntimeJobV2en todas las implementaciones primitivas, por lo que su obsolescencia no debería tener ningún impacto para los usuarios. La principal diferencia entre ambas clases es questatus()la primera devuelve una cadena en lugar de la enumeración deJobStatusQiskit. ( 2170 )- Dado que ya no se admiten las puertas de pulso, el
IBMBackendmétododefaults()yFakeBackendV2ha quedado obsoleto y se eliminará como muy pronto tres meses después de esta versión. Aunque el método sigue existiendo, estos valores predeterminados de pulso ya no se utilizan para construir el objetivo del backend. ( 2186 ) - La opción de canal
ibm_quantumestá obsoleta y desaparecerá el 1 de julio. Después de esta fecha,ibm_cloud,ibm_quantum_platform, ylocalserán los únicos canales válidos. Para obtener ayuda sobre la migración al nuevo IBM Quantum Platform en el canalibm_cloud, lea la guía de migración. (2205 )
Nuevas funciones
- Los atributos de la configuración de backends falsos pueden recuperarse ahora directamente con
backend.<attribute_name>. (2202 )
Corrección de errores
- Se ha corregido un error por el que
DoubleSliceSpan.mask()yTwirledSliceSpan.mask()daban error cuando contenían una rebanada unidimensional. (2184 )
Notas de actualización
- Dado que la compatibilidad con la transmisión de resultados se eliminó en
0.32.0, se ha eliminado el código de websocket restante. Como parte de este proceso, la opción de entornocallbackqueda obsoleta, así como los parámetrosclient_paramsyuser_callbackenBaseRuntimeJob. (2143 )
0.37.0 (13 de marzo de 2025)
Notas sobre características en desuso
- Los atributos
IBMBackendmax_shotsymax_experiments, así como la propiedadmax_circuitshan quedado obsoletos. Estos valores de atributo solían representar el número máximo de tomas y circuitos que se podían enviar en un trabajo, pero ya no es así. Consulte la guía de límites de trabajo para más detalles. (2166 )
Nuevas funciones
-
qiskit-ibm-runtimees ahora compatible con Qiskit 2.0. Esto significa que las clases y métodos eliminados en Qiskit 2.0 también han sido eliminados o tratados en consecuencia. A continuación se destacan los cambios relacionados conpulseychannel:ChannelenIBMBackend.- Se ha eliminado la clase de configuración de backend
PulseBackendConfiguration, por lo que todos los backends se devolverán ahora comoQasmBackendConfiguration. PulseDefaults(valores por defecto del backend), pero ya no son necesarios al crear un backendTarget.
Consulte la guía de migración de Pulse para obtener más información. (2116 )
-
Se ha añadido una advertencia cuando se inicializa una primitiva fuera de un gestor de contexto de sesión o de lote. En este caso, el trabajo se ejecutará en modo trabajo en lugar de sesión o lote. (2152 )
Corrección de errores
- Corregido el soporte para la programación personalizada transpiler etapas con Qiskit 2.x. (2153 )
- ConvertConditionsToIfOps ahora se ejecuta correctamente en todos los niveles de optimización de los plugins de programación para circuitos dinámicos, cuando se utiliza Qiskit 1.x. (2154 )
- Al recuperar trabajos con
jobs(), no hay forma de distinguir entre las primitivas « v1 » y « v2 ». Dado que las primitivas de « v1 » se eliminaron por completo hace más de seis meses en0.28.0, los trabajos devueltos desdejobs()pasarán ahora por defecto aRuntimeJobV2. ( 2156 )
0.36.1 (14 de febrero de 2025)
Corrección de errores
- Se ha corregido un problema por el que si no se tenía instalado
qiskit-aerse producía un error de importación. (2144 )
0.36.0 (14 de febrero de 2025)
Notas de actualización
-
La versión mínima requerida de
qiskites ahora 1.3. Qiskit 1.3 presenta la versión 13 de QPY. Se ha aumentado la versión mínima requerida de Qiskit para que Qiskit Runtime pueda utilizar la última versión de QPY para serializar circuitos en los envíos de trabajos. (2096 ) -
Se han eliminado las siguientes obsoletas:
- Se ha eliminado la compatibilidad con la opción de simulador
noise_modelen simuladores de nube. Esta opción seguirá funcionando en modo de prueba local. - Se han eliminado las propiedades
NoiseLearnerResultgeneratorsyrates. Todavía se puede acceder a ellos en la propiedaderror. - Se ha eliminado la función de utilidad
get_runtime_api_base_url(). (2124 )
- Se ha eliminado la compatibilidad con la opción de simulador
0.35.0 (4 de febrero de 2025)
Notas de actualización
- Python 3.8 llegó al final de su vida útil el 7 de octubre de 2024. El SDK de Qiskit ha eliminado la compatibilidad con 3.8 en
qiskit 1.3. En la misma línea,qiskit-ibm-runtimeya no es compatible con Python 3.8. (2097 ) - Se ha eliminado la compatibilidad con
backend.run(). Consulte la guía de migración para obtener instrucciones para migrar cualquier código existente que utilicebackend.run()a la nueva interfaz de primitivas V2. (1962 ) - Las expresiones de parámetros con puertas RZZ se cotejarán con los valores que se les hayan asignado en PUB. Se producirá un error
IBMInputValueErrorsi los valores de parámetro especificados en PUB hacen que una expresión de parámetro se evalúe a un ángulo no válido (negativo o mayor quepi/2). (2093 ) - Cuando se produzca una interrupción por mantenimiento, aparecerá un mensaje de error al intentar inicializar
QiskitRuntimeService. (2100 )
Nuevas funciones
- Los trabajos ejecutados en el modo de prueba local devolverán ahora una instancia de una nueva clase,
LocalRuntimeJob. Esta nueva clase hereda de la clasePrimitiveJobde Qiskit a la vez que añade los métodos y propiedades que se encuentran enBaseRuntimeJob. De este modo, la ejecución de trabajos en el modo de prueba local será más similar a la ejecución de trabajos en un backend real. (2057 ) - Se han añadido dos nuevos backends falsos,
FakeFezyFakeMarrakesh. Son dispositivos Heron de 156 qubits. (2112 )
0.34.0 (5 de diciembre de 2024)
Nuevas funciones
-
Añadidas las funciones
draw_zne_evsydraw_zne_extrapolatorspara visualizar los datos de los experimentos realizados con ZNE. AñadidoEstimatorPubResultcon los métodosdraw_zne_evsydraw_zne_extrapolators, que invocan las funciones de visualización correspondientes. (1820 ) -
Se ha añadido compatibilidad con el modelo de ruido y los datos de nivel 1 al muestreador local
La
simulator.noise_modelopción ahora se transmite alBackendSamplerV2como una opción «noise_model» dentro deSamplerV2«run_options» si la primitiva admite la opción «run_options» (esta compatibilidad se añadió en Qiskit v1.3 ).SamplerV2Del mismo modo, laexecution.meas_typeopción ahora se traduce enmeas_levellas opciones ymeas_returnenrun_optionslaBackendSamplerV2sección del, siempre que este admitarun_options. Este cambio permite el uso de datos de nivel 1 en el modo de prueba local, donde antes solo se admitían datos de nivel 2 (clasificados). ( 1990 ) -
Se ha añadido una nueva función
validate_rzz_pubs. La función verifica que los parámetrosrzzse encuentran en el rango entre0ypi/2, para parámetros numéricos (por ejemplo,rzz(np.pi/4, 0)), y para parámetros no limitados (rzz(theta, 0)) con valores a sustituir proporcionados en el pub. Las expresiones de parámetros (por ejemplo,rzz(theta + phi, 0)) siguen sin validarse. (2021 ) -
FoldRzzAngleSe ha añadido un nuevo complementoIBMFractionalTranslationPluginde traducción para el transpilador y una pasada. Este complemento se aplica automáticamente a los backends recuperados con eluse_fractional_gatesopt-in, y la pasada de plegado se añade cuando el backend de destino incluye laRZZgate.El nuevo paso modifica el circuito cuántico de entrada, de modo que todas las compuertas
RZZdel circuito tengan un parámetro angular dentro de [0, pi/2] que es soportado por los procesadores IBM Quantum. (2043 )
Notas de actualización
-
Se han eliminado los elementos obsoletos de la versión
0.26.0.- Pasar un backend como cadena a
Session,Batch,Sampler, yEstimatorya no es válido. Utilice el objeto backend real en su lugar. - Anteriormente, al pasar un backend como modo en
SamplerV2oEstimatorV2se ejecutaban los trabajos en modo trabajo, incluso si estaba abierto un gestor de contexto de sesión. Estos trabajos se ejecutarán ahora dentro de la sesión abierta. Además, si se pasa como modo un backend distinto del backend de sesión, se producirá un error. Serviceya no es un parámetro válido enSessionyBatch. (2027 )
- Pasar un backend como cadena a
Corrección de errores
- Se ha solucionado un problema por el que
FakeBackendV2.refresh()no siempre actualizaba las propiedades, los valores predeterminados y la configuración del backend. (2020 ) CouplingMapse ha añadido aRuntimeEncoderpara que ahora se pueda pasar alNoiseLearnerprograma. ( 2026 )- Se ha modificado el comportamiento del
use_fractional_gatesargumento deQiskitRuntimeService.backend(). Cuando la opción está configurada enFalse, ahora se filtran todas las referencias a puertas fraccionarias de los datos de configuración y propiedades de la API. Del mismo modo, cuando la opción está configurada enTrue, todas las instrucciones de circuitos dinámicos se filtran de los datos de configuración y propiedades. Anteriormente, esta opción solo afectaba a la creación del objetivo del backend, lo que significaba que las instrucciones del objetivo no coincidían con las de los datos de configuración y propiedades. En general, este cambio debería pasar desapercibido para los usuarios, pero si hay código que dependa de los datos de configuración y propiedades que contienen todas las instrucciones, será necesario actualizarlo (ten en cuenta que al estableceruse_fractional_gatesenNonese cargarán todas las instrucciones sin filtrar). ( 2031 ) - Las configuraciones de backend no válidas o inexistentes en el servidor ya no impedirán que se recuperen todos los backends con
service.backends(). (2048 ) - Conecte la versión de dependencia
pydantica<2.10para evitar que una regresión rompa el proceso de compilación. (2049 )
Otras notas
-
Se han eliminado los archivos
requirements.txtysetup.pyen favor de un nuevo enfoque de gestión de dependencias mediantepyproject. Esta transición simplifica el flujo de trabajo de desarrollo. Las dependencias se gestionan ahora directamente a través del archivo pyproject.toml.- Utilice
pip install -e .para instalar las dependencias de qiskit-ibm-runtime. - Utilice
pip install -e ".[dev]"para instalar las dependencias de desarrollo. - Utilice
pip install -e ".[visualization]"para instalar las dependencias de visualización. (2053 )
- Utilice
0.33.2 (11 de noviembre de 2024)
Corrección de errores
- Se ha corregido un problema por el que la validación de RZZ no gestionaba correctamente las expresiones de parámetros. (2035 )
0.33.1 (8 de noviembre de 2024)
Otras notas
- Se ha añadido un alias privado a
decode_backend_configuration(). (2028 )
0.33.0 (7 de noviembre de 2024)
Nuevas funciones
- Se ha añadido
draw_layer_errors_swarm()una función que dibuja un gráfico de enjambre de uno o másLayerErrorobjetos. También se ha añadido el métododraw_swarm()de conveniencia para llamar a la función de dibujo en una instancia concreta. ( 1988 ) - Se
TwirledSliceSpanha añadido unExecutionSpanque se utiliza cuando la función «twirling» está activada en el Sampler. En concreto, lleva un registro de un eje de forma adicional correspondiente a las aleatorizaciones de giro, y también indica si dicho eje se encuentra al principio de la tupla de formas o justo antes del eje de tomas. ( 2011 )
Notas de actualización
- Los demás backends falsos de V1 -
FakeMelbourne,FakePoughkeepsie,FakeTenerife,FakeTokyo, yFakeRueschlikonhan sido eliminados. (2012 )
Corrección de errores
- Se ha corregido la ubicación del texto flotante en la función
draw_execution_spans(). Antes de esta corrección, se dibujaban en los marcadores equivocados. (2014 )
0.32.0 (30 de octubre de 2024)
Nuevas funciones
-
Se
draw_execution_spans()ha añadido una función para crear una figura de Plotly que visualice uno o másExecutionSpansobjetos. También se ha añadido el métododraw()de conveniencia para llamar a la función de dibujo en una instancia concreta. ( 1923 )from qiskit_ibm_runtime.visualization import draw_execution_spans # use the drawing function on spans from sampler job data spans1 = sampler_job1.result().metadata["execution"]["execution_spans"] spans2 = sampler_job2.result().metadata["execution"]["execution_spans"] draw_execution_spans(spans1, spans2) # convenience to plot just spans1 spans1.draw() -
Añadido un nuevo método,
backend.refresh()que refresca el objetivo actual del backend con las últimas actualizaciones del servidor. (1955 ) -
DoubleSliceSpanSe ha añadido una opciónExecutionSpanpara procesar por lotes con dos segmentos. ( 1982 ) -
Cada una de
SamplerV2las clasesEstimatorV2,, ynoise_learner.NoiseLearnercuenta ahora con unbackend()método que devuelve el backend con el que está configurada la clase. ( 1995 )
Notas de actualización
-
Se han eliminado los elementos obsoletos de la versión
0.25.0.optimization_levelya no es una opción válida paraEstimatorV2.- Se han eliminado los métodos de trabajo
interim_results()ystream_results(). (1965 )
-
Se ha eliminado el parámetro
channel_strategyenQiskitRuntimeService. Para seguir utilizando Q-CTRL en su flujo de trabajo, explore las siguientes opciones:- Si su organización tiene una instancia existente de IBM Quantum Premium Plan: migre a la función de gestión del rendimiento Q-CTRL, que se encuentra en el catálogo de funciones de Qiskit.
- Para seguir utilizando Qiskit Runtime con IBM Cloud : migre a Q-CTRL Fire Opal, el mismo producto de gestión del rendimiento accesible directamente a través de Q-CTRL. Puede conectar su clave API de IBM Cloud y su CRN de Qiskit Runtime a Fire Opal. ( 1966 )
0.31.0 (15 de octubre de 2024)
Nuevas funciones
- Se ha añadido Noisy Estimator Analyzer Tool (NEAT), una clase que ayuda a comprender el rendimiento esperado de los trabajos de Estimator. (1950 )
- Actualizada la comprobación ISA para validar que el ángulo
rzzestá entre[0, pi/2]. (1953 )
Notas de actualización
- Se han eliminado los backends falsos de V1. (1946 )
Corrección de errores
- Se ha solucionado un problema con la validación de ISA por el que un cambio relacionado con la conectividad dentro de las operaciones de control no se aplicaba correctamente. (1954 )
0.30.0 (23 de septiembre de 2024)
Notas sobre características en desuso
-
La función
get_runtime_api_base_urlha quedado obsoleta. Utilicedefault_runtime_url_resolveren su lugar. (1914 ) -
El parámetro
channel_strategyha quedado obsoleto. La estrategia de gestión del rendimiento Q-CTRL se suprimirá el 18 de octubre de 2024. Para seguir utilizando Q-CTRL en su flujo de trabajo, explore las siguientes opciones:- Si su organización tiene una instancia existente de IBM Quantum Premium Plan: migre a la función de gestión del rendimiento Q-CTRL, que se encuentra en el catálogo de funciones de Qiskit.
- Para seguir utilizando Qiskit Runtime con IBM Cloud : migre a Q-CTRL Fire Opal, el mismo producto de gestión del rendimiento accesible directamente a través de Q-CTRL. Puede conectar su clave API de IBM Cloud y su CRN de Qiskit Runtime a Fire Opal. ( 1931 )
-
En una futura versión,
RuntimeJob.status()se devolverá como una cadena en lugar de como una instancia deJobStatus. (1933)
Nuevas funciones
-
Añadidos nuevos métodos
Session.usage(),Batch.usage(), yJob.usage()que devuelven información sobre el uso de trabajos y sesiones. Encontrará más información aquí. (1827 ) -
Añadido el paso de transpilación
ConvertISAToCliffordpara convertir las puertas de un circuito en puertas Clifford. (1887 ) -
Se ha añadido
url_resolverun parámetro opcional alQiskitRuntimeServiceconstructor para permitir la generación personalizada de la API de Qiskit Runtime URL en función de los valores proporcionadosurl,instanceyprivate_endpoint. Si no se especifica, se utilizará el resolutor predeterminado.# Define a custom resolver. In this case returns the concatenation of the provided `url` and the `instance` def custom_url_resolver(url, instance, *args, **kwargs): return f"{url}/{instance}" service = QiskitRuntimeService(channel="ibm_quantum", instance="ibm-q/open/main", url="https://baseurl.org" url_resolver=custom_url_resolver) # resulting resolved url will be: `https://baseurl.org/ibm-q/open/main` -
Añadida la función de utilidad
default_runtime_url_resolver. (1914 ) -
La bandera
use_fractional_gatesparaQiskitRuntimeService.backend()yQiskitRuntimeService.backends()puede ser ahoraNone. Cuando se establece enNone, no se realiza ningún filtrado de instrucciones, y el objetivo backend devuelto puede contener tanto puertas fraccionarias como operaciones de flujo de control. (1938 )
Notas de actualización
-
Se han eliminado los elementos obsoletos de la versión
0.24.0. Se han introducido los siguientes cambios.- Los argumentos backend y session para Sampler y Estimator se han eliminado y sustituido por "mode"
- La propiedad primitiva
Sessionse ha sustituido pormode - Ya no es posible especificar opciones sin la estructura completa del diccionario
Job.program_id()se ha sustituido porJob.primitive_id()Service.run()ySession.run()se han sustituido por un método privado,_run()- En
Service.backend(), "name" es ahora un parámetro obligatorio Service.get_backend()se ha eliminado y sustituido porbackend()(1907 )
Corrección de errores
- Se ha corregido un error que impedía ejecutar primitivas en el contexto de sesión con puertas fraccionarias. (1922)
0.29.1 (17 de septiembre de 2024)
Nuevas funciones
- Se ha añadido lógica para codificar y descodificar
NoiseLearnerResult. (1908 )
0.29.0 (4 de septiembre de 2024)
Notas sobre características en desuso
- La opción de simulador
noise_modelha quedado obsoleta para los trabajos que se ejecutan en dispositivos reales.noise_modelseguirá siendo una opción aceptable cuando se utilice el modo de prueba local. (1892 )
Nuevas funciones
- Hemos añadido nuevas clases:
ExecutionSpanyExecutionSpanSet. Estas clases se utilizan en los metadatos de resultados primitivos para transmitir información sobre las horas de inicio y finalización de los trabajos por lotes. ( 1833 ) - Se ha añadido una nueva opción
privateenEnvironmentOptions. (1888 ) - Añadida la opción
fallbacka los extrapoladores ZNE. (1902 )
Corrección de errores
- Portado el método
Noise_model.from_dict()deqiskit-aerporque fue eliminado en0.15.0. (1890 ) - Revertir un cambio anterior en
backend.targeten el que el objetivo ya no se almacenaba en caché. (1891 ) - Se ha corregido un problema por el que
Session.from_id()creaba una nueva sesión vacía. (1896 )
0.28.0 (15 de agosto de 2024)
Nuevas funciones
ResilienceOptionsV2tiene un nuevo campolayer_noise_model. Cuando este campo está activado, todas las estrategias de mitigación que requieren datos de ruido se saltan la etapa de aprendizaje de ruido y, en su lugar, recopilan la información necesaria delayer_noise_model. (1858 )
Notas de actualización
- Las primitivas de « V1 » y
SamplerV1seEstimatorV1han eliminado por completo. Consulta la «Introducción a las primitivas» para aprender a utilizar las primitivas de « V2 ». ( 1857 ) - El parámetro
servicees ahora obligatorio enSession.from_id(). (1868 )
0.27.1 (12 de agosto de 2024)
Nuevas funciones
- Se ha añadido lógica para codificar y descodificar
PauliLindbladErroryLayerError. (1853 )
0.27.0 (8 de agosto de 2024)
Nuevas funciones
- Añadidas las clases
PauliLindbladErroryLayerErrorpara representar procesos de ruido de capas. (1844 )
Corrección de errores
- Se ha solucionado un problema relacionado con el uso del simulador aéreo y el modo de servicio local con sesiones. (1838 )
0.26.0 (31 de julio de 2024)
Notas sobre características en desuso
- Pasar un backend como cadena a
Session,Batch,EstimatorV2, ySamplerV2ha quedado obsoleto. Utilice el objeto backend real en su lugar. (1804 ) - Pasar un backend como modo en
SamplerV2yEstimatorV2actualmente ejecuta un trabajo en modo trabajo incluso si está dentro de un gestor de contextoSessionoBatch. Este comportamiento está obsoleto y en una futura versión tendrá prioridad la Sesión/Lote. (1816 ) - El paso de
serviceenSession,Batchha quedado obsoleto. El parámetroserviceya no es necesario porque el servicio puede extraerse del backend. (1826 ) - Dado que los módulos backend de
qiskit.providers.modelsincluidosBackendPropertiesyBackendConfigurationestán obsoletos en Qiskit 1.2, se han copiado enqiskit-ibm-runtime. Asegúrese de actualizar a la última versión,0.26.0, para utilizar estas clases. (1803 )
Nuevas funciones
-
Los métodos
properties,defaults,configuration, ycheck_faultyse han añadido aFakeBackendV2. (1765 ) -
Si se ejecutan trabajos en una sesión creada con
QiskitRuntimeService.Session.from_id()en la que la sesión ya está cerrada, los trabajos se rechazan inmediatamente. (1780 ) -
Los parámetros de entrada de los trabajos ya no se almacenarán en caché. Estos parámetros pueden incluir circuitos de gran tamaño y no deben guardarse automáticamente en la memoria. (1783 )
-
QiskitRuntimeLocalServicese creó para soportar un modo de prueba local. Para evitar tener que inicializar una clase aparte, se ha añadido "local" como canal válidoQiskitRuntimeService.service = QiskitRuntimeService(channel="local")devolverá una instancia de
QiskitRuntimeLocalService. (1793 ) -
Al ejecutar trabajos en el plan abierto, ahora aparecerá una advertencia si se ha alcanzado el límite del número máximo de trabajos pendientes. El servicio también intentará esperar a que los trabajos pendientes más antiguos terminen de ejecutarse antes de enviar un nuevo trabajo. (1794 )
-
Se ha añadido
NoiseLearnery funciones relacionadas, comoNoiseLearnerOptionsyNoiseLearnerResults. (1805 )
Corrección de errores
- Se comprueba que todos los circuitos cumplen la normativa ISA. Como parte de esta comprobación, se produce un error si se detectan instrucciones que no son compatibles con el backend. Anteriormente, un error hacía que se omitieran algunas de las instrucciones (las que residen dentro de cuerpos de operaciones de flujo de control). Hemos corregido el error en esta versión. (1784 )
- Se ha corregido un problema por el que al llamar a
IBMBackend.target_history()se almacenaba en caché el objetivo del backend y, a continuación, al llamar aIBMBackend.target()se devolvía incorrectamente ese objetivo almacenado en caché. (1791 ) - Se ha eliminado la validación de opciones para comprobar si
zne_mitigationopec_mitigationse establecen enTrueal utilizar otras opciones relacionadas. (1792 ) - Se ha solucionado un problema por el que los usuarios no podían recuperar los resultados de los trabajos si la biblioteca de python
simplejsonestaba instalada en su entorno. (1800 )
0.25.0 (2 de julio de 2024)
Notas sobre características en desuso
- La opción
optimization_leveldeEstimatorV2está obsoleta. En su lugar, puedes realizar la optimización del circuito utilizando el transpilador Qiskit o el servicio de transpilador Qiskit. (1748 ) qiskit_ibm_runtime.RuntimeJobV2.interim_results()qiskit_ibm_runtime.RuntimeJobV2.stream_results(), y han quedado obsoletos.qiskit_ibm_runtime.RuntimeJob.interim_results()qiskit_ibm_runtime.RuntimeJob.stream_results()(1776 )
Nuevas funciones
- Añadidos los métodos
backend,backendsyleast_busyaQiskitRuntimeLocalService. (1764 ) - Se ha añadido una propiedad
instanceaBaseRuntimeJobque devuelve la instancia en la que se ejecutó el trabajo. (1771 ) default_shotsson ahora una opción compatible cuando se utilizaEstimatorV2en modo de prueba local. (1773 )
0.24.1 (18 de junio de 2024)
Corrección de errores
- No permitir puertas fraccionarias por defecto, para que el objetivo backend no excluya el flujo de control. (1755 )
0.24.0 (10 de junio de 2024)
Notas sobre características en desuso
-
nameahora será un parámetro obligatorio en backend().backend()ya no devolverá el primer backend de todos los backends si no se proporcionaname. (1147 ) -
Tras la eliminación de los programas personalizados, los siguientes métodos han quedado obsoletos y han cambiado de nombre.
qiskit_ibm_runtime.QiskitRuntimeService.run()está obsoleto y será sustituido por un método privadoqiskit_ibm_runtime.QiskitRuntimeService._run().qiskit_ibm_runtime.Session.run()está obsoleto y será sustituido por un método privadoqiskit_ibm_runtime.Session._run().qiskit_ibm_runtime.RuntimeJob.program_id()está obsoleto y será sustituido porqiskit_ibm_runtime.RuntimeJob.primitive_id(). (1238 ) -
El
backendargumento de «Sampler» y «Estimator» ha quedado obsoleto. Utilizamodeen su lugar. Elsessionargumento de «Sampler» y «Estimator» también ha quedado obsoleto. Utilizamodeen su lugar. ( 1556 ) -
qiskit_ibm_runtime.QiskitRuntimeService.get_backend()está en desuso. Por favorqiskit_ibm_runtime.QiskitRuntimeService.backend(), utiliza esto en su lugar.FakeBackendLos backends ficticios « V1 », junto conFakeProvider, también están quedando obsoletos en favor de los backends ficticios « V2 » yFakeProviderForBackendV2. ( 1689 ) -
Especificar opciones sin la estructura completa del diccionario está obsoleto. En su lugar, introduzca un diccionario completamente estructurado. Por ejemplo, utilice
{'environment': {'log_level': 'INFO'}}en lugar de{'log_level': 'INFO'}. (1731 )
Nuevas funciones
-
En relación con los modos de ejecución, Sampler y Estimator incluyen ahora un argumento
mode. El parámetromodepuede ser Backend, Sesión, Lote o Ninguno. Como resultado, el nombre de backend ha sido obsoleto, y ya no será soportado como un modo de ejecución válido. (1556 ) -
Se ha añadido la opción ZneOptions.amplifier, que puede ser una de estas cadenas:
"gate_folding"(por defecto) utiliza el plegado de puertas de 2 qubits para amplificar el ruido. Si el factor de ruido requiere amplificar sólo un subconjunto de puertas, éstas se eligen aleatoriamente."gate_folding_front"utiliza el plegado de puertas de 2 qubits para amplificar el ruido. Si el factor de 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 el plegado de puertas de 2 qubits para amplificar el ruido. Si el factor de 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. (1679 )
-
Al guardar una cuenta, hay un nuevo parámetro,
private_endpointque si se establece enTrue, permite a los usuarios conectarse a una API privada IBM Cloud. Este parámetro también puede utilizarse al inicializar el servicio, por ejemplo:QiskitRuntimeService(private_endpoint = True). (1699 ) -
Se ha añadido una nueva función de suscripción voluntaria para admitir puertas fraccionarias a
IBMBackend. IBM Actualmente, los backends admiten exclusivamente circuitos dinámicos y puertas fraccionarias, y ambas características no pueden utilizarse en el mismo trabajo primitivo. Además, es posible que algunos protocolos de mitigación de errores que se pueden utilizar con la primitiva estimadora, como PEC o PEA, no admitan el «gate twirling» con las puertas fraccionarias. Dado que el modelo Qiskit Target no refleja dicha restricción, hemos adoptado el enfoque de «opt-in», según el cual el backend de destino incluye únicamente puertas fraccionarias (instrucciones de flujo de control) cuando el backend está (o no está) activado. Esta función se configura al recuperar el backend de destino desde elQiskitRuntimeService.from qiskit_ibm_runtime import QiskitRuntimeService backend = QiskitRuntimeService(channel="ibm_quantum").backends( "name_of_your_backend", use_fractional_gates=True, )[0]Cuando la característica fraccional está activada, los circuitos transpilados pueden tener una profundidad más corta en comparación con las compuertas de base IBM convencionales, por ejemplo, [sx, rz, ecr].
Cuando se utilizan instrucciones de flujo de control, por ejemplo
if_else, en su circuito, debe desactivar la función de puerta fraccionaria para obtener circuitos ISA ejecutables. La elección del conjunto de instrucciones es ahora responsabilidad de los usuarios.Tenga en cuenta que este patrón puede modificarse o eliminarse sin que quede obsoleto cuando se actualice el backends IBM en futuros desarrollos. (1715 )
-
Ahora puedes utilizar la opción experimental en
qiskit_ibm_runtime.options.EstimatorOptionspara activar el método de mitigación de errores denominado «Amplificación probabilística de errores» (PEA) en tus tareas de estimación. ( 1728 ) -
La versión
1.1de Qiskit es ahora compatible y necesaria. (1700 )
Notas de actualización
QiskitRuntimeService.backends()Ahora devuelve siempre una nuevaIBMBackendinstancia, incluso cuando se utiliza la misma consulta. Las propiedades del backend y los datos predeterminados se recuperan del servidor cada vez que se accede a ellos por primera vez, mientras que los datos de configuración se almacenan en caché internamente en la instancia del servicio. ( 1732 )
Corrección de errores
- Se ha solucionado un problema por el que la recuperación de trabajos con job() y jobs() sólo devolvía instancias de
RuntimeJob, incluso si el trabajo se ejecutaba con una primitiva V2. Ahora, los trabajos primitivos de V2 se devolverán correctamente como instancias deRuntimeJobV2. (1471 ) - Para evitar interrupciones en la red durante procesos de trabajo largos, ya no se producirán errores de websocket. (1518 )
- Se ha corregido la combinación de
insert_multiple_cycleslas opciones ycoupling_mapenPadDynamicalDecoupling. Esta combinación permite seleccionar un desacoplamiento dinámico escalonado con múltiples ciclos de secuencia en cada retardo que supere el umbral establecido porsequence_min_length_ratios. ( 1630 ) - Se ha corregido un problema de serialización por el que la descodificación de metadatos de trabajo daba lugar a un error. (1682 )
- Corregido el docstring de giro de medidas que indicaba incorrectamente que está activado por defecto para Sampler. (1722 )
- Las subopciones experimentales anidadas corregidas anulan las subopciones no experimentales. (1731 )
- El método de backend utils
convert_to_targetha sido reemplazado por el método convert_to_target de Qiskit. Esto soluciona algunos problemas relacionados con la generación de objetivos y los datos de calibración. (1600 )
0.23.0 (15 de abril de 2024)
Notas sobre características en desuso
- backend.run () ha quedado obsoleto. Por favor, utilice las primitivas en su lugar. Encontrará más detalles en la guía de migración. (1561 )
- En una futura versión, se requerirá el parámetro
serviceen from_id(). (1311 )
Nuevas funciones
- La impresión de
OptionsyOptionsV2tendrá ahora formato de tabla. (1490 ) - Añade
block_ordering_callableel argumento aBlockBasePadder,PadDynamicalDecoupling,PadDelay, yBaseDynamicCircuitAnalysis. Esto permite al usuario construir bloques utilizando el algoritmo que elija.block_ordering_callableNo se realizan suposiciones ni comprobaciones sobre la validez de los resultados que genera. El motivo de este argumento es que, para algunas familias de circuitos, la funciónblock_order_op_nodesexistente puede resultar muy lenta. ( 1531 ) - Las primitivas Sampler y Estimator V2 se han mejorado para incorporar procedimientos de validación personalizados cuando la propiedad channel_strategy se establece como "q-ctrl" Esta lógica de validación personalizada rectifica eficazmente las opciones de entrada incorrectas y protege a los usuarios contra la desactivación involuntaria de las mejoras de rendimiento de Q-CTRL. (1550 )
SamplerV2Ahora admite el giro. La operación «Twirling» solo se aplicará a aquellos registros de medición que no formen parte de una lógica condicional. ( 1557 )- Session details() incluye ahora un nuevo campo,
usage_time. El uso se define como el tiempo que un sistema cuántico está comprometido para completar un trabajo. (1567 )
Corrección de errores
RuntimeJobV2Ya no se producirá un error cuando la API devuelva un estado desconocido. En su lugar, se devolverá directamente el estado procedente de la API. ( 1476 )- Se ha corregido un error por el que las cabeceras personalizadas no se enviaban en la solicitud
/jobs. (1508 ) - Se ha corregido un error al codificar/decodificar
ParameterExpression. (1521 ) - Se ha solucionado un problema por el que el método
RuntimeJobV2in_final_state() no actualizaba el estado al ser invocado. ( 1547 )
0.22.0 (21 de marzo de 2024)
Notas de actualización
- Modificar
skip_reset_qubitsel parámetro opcional del constructor dePadDynamicalDecoupling.FalseSi se aplica el desacoplamiento dinámico a los qubits independientemente de su estado, incluso a los retrasos que se encuentran al principio de un circuito. Esta opción ahora se ajusta al comportamiento de Qiskit. ( 1409 )
Nuevas funciones
- Se añade un nuevo modo de prueba local. Le permite validar sus proramas cuánticos antes de enviarlos a un sistema físico. El modo de prueba local se activa si se utiliza uno de los backends falsos de
qiskit_ibm_runtime.fake_providero una instancia de backend Qiskit Aer al instanciar una primitiva o una sesión. (1495 )
Corrección de errores
- Corrección de un error que provocaba que se ignorara la configuración de
resilience_level=0enEstimatorV2(y se utilizara en su lugar el valor predeterminado). (1541 )
0.21.2 (18 de marzo de 2024)
Corrección de errores
- Se ha corregido un error por el que
RuntimeDecoderpodía importar clases arbitrarias. (1527 )
0.21.1
Corrección de errores
- Se ha corregido un error que impedía importar
SamplerV1yEstimatorV1debido a un problema con la definición de los alias.
0.21.0
Notas de actualización
- Los circuitos que no se ajustan a la definición del hardware de destino ya no son compatibles con las primitivas de « Qiskit Runtime », a menos que
channel_strategy="q-ctrl"se utilice. Consulte la documentación sobre transpilación ( transpile ) para obtener instrucciones sobre cómo transformar circuitos, y los ejemplos de primitivas ( run/primitives-examples ) para ver cómo se aplica esto junto con las transformaciones de operadores.
Notas sobre características en desuso
-
En una futura versión,
backendserá un parámetro obligatorio paraqiskit_ibm_runtime.Sampler, yqiskit_ibm_runtime.Estimatorsi no se especificasession, incluso cuando se utilice el canalibm_cloud.También será un parámetro obligatorio para
qiskit_ibm_runtime.Sessionyqiskit_ibm_runtime.Batch.
Corrección de errores
- Se ha solucionado un problema con
IBMBackend.targetpor el que se excluían incorrectamente las operaciones de flujo de control admitidas (IfElseOp,WhileLoop, etc.) si un determinado backend los admite. - Se ha corregido un error por el que al recuperar un backend falso a través de
FakeProviderForBackendV2.backend()se producía un error de tipo. - Corrige la comprobación de circuitos ISA para permitir puertas de impulsos y circuitos que no tienen trazado.
0.20.0
Nuevas funciones
-
Añadir
dd_barrierentrada opcional a PadDynamicalDecoupling para identificar partes del circuito en las que aplicar el desacoplamiento dinámico (dd) de forma selectiva. Si esta cadena está contenida en la etiqueta de una barrera del circuito, se aplica dd en los retardos que terminan en ella (en los mismos qubits); en caso contrario, no se aplica. -
Python 3.12 es ahora compatible.
-
Las sesiones se iniciarán ahora con un nuevo punto final
/sessionsque permite distintos modos de ejecución. El modo por lotes está ahora soportado a través deBatch, y Session funcionará de la misma manera que antes. Para más información, consulte carreras/sesiones.Tenga en cuenta que
SessionyBatchcreados a partir deqiskit-ibm-runtimeantes de esta versión dejarán de recibir soporte después del 31 de marzo de 2024. Por favor, actualice su versión deqiskit-ibm-runtimelo antes posible antes de esta fecha.Ten en cuenta también que ya no se admite el uso de simuladores con sesiones. Los usuarios pueden seguir iniciando sesiones con simuladores sin ningún problema, pero no se creará realmente una sesión. No habrá ID de sesión.
-
Las sesiones iniciadas con qiskit_ibm_runtime.IBMBackend.open_session () utilizarán el nuevo
/sessionspunto final.La funcionalidad de las sesiones no cambiará, pero tenga en cuenta que las sesiones de
backend.run()anteriores a esta versión dejarán de ser compatibles después del 31 de marzo de 2024. Por favor, actualice su versión deqiskit-ibm-runtimelo antes posible antes de esta fecha.
Notas sobre características en desuso
- Los circuitos que no se ajusten a la definición del hardware de destino dejarán de ser compatibles a partir del 1 de marzo de 2024. Consulte la documentación sobre transpilación ( transpile ) para obtener instrucciones sobre cómo transformar circuitos, y los ejemplos de primitivas ( run/primitives-examples ) para ver cómo se aplica esto junto con las transformaciones de operadores.
Corrección de errores
- Asignación fija de duraciones de instrucción al programar circuitos con flujo de control. Antes de esta corrección, los índices de las instrucciones de los bloques interiores no se asignaban a los índices físicos del dag exterior.
Otras notas
- La entrada
InstructionDurationsdurations ahora también es necesaria para el constructor dePadDelay.
0.19.1
Notas de actualización
- Amplíe
DynamicCircuitInstructions.from_backend()para extraer y parchear duraciones de los objetosBackendV1yBackendV2. Añade tambiénDynamicCircuitInstructions.from_target()para utilizar un objetoTargeten su lugar.
Corrección de errores
- Corrige el parcheado de
DynamicCircuitInstructionspara instrucciones con duraciones que no están en unidades dedt. - Se ha solucionado un problema con la función
qpy.dump(), cuando el indicadoruse_symenginese establecía en un objeto verdadero que se evaluaba comoTruepero que no era realmente el booleanoTrue, la carga útil QPY generada se corrompía.
0.19.0
Notas de actualización
- qiskit-ibm-provider está pendiente de eliminación y, por lo tanto, ya no será una dependencia de qiskit-ibm-runtime.
- qiskit-ibm-runtime es ahora compatible con las versiones de Qiskit >= 0.45, incluyendo 1.0.0.
0.18.0
Nuevas funciones
- Se ha añadido un nuevo parámetro, dynamic_circuits a backends() para permitir filtrar los backends que admiten circuitos dinámicos.
- Añadido el parámetro
max_timeaIBMBackend.open_session(). - Añadido un método
RuntimeJob.queue_info()para obtener la información de la cola desde el backend. Esta función se transfirió deqiskit_ibm_provider.
Notas sobre características en desuso
QiskitRuntimeService.runtime()ha quedado obsoleto.
Corrección de errores
- Muchos métodos de RuntimeJob requieren recuperar los datos del trabajo de la API con
job_get(). Esta llamada a la API excluirá ahora por defecto el campoparamsporque sólo son necesarios en qiskit_ibm_runtime.RuntimeJob.inputs().
0.17.0
Nuevas funciones
- Se ha añadido un nuevo método properties() que devuelve las propiedades del backend del trabajo en el momento en que se ejecutó el trabajo.
- details() tiene un nuevo campo, activated_at, que es la marca de tiempo de cuando la sesión fue cambiada a activa.
Corrección de errores
-
Cuando se recupera un único backend con el parámetro
instance,service.backend('ibm_torino', instance='ibm-q/open/main') # raises error if torino is not in ibm-q/open/main but in a different instance # the user has access to service = QiskitRuntimeService(channel="ibm_quantum", instance="ibm-q/open/main") service.backend('ibm_torino') # raises the same errorsi el backend no está en la instancia sino en otra a la que el usuario tiene acceso, se producirá un error. Ahora se producirá el mismo error si se pasa una instancia en la inicialización y luego se recupera un backend que no está en esa instancia.
-
Se ha corregido un problema por el que la recuperación del coupling\map de algunos backends daba lugar a un NameError.
0.16.0
Preludio
Las sesiones son ahora seguras para los hilos y permiten múltiples experimentos interactivos simultáneos.
Nuevas funciones
- Las sesiones son ahora seguras para los hilos.
Notas de actualización
- Se eliminan los métodos relacionados con el uso de programas personalizados.
Corrección de errores
- Si se utiliza una instancia de nube habilitada para
q-ctrly no se pasaq-ctrlcomochannel_strategy, se producirá un error.
0.15.1
Corrección de errores
- Revertir 0.15.0 cambios a from_id() porque era un cambio de ruptura sin deprecación adecuada.
0.15.0
Nuevas funciones
-
Se ha añadido un nuevo módulo qiskit_ibm_runtime.fake_provider para proporcionar acceso a una serie de backends falsos derivados de instantáneas de dispositivos IBM Quantum. Esta funcionalidad fue proporcionada originalmente por el módulo
qiskit.providers.fake_provider, pero pronto será obsoleto en favor de qiskit_ibm_runtime.fake_provider.Las instantáneas proporcionadas por los backends falsos son útiles para probar localmente el transpilador y realizar simulaciones locales ruidosas del sistema antes de ejecutarlo en dispositivos reales. He aquí un ejemplo de utilización de un backend falso para la transpilación y la simulación:
from qiskit import QuantumCircuit from qiskit import transpile from qiskit_ibm_runtime.fake_provider import FakeManilaV2 # Get a fake backend from the fake provider backend = FakeManilaV2() # Create a simple circuit circuit = QuantumCircuit(3) circuit.h(0) circuit.cx(0,1) circuit.cx(0,2) circuit.measure_all() # Transpile the ideal circuit to a circuit that can be directly executed by the backend transpiled_circuit = transpile(circuit, backend) # Run the transpiled circuit using the simulated fake backend job = backend.run(transpiled_circuit) counts = job.result().get_counts() -
Se ha añadido compatibilidad con
backend.run(). La funcionalidad es similar a la deqiskit-ibm-provider. -
Se producirá un error durante la inicialización si se pasa
q-ctrlcomochannel_strategyy la instancia de cuenta no tieneq-ctrlhabilitado. -
Eliminado almacenar resultado en
RuntimeJob._results. En su lugar, recupera los resultados cada vez que se llama al métodoresults().
Notas sobre características en desuso
- El uso del archivo
~/.qiskit/qiskitrc.jsonpara la información de cuentas ha quedado obsoleto. Utilice~/.qiskit/qiskit-ibm.jsonen su lugar.
Corrección de errores
- Se ha solucionado un problema por el que los trabajos cancelados y fallidos devolvían un resultado no válido que provocaba un error de tipo, lo que impedía que se devolviera el error real al usuario.
- Se emitirá una advertencia en la inicialización si se está utilizando el entorno DE, ya que no todas las funciones están soportadas allí.
- El parámetro
backenden from_id() está obsoleto porque las sesiones no soportan múltiples backends. Además, el parámetroserviceya no es opcional. - Se han eliminado completamente las entradas de ejecución
circuit_indicesyobservable_indicespara Estimator y Sampler.
Otras notas
- Añadido código de migración para ejecutar
backend.runen qiskit_ibm_runtime en lugar de en qiskit_ibm_provider.
0.14.0
Nuevas funciones
- Hay una nueva clase,
qiskit_ibm_runtime.Batchque actualmente funciona de la misma manera que qiskit_ibm_runtime.Session pero que se actualizará más adelante para permitir el envío de varios trabajos a la vez. - Las claves y valores arbitrarios ya no están permitidos en
Options.
Notas sobre características en desuso
- Los programas personalizados están quedando obsoletos a partir de la versión qiskit-ibm-runtime 0.14.0 y se eliminarán el 27 de noviembre de 2023. En su lugar, los usuarios pueden adaptar sus programas personalizados para que utilicen las primitivas de « Qiskit Runtime » con « Qiskit Serverless ».
0.13.0
Nuevas funciones
-
Se ha añadido un nuevo método, details() que devuelve información sobre una sesión, incluyendo: el tiempo máximo de sesión, el tiempo activo restante, el estado actual y si la sesión está aceptando trabajos o no.
También se ha añadido status(), que devuelve el estado actual de la sesión.
-
En la inicialización, si no se pasa directamente, la dirección
instanceseleccionada por defecto por el proveedor se registrará en el nivel "INFO". Al ejecutar un trabajo, si el backend seleccionado no se encuentra en la instancia predeterminada, sino en una instancia diferente a la que el usuario también tiene acceso, esa instancia también se registrará.
Notas de actualización
-
qiskit_ibm_runtime.Session.close () se ha actualizado para marcar un
Sessioncomo que ya no acepta nuevos trabajos. La sesión no aceptará más trabajos, pero continuará ejecutando los trabajos en cola hasta que finalicen o expire el tiempo máximo. Esto también ocurrirá automáticamente cuando se salga del gestor de contexto de sesión. Cuando una sesión que no está aceptando trabajos se queda sin trabajos que ejecutar, se cierra inmediatamente, liberando el backend para ejecutar más trabajos en lugar de esperar a que se agote el tiempo de espera interactivo.El antiguo comportamiento del método de cierre se ha trasladado a un nuevo método, qiskit_ibm_runtime.Session.cancel (), donde todos los trabajos en cola dentro de una sesión se cancelan y finalizan.
Corrección de errores
- Se ha corregido un error por el que
shotspasado como tipo numpy no se serializaba correctamente. - Se ha corregido un error en target_history() por el que el parámetro datetime no se utilizaba para recuperar propiedades del backend a partir de la fecha especificada.
0.12.2
Nuevas funciones
- Si se utiliza un
channel_strategy, sólo los backends que soporten esechannel_strategyserán accesibles al usuario. - Añadida la opción de definir una cuenta por defecto en el archivo json de la cuenta. Para seleccionar una cuenta como predeterminada, defina
set_as_default=TrueenQiskitRuntimeService.save_account(). - Añadido nuevo método
Session.from_idque crea una nueva sesión con un id dado. - Ahora habrá una advertencia si un usuario envía un trabajo que se prevé que supere su cuota mensual de tiempo de ejecución del sistema de 10 minutos. Esto sólo se aplica a los trabajos ejecutados en hardware real en la instancia
ibm-q/open/main. Si el trabajo supera la cuota, se cancelará.
Notas de actualización
- Los mensajes de error de trabajo incluyen ahora el código de error. Los códigos de error se pueden encontrar en errores.
0.12.1
Nuevas funciones
- Los usuarios pueden utilizar una nueva variable de entorno,
USAGE_DATA_OPT_OUT, para excluirse del seguimiento del uso del módulo de usuario estableciendo este valor enTrue. Además, sólo se realizará un seguimiento de determinados módulos qiskit en lugar de todos los módulos que empiecen por qiskit o qiskit_. - Los usuarios ahora pueden pasar un valor de
defaultal parámetrochannel_strategyen qiskit_ibm_runtime.QiskitRuntimeService. Ahora, si una cuenta está configurada con una determinada estrategia de canal, el usuario puede anularla pasandodefault. - Las primitivas Muestreador y Estimador se han mejorado para incorporar procedimientos de validación personalizados cuando la propiedad channel_strategy dentro de :class:qiskit_ibm_runtime.QiskitRuntimeService se configura como "q-ctrl" Esta lógica de validación personalizada rectifica eficazmente las opciones de entrada incorrectas y protege a los usuarios contra la desactivación involuntaria de las mejoras de rendimiento de Q-CTRL.
Corrección de errores
- La recuperación de propiedades de backend con properties() ahora permite pasar un parámetro
datetimepara recuperar propiedades de una fecha pasada. - Las opciones
noise_factorsyextrapolatordeqiskit_ibm_runtime.options.ResilienceOptionspasarán por defecto aNonea menos queresilience_levelse establezca en 2. Sólo se establecerán las opciones relevantes para el nivel de resiliencia, por lo que al utilizarresilience_level2,noise_factorsseguirá siendo(1, 3, 5)por defecto yextrapolatorseráLinearExtrapolatorpor defecto. Además, las opciones con un valor deNoneya no se enviarán al servidor. - Los mensajes de error de trabajo ya no se mostrarán en mayúsculas.
- La opción max_execution_time se basa ahora en el tiempo de ejecución del sistema en lugar de en la hora del reloj de pared. El tiempo de ejecución del sistema es la cantidad de tiempo que el sistema dedica a procesar tu trabajo. Si un trabajo supera este límite de tiempo, se cancela forzosamente. Los trabajos de simulador siguen utilizando la hora del reloj de pared.
0.12.0
Nuevas funciones
-
Añadido un
global_service, de forma que si el usuario define un QiskitRuntimeService, será utilizado por las primitivas, aunque no se les pase el servicio explícitamente. Por ejemplo:from qiskit_ibm_runtime import QiskitRuntimeService, Sampler service = QiskitRuntimeService(channel="ibm_quantum") # Sampler._service field will be initialized to ``service`` sampler = Sampler(backend="ibmq_qasm_simulator") -
Añadido un nuevo método, qiskit_ibm_runtime.QiskitRuntimeService.instances() que devuelve todas las instancias (hub/grupo/proyecto) en las que se encuentra el usuario. Esto es sólo para el canal
ibm_quantumya que el canalibm_cloudno tiene múltiples instancias. -
Se han añadido validaciones para las opciones del segundo nivel del dict, es decir, para cada una de las opciones de resiliencia, simulador, ejecución y transpilación, comprobar que sus opciones son compatibles. En caso contrario, lanza una excepción.
-
Hay un nuevo parámetro,
channel_strategyque se puede establecer en la inicialización de qiskit_ibm_runtime.QiskitRuntimeService o guardado en qiskit_ibm_runtime.QiskitRuntimeService.save_account(). Sichannel_strategyse establece enq-ctrl, todos los trabajos dentro del servicio utilizarán la estrategia de mitigación de errores Q-CTRL.
Notas de actualización
- Los circuitos y otros parámetros de entrada ya no se almacenarán automáticamente en los trabajos en tiempo de ejecución. Aún pueden recuperarse con qiskit_ibm_runtime.RuntimeJob.inputs().
Notas sobre características en desuso
- La opción
noise_amplifierresilience options está obsoleta. Tras el periodo de supresión, sólo se admitirá la amplificación de plegado local. Consulte https://github.com/qiskit-community/prototype-zne para la amplificación global del plegado.
Corrección de errores
- Cuando se ejecuta en el canal "ibm_cloud", es posible no especificar el backend. En este caso, el sistema selecciona uno de los backends disponibles para este servicio. Problema nº 625 https://github.com/Qiskit/qiskit-ibm-runtime/issues/625 se informó de que el backend devuelto por
job.backend()no siempre era el backend real en el que se ejecutaba el trabajo. Este PR corrige este error. - Corrige una condición de carrera en la prueba test\cancel_running_job() en test_job.py donde no se podía realizar la cancelación del trabajo. Consulte #1019 <https://github.com/Qiskit/qiskit-ibm-runtime/issues/1019> _ para más detalles.
- Anteriormente añadimos una validación cuando se ejecutaban los trabajos para asegurarnos de que el número de circuitos no era superior al máximo para ese backend,
backend.max_circuits. En realidad, este límite no es necesario para las primitivas ejecutadas desde una sesión.
0.11.3
Nuevas funciones
- Añadido motivo de fallo al invocar el método error_message().
- Se ha añadido una nueva propiedad, usage_estimation() que devuelve el tiempo estimado de ejecución del sistema,
quantum_seconds. El tiempo de ejecución del sistema representa la cantidad de tiempo que el sistema dedica a procesar tu trabajo. - Lanza una excepción si el número de circuitos pasados a
_run_primitive()excede el número de circuitos soportados en el backend. - Hay un nuevo método update_tags() que se puede utilizar para actualizar el
job_tagsde un trabajo. - Si
instancese proporciona como parámetro a qiskit_ibm_runtime.QiskitRuntimeService, entonces esto se utiliza como un filtro enQiskitRuntimeService.backends(). Siinstanceno se reconoce como una de las instancias del proveedor, se producirá una excepción. Anteriormente, sólo emitimos una advertencia.
0.11.2
Nuevas funciones
-
Si se ha cancelado un trabajo y se solicita job.result (), lanza una excepción en lugar de devolver None.
-
Un nuevo método, qiskit_ibm_runtime.options.SimulatorOptions.set_backend(), permite a los usuarios configurar más fácilmente las opciones del simulador para un backend.
from qiskit.providers.fake_provider import FakeManila from qiskit_aer.noise import NoiseModel # Make a noise model fake_backend = FakeManila() # Set options to include the noise model options = Options() options.simulator.set_backend(fake_backend) options.simulator.seed_simulator = 42
Corrección de errores
- Corregida la recursión infinita al intentar hacer un deepcopy de un IBMBackend. Se ha añadido un método
qiskit_ibm_runtime.IBMBackend.deepcopy(). - Se ha corregido un problema por el que los metadatos del circuito no se serializaban correctamente, lo que provocaba un error de tipo.
0.11.1
Notas sobre características en desuso
- En qiskit_ibm_runtime.RuntimeJob.metrics(), el campo bss será sustituido por usage.
0.11.0
Nuevas funciones
-
Al recuperar un trabajo con
qiskit_ibm_runtime.IBMRuntimeService.job()ya no se devolverá elparamsdesde la API. En su lugar, se cargarán cuando se necesiten en qiskit_ibm_runtime.RuntimeJob.inputs(). -
Añadida advertencia cuando el backend no está activo en QiskitRuntimeService.run.
-
Admite la entrada de tipo
CouplingMapcuando se da como opción del simulador. Antes apoyábamos, por ejemplo:options.simulator = {"coupling_map": [[0, 1], [1, 0]]}Ahora también admitimos lo siguiente:
options.simulator = {"coupling_map": CouplingMap.from_line(10)}
Notas de actualización
- Ya no se abre una sesión por defecto si pasas un nombre de backend o una instancia de backend a qiskit_ibm_runtime.Sampler o qiskit_ibm_runtime.Estimator constructores. En su lugar, la primitiva se ejecutará sin sesión. Además, ahora debe utilizar el parámetro
backendpara pasar un nombre o instancia de backend en lugar del parámetrosession(que puede seguir utilizándose para pasar una sesión). - El primer parámetro de qiskit_ibm_runtime.Sampler y qiskit_ibm_runtime.Estimator es ahora
backenden lugar desession.
Notas sobre características en desuso
- Si se pasa un nombre de backend o una instancia de backend al parámetro
sessional inicializar una aplicación qiskit_ibm_runtime.Sampler o qiskit_ibm_runtime.Estimator ha quedado obsoleto. Utilice en su lugar el parámetrobackend. Puede seguir pasando una sesión utilizando el parámetrosession.
0.10.0
Nuevas funciones
- Python 3.11 es ahora compatible.
Notas de actualización
- Añadidos mensajes de error en caso de que el usuario defina valores no admitidos para 'max_execution_time'. Anteriormente, esta validación se realizaba en el servidor.
Corrección de errores
- Añadida la deserialización de los params de RuntimeJob.inputs. Anteriormente, los circuitos se devolvían en formato serializado. Soluciona el problema nº 829.
- Permitir a los usuarios recuperar todos los backends incluso si falta la configuración de uno de ellos. No se devolverá el backend sin configuración.
0.9.4
Nuevas funciones
- Añadidos métodos para validar las opciones de entrada a
transpilationyenvironmentopciones.
Notas de actualización
- Al construir un backend
qiskit.transpiler.Target, se filtrarán los qubits y puertas defectuosos de la configuración del backend.
Notas sobre características en desuso
-
Los argumentos obsoletos
circuits,parameters,service, yskip_transpilationhan sido eliminados de Sampler.Del mismo modo, los argumentos obsoletos
circuits,observables,parameters,service, yskip_transpilationhan sido eliminados de Estimator.En QiskitRuntimeService, se ha eliminado el parámetro
auth. Además, se han eliminado los parámetrosinstance,job_tagsymax_execution_timede qiskit_ibm_runtime.QiskitRuntimeService.run(). En su lugar, pueden pasarse a través deRuntimeOptions.Dentro de
RuntimeOptionsbackend_nameya no es compatible. Por favor, utilicebackenden su lugar.
Corrección de errores
- Se ha corregido un error por el que al recuperar un trabajo de un backend sin las opciones
noise_modeloseed_simulatorse producía un error de clave.
0.9.3
Notas de actualización
- Se han añadido mensajes de error en caso de que el usuario defina valores no admitidos para "optimization_level" o para "resilience\level". Se ha añadido la comprobación de la validación de las opciones introducidas en
resilience. Anteriormente, esta validación se realizaba en el servidor. Añadiéndolos en el lado del cliente, la respuesta será mucho más rápida en caso de fallo. La variable de entornoQISKIT_RUNTIME_SKIP_OPTIONS_VALIDATIONse utiliza para controlar la validación. Si se establece, se omitirá la validación. - Las configuraciones del backend ya no se cargan cuando QiskitRuntimeService se inicializa. En su lugar, la configuración sólo se carga y almacena en caché durante get_backend() y backends().
Corrección de errores
- Al crear un objeto Opción y pasar una opción de entrada a
resilience_options, esta opción se incluía enresilience_options, pero se eliminaban las demás opciones por defecto. Esto se ha corregido, por lo que ahora las entradas se gestionan correctamente, como otros tipos de opciones.
0.9.2
Nuevas funciones
- Añadido un nuevo argumento llamado
session_timeal método program_run yqiskit_ibm_runtime.RuntimeOptions. Ahora los valores introducidos por el usuario para la sesiónmax_timese enviarán al servidor comosession_time. Esto permite a los usuarios especificar diferentes valores para la sesiónmax_timeymax_execution_time. - Añadido el método target_history(). Este método es similar a target(). La diferencia es que el nuevo método permite al usuario pasar un parámetro datetime, para recuperar datos históricos del backend.
Notas de actualización
- Acepte todas las opciones dadas en el nivel 1 y asígnelas al tipo de opción jerárquica adecuada. Por ejemplo, si el usuario proporciona
options = {"shots": 10}como entrada al Muestreador/Estimador, se interpretará comooptions = {"execution: {"shots": 10}}. - Si se devuelve un trabajo sin un backend, la recuperación del backend a través de qiskit_ibm_runtime.RuntimeJob.backend() volverá a recuperar los datos del servidor e intentará actualizar el backend. Además,
job_idybackend, que eran atributos obsoletos de qiskit_ibm_runtime.RuntimeJob han sido eliminados. - Se ha añadido una advertencia cuando el usuario pasa una opción que no está soportada en Opciones.
Corrección de errores
- Se ha corregido un error por el que los valores por defecto de
optimization_levelyresilience_levelno se establecían correctamente. - Se ha corregido un problema por el que, si no se seleccionaba ningún backend,
optimization_levelyresilience_levelpasaban por defecto aNone, lo que provocaba el fallo de la tarea. - Si se pasa una instancia a qiskit_ibm_runtime.QiskitRuntimeService.get_backend() y luego se utiliza el backend en una sesión, todos los trabajos dentro de la sesión se ejecutarán desde la instancia original pasada.
- Eliminada la descomposición adicional de
BlueprintCircuits en el codificador JSON. Se introdujo como corrección de errores, pero ya se ha solucionado. Sin embargo, la descomposición podía dar lugar a problemas si el circuito descompuesto ya no se encontraba en el conjunto de bases correcto del backend.
0.9.1
Notas de actualización
-
qiskit_ibm_runtime.QiskitRuntimeService.jobs() tiene ahora un parámetro
backend_nameque puede utilizarse para devolver sólo los trabajos ejecutados con el backend especificado. -
Permitir al usuario almacenar los detalles de la cuenta en un archivo especificado por el usuario en el parámetro.
filename. El valor por defecto sigue siendo ~/.qiskit/qiskit-ibm.json. Ejemplo de uso: Ej:QiskitRuntimeService.save_account(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account", token="my_token") service = QiskitRuntimeService(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account",)
Notas sobre características en desuso
backendYa no es una opción compatible al usar qiskit_ibm_runtime.Session.run (). Las sesiones no admiten múltiples backends cruzados. Además, se lanzará una excepción si un backend pasado a través de opciones no coincide con el backend de sesión original en una sesión activa.
Corrección de errores
ECRGateyCZGatese han añadido al constructorTargetpara corregir un error de transpilación.
Otras notas
- Dado que los mensajes de error de un trabajo que falla pueden ser largos, los acortamos para que comiencen a partir de la última
Tracebackdel mensaje.
0.9.0
Notas de actualización
- Cambiados los valores por defecto de
optimization_levely deresilience_levelenqiskit_ibm_runtime.Options. Si sus valores son definidos por el usuario, no se modifican. Si no se establece, si el backend es un simulador sin ruido, entoncesoptimization_levelse establece en 1 yresilience_levelen 0; de lo contrario, se establecen en 3 y 1 respectivamente. - se han añadido session_id() y tags() para facilitar la obtención de session_id y job_tags de un trabajo.
Corrección de errores
- Se ha corregido un error por el que los trabajos que no se ejecutaban antes de que se cerrara una sesión no se ejecutaban realmente como parte de esa sesión. Los trabajos deben ejecutarse como parte de una sesión incluso si esa sesión se cierra por la salida del gestor de contexto.
- Se soluciona el problema por el que el envío de un trabajo grande fallaba debido al tiempo de espera de la operación de escritura.
0.8.0
Nuevas funciones
- Python 3.10 es ahora compatible.
- Ahora se pueden configurar opciones avanzadas de resiliencia en
options.resilience. Consulteqiskit_ibm_runtime.options.ResilienceOptionspara conocer todas las opciones disponibles. - Ahora puede especificar un par de descodificadores de resultados para el parámetro
result_decoderdel método qiskit_ibm_runtime.QiskitRuntimeService.run(). Si se especifica un par, el primero se utiliza para descodificar los resultados provisionales y el segundo los resultados finales.
Notas de actualización
- La opción por defecto
resilience_levelpara se ha cambiado de 0 a 1. Además, la opción por defectooptimization_levelse ha cambiado de 1 a 3.
Notas sobre características en desuso
- Las opciones de transpilación
translation_methodytiming_constraintshan quedado obsoletas.
Corrección de errores
- Si se pasa una qiskit_ibm_runtime.IBMBackend se pasa al constructor qiskit_ibm_runtime.Session el servicio utilizado para inicializar la instancia
IBMBackendse utiliza para la sesión en lugar del servicio de cuenta predeterminado.
0.7.0
Nuevas funciones
qiskit_ibm_runtime.Optionsacepta ahora argumentos de palabra clave arbitrarios. Esto permite a los usuarios especificar nuevas opciones a los programas primitivos sin necesidad de actualizarqiskit_ibm_runtime. Sin embargo, estos argumentos arbitrarios de palabras clave no se validan.- La clase qiskit_ibm_runtime.options.EnvironmentOptions acepta ahora un parámetro
callback. Este parámetro puede utilizarse para transmitir los resultados intermedios y finales de las primitivas. - La clase
qiskit_ibm_runtime.Optionsacepta ahoramax_execution_timecomo opción de primer nivel yjob_tagscomo opción bajoenvironment.qiskit_ibm_runtime.RuntimeOptionstambién se ha actualizado para incluir estos dos parámetros.
Notas de actualización
- Esta versión de qiskit-ibm-runtime requiere qiskit-terra versión 0.22 o superior. El archivo
requirements.txtse ha actualizado en consecuencia.
Notas sobre características en desuso
- Qiskit Runtime los programas
torch-train,torch-infer,sample-expval,sample-program, yquantum_kernal_alignmenthan quedado obsoletos debido a su escaso uso. - Pasar el parámetro
instancea qiskit_ibm_runtime.QiskitRuntimeService.run() ha quedado obsoleto. En su lugar, puede pasar el parámetroinstancedentro del parámetrooptions. - Pasar
job_tagsymax_execution_timecomo parámetros a qiskit_ibm_runtime.QiskitRuntimeService ha quedado obsoleto. Por favor, páselos dentro deoptions.
Corrección de errores
- Corrige la sección que faltaba sobre la recuperación de trabajos en la guía práctica.
0.7.0rc2
Notas de actualización
- Se ha añadido una comprobación de validación a
Sampler.run(). Genera un error si no hay bit clásico. - El muestreador se actualiza para devolver
SamplerResultconSamplerResult.quasi_distscomo lista deQuasiDistrbution. Solía establecer una lista dedictcomoSamplerResult.quasi_dists, pero no seguía el diseño deSamplerResult. - La clase RuntimeJob es ahora una subclase de
qiskit.providers.Job.
Notas sobre características en desuso
job_idybackendde qiskit_ibm_runtime.RuntimeJob han quedado obsoletos. Utilice en su lugar los métodos qiskit_ibm_runtime.RuntimeJob.job_id() y qiskit_ibm_runtime.RuntimeJob.backend().- El atributo
backend_namedeqiskit_ibm_runtime.RuntimeOptionsqueda obsoleto y se sustituye porbackend.
0.7.0rc1
Preludio
Hay cambios significativos en cómo se invocan las primitivas dentro de una sesión, y en las opciones disponibles para las primitivas. Consulte el resto de las notas de la versión y los tutoriales para obtener más información.
Nuevas funciones
-
Ahora puede invocar el mismo programa primitivo o programas primitivos diferentes varias veces dentro de una misma sesión. Por ejemplo:
from qiskit_ibm_runtime import QiskitRuntimeService, Session, Sampler, Estimator, Options from qiskit.test.reference_circuits import ReferenceCircuits from qiskit.circuit.library import RealAmplitudes from qiskit.quantum_info import SparsePauliOp # Initialize account. service = QiskitRuntimeService() # Set options, which can be overwritten at job level. options = Options(optimization_level=1) # Prepare inputs. bell = ReferenceCircuits.bell() psi = RealAmplitudes(num_qubits=2, reps=2) H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)]) theta = [0, 1, 1, 2, 3, 5] with Session(service=service, backend="ibmq_qasm_simulator") as session: # Submit a request to the Sampler primitive within the session. sampler = Sampler(session=session, options=options) job = sampler.run(circuits=bell) print(f"Sampler results: {job.result()}") # Submit a request to the Estimator primitive within the session. estimator = Estimator(session=session, options=options) job = estimator.run( circuits=[psi], observables=[H1], parameter_values=[theta] ) print(f"Estimator results: {job.result()}") -
Se introduce una nueva clase
qiskit_ibm_runtime.Options. Esta clase permite autocompletar opciones relacionadas con programas primitivos. Por ejemplo:from qiskit_ibm_runtime import Session, Sampler, Options from qiskit.test.reference_circuits import ReferenceCircuits options = Options() options.optimization_level = 3 # This can be done using auto-complete. with Session(backend="ibmq_qasm_simulator") as session: # Pass the options to Sampler. sampler = Sampler(session=session, options=options) # Or at job level. job = sampler.run(circuits=ReferenceCircuits.bell(), shots=4000) -
qiskit_ibm_runtime.RuntimeJob tiene un nuevo método metrics(). Este método devuelve las métricas de un trabajo, que incluye información de fecha y hora.
-
El qiskit_ibm_runtime.QiskitRuntimeService
channelpuede almacenarse ahora como una variable de entorno,QISKIT_IBM_CHANNEL. De este modo, cuando se utilizan primitivas de tiempo de ejecución, el servicio no tiene que instanciarse manualmente y, en su lugar, puede crearse directamente a partir de variables de entorno.
Notas de actualización
-
RuntimeJobMaxTimeoutErrorcuando un trabajo se ejecuta durante demasiado tiempo para que los programas puedan gestionarlo adecuadamente. -
Los parámetros experimentales
transpilation_settings,resilience_settings, ymax_timede los constructores :class:` qiskit_ibm_runtime.Sampler y qiskit_ibm_runtime.Estimator han sido eliminados. En su lugar, puede utilizar la claseqiskit_ibm_runtime.Optionspara especificar la configuración, ymax_timese puede especificar al iniciar una nueva sesión. Por ejemplo:from qiskit_ibm_runtime import Session, Sampler, Options options = Options() # This can be done using auto-complete. option.optimization_level = 3 options.resilience_level = 1 with Session(max_time="2h") as session: # Pass the options to Sampler. sampler = Sampler(session=session, options=options) -
Dado que algunas cuentas tienen muchos programas en tiempo de ejecución, se ha eliminado el almacenamiento en caché de una lista de todos los programas en la primera llamada a
programs(). En su lugar, los programas sólo se almacenarán en caché hasta la direcciónlimitindicada, cuyo valor por defecto es 20.
Notas sobre características en desuso
-
Invocando qiskit_ibm_runtime.Sampler y qiskit_ibm_runtime.Estimator como gestores de contexto ha quedado obsoleta. En su lugar, puede utilizar la clase qiskit_ibm_runtime.Session para crear una nueva sesión e invocar una o más primitivas dentro de la sesión.
Como resultado, el paso de parámetros de entrada, como
circuits,observables, yparameter_values, así comoservicea los constructores deSampleryEstimatortambién ha quedado obsoleto. Las entradas pueden pasarse ahora al métodorun()de las clases primitivas, yservicepuede pasarse a qiskit_ibm_runtime.Session al iniciar una nueva sesión. -
Pasar
skip_transpilationa los constructores :class:` qiskit_ibm_runtime.Sampler y qiskit_ibm_runtime.Estimator ha quedado obsoleto. En su lugar, puede utilizar la claseqiskit_ibm_runtime.Optionspara especificar esta opción. Por ejemplo:from qiskit_ibm_runtime import Options options = Options() # This can be done using auto-complete. options.transpilation.skip_transpilation = True
Corrección de errores
- Corrige el problema nº 428 aumentando la versión mínima requerida de
qiskit-terraa0.21.0, ya que la última versión deqiskit-ibm-runtimeno es compatible con0.20.0ni con las anteriores deqiskit-terra.
0.6.0
Notas de actualización
-
Al migrar desde
qiskit-ibmq-provider, las credenciales del canalibm_quantumse copiarán automáticamente desde el archivo qiskitrc y se creará un archivo qiskit-ibm.json si no existe. Sólo tiene que inicializar la clase QiskitRuntimeService sin pasar ningún parámetro para utilizar esta cuenta copiada sobre la cuenta por defectoibm_quantum.ex:
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService() -
IBMEstimatorque ya había quedado obsoleta. Utilice la clase Estimator en adelante. -
IBMRuntimeServiceque ya había quedado obsoleta. Utilice QiskitRuntimeService en adelante.
0.5.0
Preludio
Esta versión aprovecha las mejoras introducidas en la API y en las colas para ser más consciente de las sesiones en tiempo de ejecución. Como resultado, al utilizar las primitivas (muestreador y estimador), los trabajos en tiempo de ejecución de la misma sesión saltarán al principio de la cola, acelerando así la sesión en tiempo de ejecución, una vez iniciada.
Nuevas funciones
-
El objeto
serviceque es una instancia de la clase QiskitRuntimeService ahora se puede acceder desde la clase IBMBackend utilizando la propiedadservice.ex:
backend = service.get_backend("ibmq_qasm_simulator") backend.service # QiskitRuntimeService instance used to instantiate the backend
Notas de actualización
-
jobs() tiene dos nuevos parámetros,
created_afterycreated_before. Se pueden utilizar para filtrar los trabajos por fecha de creación en hora local. -
Los parámetros
circuit_indicesyobservable_indicesal llamar aestimatorestán obsoletos y se eliminarán en una futura versión. Ahora puede pasar índices u objetos utilizando los parámetroscircuitsyobservables.ex:
with Estimator( circuits=[qc1, qc2], observables=[H1, H2, H3], service=service, options=options ) as estimator: # pass circuits and observables as indices result = estimator(circuits=[0, 1], observables=[0, 1], parameter_values=[theta1, theta2]) # pass circuits and observables as objects result = estimator(circuits=[qc1, qc2], observables=[H1, H3], parameter_values=[theta1, theta3]) -
Los parámetros
circuit_indicesyobservable_indicesal llamar aestimatorestán obsoletos y se eliminarán en una futura versión. Ahora puede pasar índices u objetos utilizando los parámetroscircuitsyobservables.ex:
with Sampler( circuits=[qc1, qc2], service=service, options=options ) as sampler: # pass circuits as indices result = sampler(circuits=[0, 1], parameter_values=[theta1, theta2]) # pass circuit as objects result = sampler(circuits=[qc1, qc2], parameter_values=[theta2, theta3]) -
El
session_id, que es el ID de trabajo del primer trabajo de una sesión en tiempo de ejecución puede utilizarse ahora como filtro en jobs() con el parámetrosession_id. -
run() admite ahora un nuevo parámetro,
job_tags. Estas etiquetas pueden utilizarse al filtrar trabajos con jobs(). -
run() soporta ahora un nuevo parámetro,
max_execution_time, que puede utilizarse para anular el tiempo máximo de ejecución del programa por defecto. Debe ser inferior o igual al tiempo máximo de ejecución del programa. -
jobs() tiene un nuevo parámetro,
descending. Este parámetro es por defectoTrue, donde los trabajos serán devueltos en orden descendente basado en la fecha de creación. -
RuntimeJobTimeoutErrorahora se activa cuando eltimeoutestablecido en result() o wait_for_final_state() expira. -
Cuando se inicializa QiskitRuntimeService y se utiliza un token no válido, aparecerá
IBMNotAuthorizedErroren lugar deRequestsApiError. -
IBMSamplerque ya había quedado obsoleta. Utilizar la clase Sampler en adelante. -
qubit_properties() devolverá ahora una subclase de
QubitPropertiesllamadaIBMQubitPropertiesy expondrá la anarmonicidad además de t1, t2 y la frecuencia ya expuestas por la claseQubitProperties.
0.4.0
Notas de actualización
-
IBMRuntimeServiceha sido renombrada aQiskitRuntimeSerice. La claseIBMRuntimeServiceestá ahora obsoleta y será eliminada en una futura versión.Ejemplo:
Antes:
from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...")Después:
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") -
IBMEstimatorestá obsoleta y se eliminará en una futura versión. Utilice la clase Estimator en adelante.Ejemplo:
Antes:
from qiskit_ibm_runtime import IBMRuntimeService, IBMEstimator service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...") estimator_factory = IBMEstimator(service=service, backend="ibmq_qasm_simulator") with estimator_factory(circuits=[qc], observables="...", parameters="...") as estimator: result = estimator(circuit_indices=[0], ...)Después:
from qiskit_ibm_runtime import QiskitRuntimeService, Estimator service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") with Estimator( circuits=[qc], observables="...", parameters="...", service=service, options={ "backend": "ibmq_qasm_simulator" }, # or IBMBackend<"ibmq_qasm_simulator"> ) as estimator: result = estimator(circuit_indices=[0], ...) -
IBMSamplerestá obsoleta y se eliminará en una futura versión. Utilizar la clase Sampler en adelante.Ejemplo:
Antes:
from qiskit_ibm_runtime import IBMRuntimeService, IBMSampler service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...") sampler_factory = IBMSampler(service=service, backend="ibmq_qasm_simulator") with sampler_factory(circuits=[qc], parameters="...") as sampler: result = sampler(circuit_indices=[0], ...)Después:
from qiskit_ibm_runtime import QiskitRuntimeService, Sampler service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") with Sampler( circuits=[qc], parameters="...", service=service, options={ "backend": "ibmq_qasm_simulator" }, # or IBMBackend<"ibmq_qasm_simulator"> ) as sampler: result = sampler(circuit_indices=[0], ...)
Notas sobre características en desuso
IBMRuntimeServicelas clasesIBMEstimatoryIBMSamplerhan quedado obsoletas y se eliminarán en una futura versión. Utilice en su lugar las clases QiskitRuntimeService, Estimator y Sampler. Consulte la sección de notas de actualización para obtener una explicación detallada con ejemplos.
0.3.0
Notas de actualización
- Se ha añadido un nuevo parámetro
channela la claseqiskit_ibm_runtime.IBMRuntimeServicey también a métodos comosave_account(),saved_accounts()ydelete_account(). Puede configurarse comoibm_quantumoibm_cloudpara autenticarse en cualquiera de los dos canales diferentes a través de los cuales se ofrece actualmente el servicio Qiskit Runtime.channelsustituye al parámetroauth, que ha quedado obsoleto.
Notas sobre características en desuso
- El parámetro
authde la claseqiskit_ibm_runtime.IBMRuntimeServicey también de métodos comosave_account(),saved_accounts()ydelete_account()ha quedado obsoleto y se eliminará en una futura versión. Utilice en su lugar el nuevo parámetrochannel.
Corrección de errores
- Corregido #291 donde pasar un único
QuantumCircuita primitivas de muestreador o estimador lanzaba un error.
0.2.0
Nuevas funciones
qiskit_ibm_runtime.IBMEstimatoryqiskit_ibm_runtime.IBMSamplerpermiten ahora interactuar fácilmente con los programas primitivosestimatorysampler. Consulte los ejemplos en las cadenas de documentos de las clases respectivas para obtener más información sobre cómo utilizarlas.
Corrección de errores
- Se ha corregido un error por el que qiskit_ibm_runtime.RuntimeJob.wait_for_final_state() provocaba un error NoneType si el trabajo ya había finalizado y qiskit_ibm_runtime.RuntimeJob.status() se había llamado antes.
0.1.0
Preludio
qiskit-ibm-runtime es un nuevo cliente API Python para acceder a los programas, sistemas y simuladores cuánticos de IBM Quantum a través del servicio Qiskit Runtime.
Este nuevo paquete se basa en el trabajo ya realizado en el módulo qiskit.providers.ibmq.runtime del paquete qiskit-ibmq-provider y lo sustituye en adelante. El módulo de ejecución del paquete qiskit-ibmq-provider ha quedado obsoleto.
qiskit-ibm-runtime no está incluido como parte del meta paquete Qiskit y por lo tanto tienes que instalarlo por separado usando pip install qiskit-ibm-runtime.
Nuevas funciones
qiskit_ibm_runtime.IBMRuntimeService.least_busy()le permitirá ahora encontrar el backend menos ocupado.
Notas de actualización
-
el paquete qiskit-ibm-runtime ya no utiliza el archivo $ HOME/.qiskit/qiskitrc utilizado por qiskit-ibmq-provider para guardar las credenciales. Las credenciales se almacenan ahora en formato JSON en el archivo HOME/.qiskit/qiskit-ibm.json cuando se utiliza el método
qiskit_ibm_runtime.IBMRuntimeService.save_account().Ahora puede guardar varias credenciales y dar un nombre opcional a cada una de ellas.
-
Qiskit Runtime se puede acceder al servicio utilizando una cuenta IBM Quantum (legacy) o una cuenta IBM Cloud (cloud). qiskit-ibm-runtime le permite conectarse a cualquiera de estas cuentas:
# Legacy from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(auth="legacy", token="abc") # Cloud from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(auth="cloud", token="abc", instance="IBM Cloud CRN or Service instance name") -
qiskit_ibm_runtime.IBMBackend implementa ahora la interfaz
qiskit.providers.BackendV2y proporciona un acceso más sencillo a la configuración de un backend, por ejemplo:# BackendV1: backend.configuration().n_qubits # BackendV2: backend.num_qubitsEl único cambio importante en comparación con BackendV1 es que backend.name es ahora un atributo en lugar de un método.
Consulte la qiskit_ibm_runtime.IBMBackend para obtener una lista de todos los atributos disponibles.
-
Si utilizó el método qiskit.providers.ibmq.AccountProvider.get_backend (por ejemplo,
provider.get_backend("ibmq_qasm_simulator")) en el paquete qiskit-ibmq-provider, su método equivalente en este nuevo paquete esqiskit_ibm_runtime.IBMRuntimeService.backend():service = IBMRuntimeService() backend = service.backend("ibmq_qasm_simulator") -
Ahora es opcional especificar un concentrador/grupo/proyecto por adelantado al conectarse a la cuenta heredada de IBM Quantum. El centro/grupo/proyecto se selecciona en el siguiente orden.
- hub/group/project si se pasa a través del parámetro
instanceal inicializarqiskit_ibm_runtime.IBMRuntimeService - el hub/grupo/proyecto específico requerido por el backend especificado al llamar a
qiskit_ibm_runtime.IBMRuntimeService.run() - el valor por defecto establecido previamente mediante
qiskit_ibm_runtime.IBMRuntimeService.save_account() - un centro/grupo/proyecto premium en su cuenta
- centro/grupo/proyecto de acceso abierto
- hub/group/project si se pasa a través del parámetro
-
Ahora es opcional especificar backend_name en las opciones al ejecutar el método
qiskit_ibm_runtime.IBMRuntimeService.run()cuando se utiliza el tiempo de ejecución en la nube ( IBM Cloud solamente). El servidor elegirá automáticamente un backend y devolverá el nombre. -
qiskit.providers.ibmq.runtime.IBMRuntimeService se ha eliminado el método.logout en qiskit-ibmq-provider que se utilizaba para borrar la caché de autorización en el servidor.
-
Python 3.6 ha llegado al final de su vida útil y dejará de estar soportado en el nuevo paquete qiskit-ibm-runtime.
-
qiskit.providers.ibmq.runtime.IBMRuntimeService el método.run_circuits en qiskit-ibmq-provider ha sido eliminado y será reemplazado por el programa primitivo
Sampler. -
qiskit_ibm_runtime.IBMRuntimeService.run()acepta ahora opciones de ejecución en tiempo de ejecución como claseqiskit_ibm_runtime.RuntimeOptionsademás de la ya soportada Dict. backend_name, image y log_level son las opciones disponibles actualmente. -
El resultado final también se transmite ahora después de los resultados intermedios cuando se especifica un
callbackaqiskit_ibm_runtime.IBMRuntimeService.run()o qiskit_ibm_runtime.RuntimeJob.stream_results().
0.1.0rc2
Nuevas funciones
- Para mayor comodidad, ahora puede establecer la dirección
IBM Cloud service namecomo valor para el parámetro de cuentainstance. Si elige establecer el nombre en lugar deCRN, el tiempo de inicialización de la claseqiskit_ibm_runtime.IBMRuntimeServicees ligeramente superior porque el valor requeridoCRNse resuelve internamente a través de las API IBM Cloud.
Corrección de errores
- qiskit_ibm_runtime.utils.json.RuntimeEncoder y qiskit_ibm_runtime.utils.json.RuntimeDecoder se han actualizado para manejar instancias de la clase Instrucción.
- Se ha solucionado un problema por el que las ndarrays de numpy con tipos de objeto no se podían serializar. qiskit_ibm_runtime.utils.json.RuntimeEncoder y qiskit_ibm_runtime.utils.json.RuntimeDecoder se han actualizado para manejar estas ndarrays.
0.1.0rc1
Nuevas funciones
- Ahora puede pasar el parámetro
instanceen el formato centro/grupo/proyecto aqiskit_ibm_runtime.IBMRuntimeService.jobs()para filtrar los trabajos. Actualmente sólo se admite para la autenticación heredada. - Ahora puede utilizar el método qiskit_ibm_runtime.RuntimeJob.interim_results() para recuperar los resultados provisionales del programa en tiempo de ejecución. Tenga en cuenta que los resultados provisionales sólo estarán disponibles durante un máximo de dos días.
Notas de actualización
- Con el fin de ser coherente con otras propiedades en qiskit_ibm_runtime.RuntimeJob los métodos job_id y backend se han convertido en propiedades.
- Al cargar un programa con
qiskit_ibm_runtime.IBMRuntimeService.upload_program(), la descripción del programa es ahora opcional. - Al imprimir programas con
qiskit_ibm_runtime.IBMRuntimeService.pprint_programs(), ahora aparecerábackend_requirements.
Corrección de errores
- Se ha corregido un problema con la codificación y descodificación de JSON al utilizar
ParameterExpressions junto con Qiskit Terra 0.19.1 y superiores. Antes, las instancias deParameterreconstruidas a partir de la salida JSON tenían identificadores únicos diferentes, lo que hacía que parecieran desiguales a las de entrada. Ahora tendrán las identidades de respaldo correctas.