Skip to main content
IBM Quantum Platform

Notas de la versión de Qiskit 0.9


0.9

Terra 0.8

Punto destacado

  • Introducción del módulo Pulse en qiskit.pulse, que incluye herramientas para crear comandos de pulsos, programarlos en canales de pulsos, visualizarlos y ejecutarlos en dispositivos IBM Q.
  • Mejora de las clases QuantumCircuit e Instruction, que permiten componer subcircuitos arbitrarios en circuitos mayores, y también crear circuitos parametrizados.
  • Un potente módulo Quantum Info en qiskit.quantum_info, que proporciona herramientas para trabajar con operadores y canales y para utilizarlos dentro de los circuitos.
  • Nuevos pases de optimización del transpilador y acceso a rutinas de transpilación predefinidas.

Nuevas funciones

  • El núcleo de la rutina StochasticSwap está implementado en Cython.
  • Añadidas clases QuantumChannel para manipular canales cuánticos y mapas CPTP.
  • Soporte para circuitos parametrizados.
  • Se ha mejorado la interfaz PassManager y se han añadido nuevas funciones para facilitar la interacción y el uso con gestores de pases personalizados.
  • Ahora se incluye PassManager, que ofrece una serie predeterminada de pases del transpilador.
  • Archivos de configuración de usuario para permitir que los entornos locales anulen los valores por defecto de algunas funciones.
  • Nuevos pases de transpilador: EnlargeWithAncilla, Unroll2Q, NoiseAdaptiveLayout, OptimizeSwapBeforeMeasure, RemoveDiagonalGatesBeforeMeasure, CommutativeCancellation, Collect2qBlocks, y ConsolidateBlocks.

Consideraciones acerca de la compatibilidad

Como parte de la versión 0.8, los siguientes elementos han quedado obsoletos y se eliminarán o cambiarán de forma incompatible con versiones anteriores en una versión futura. Aunque no es estrictamente necesario, estas son las cosas que hay que ajustar antes de la publicación de 0.9 (a menos que se indique lo contrario) para evitar un cambio brusco en el futuro.

  • Los métodos prefijados por _get en el objeto DAGCircuit están siendo renombrados sin ese prefijo.
  • Cambio de elementos en couplinglist de CouplingMap de tuplas a listas.
  • Las bases de desenrollado ahora deben ser explícitas, y su violación genera un mensaje informativo QiskitError.
  • El paquete qiskit.tools.qcvv está obsoleto y se eliminará en el futuro. Usted debe migrar a utilizar el Qiskit Ignis que sustituye a este módulo.
  • La función qiskit.compile() ha quedado obsoleta en favor del uso explícito de la función qiskit.compiler.transpile() para transformar un circuito, seguida de qiskit.compiler.assemble() para convertirlo en un Qobj. En lugar de compile(...), utilice assemble(transpile(...), ...).
  • qiskit.converters.qobj_to_circuits() ha quedado obsoleto y se eliminará en una futura versión. En su lugar, qiskit.assembler.disassemble() debería utilizarse para extraer objetos QuantumCircuit de un Qobj compilado.
  • El espacio de nombres qiskit.mapper ha quedado obsoleto. Se puede acceder a las clases Layout y CouplingMap a través de qiskit.transpiler.
  • Algunas funciones de qiskit.tools.qi.qi han quedado obsoletas y se han trasladado a qiskit.quantum_info.

Tenga en cuenta que en esta versión se han introducido algunos cambios incompatibles con versiones anteriores. Las siguientes notas contienen información sobre cómo adaptarse a estos cambios.

IBM Proveedor Q

El proveedor IBM Q se incluía antes en Terra, pero se ha dividido en un paquete aparte qiskit-ibmq-provider. Esto tendrá que ser instalado, ya sea a través de pypi con pip install qiskit-ibmq-provider o desde el código fuente con el fin de acceder a qiskit.IBMQ o qiskit.providers.ibmq. Si instalas qiskit con pip install qiskit, se instalarán automáticamente todos los subpaquetes del proyecto Qiskit.

Componentes Cython

A partir de la versión 0.8, el núcleo de la rutina de intercambio estocástico se implementa ahora en Cython. Esto se hizo para mejorar significativamente el rendimiento del intercambiador, sin embargo si construyes Terra desde el código fuente o ejecutas en un non-x86 u otra plataforma sin ruedas precompiladas e instalas desde la distribución fuente necesitarás asegurarte de que tienes Cython instalado antes de instalar/construir Qiskit Terra. Esto se puede hacer fácilmente con pip/pypi: pip install Cython.

Flujo de trabajo del compilador

La función qiskit.compile() ha quedado obsoleta y se ha sustituido por una primera llamada a qiskit.compiler.transpile() para ejecutar la optimización y el mapeado en un circuito y, a continuación, a qiskit.compiler.assemble() para construir un Qobj a partir de ese circuito optimizado y enviarlo a un backend. Si bien esto es sólo una depreciación emitirá una advertencia si utiliza la antigua llamada qiskit.compile() .

parámetros transpile(), assemble(), execute()

Estas funciones están muy sobrecargadas y aceptan una amplia gama de entradas. Pueden manejar entradas de circuito y de impulsos. Todos los kwargs excepto backend para estas funciones ahora también aceptan listas de los tipos previamente aceptados. El kwarg initial_layout puede suministrarse ahora como lista y diccionario, por ejemplo, para asignar un experimento de Bell a los qubits 13 y 14, puede suministrar: initial_layout=[13, 14] o initial_layout={qr[0]: 13, qr[1]: 14}

Qobj

La clase Qobj se ha dividido en dos subclases separadas en función del caso de uso, PulseQobj o QasmQobj para trabajos de pulsos y circuitos respectivamente. Si está interactuando con Qobj directamente puede que tenga que ajustar su uso en consecuencia.

El qiskit.qobj.qobj_to_dict() se elimina. En su lugar, utilice el método to_dict() de un objeto Qobj.

Visualización

El mayor cambio del módulo de visualización es que ha pasado de qiskit.tools.visualization a qiskit.visualization. Esto se hizo para indicar que el módulo de visualización es algo más que una herramienta. Sin embargo, dado que esta interfaz se declaró estable en la versión 0.7, la interfaz pública de qiskit.tools.visualization seguirá funcionando. Esto puede cambiar en una futura versión, pero será obsoleto antes de ser eliminado si esto ocurre.

Las funciones anteriormente obsoletas, plot_circuit(), latex_circuit_drawer(), generate_latex_source(), y matplotlib_circuit_drawer() de qiskit.tools.visualization han sido eliminadas. En lugar de estas funciones, debe utilizarse la llamada a qiskit.visualization.circuit_drawer() con los argumentos adecuados.

Las claves anteriormente obsoletas plot_barriers y reverse_bits del diccionario de kwargs style están obsoletas, en su lugar deben utilizarse los kwargs qiskit.visualization.circuit_drawer() plot_barriers y reverse_bits .

Se han eliminado las funciones de trazado de Wigner plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette, y plot_wigner_data que anteriormente se encontraban en el módulo qiskit.tools.visualization._state_visualization . Nunca se expusieron a través de la interfaz pública estable y no estaban bien documentadas. Todavía se puede acceder al código para utilizar esta función a través del repositorio qiskit-tutorials.

Correlacionador

La api pública de qiskit.mapper se ha trasladado a qiskit.transpiler. Aunque sólo se ha dejado de utilizar en esta versión, se eliminará en la versión 0.9, por lo que si actualiza su uso de Layout y CouplingMap para importar desde qiskit.transpiler en lugar de qiskit.mapper antes de que esto ocurra, evitará sorpresas en el futuro.

Aer 0.2

Nuevas funciones

  • Añadido multiplexor puerta qiskit-aer #192
  • Añadida la función remap_noise_model a noise.utils qiskit-aer #181
  • Añadido el método __eq__ a NoiseModel, QuantumError, ReadoutError qiskit-aer #181
  • Añadido soporte para puertas etiquetadas en modelos de ruido qiskit-aer #175
  • Añadido optimizado mcx, mcy, mcz, mcu1, mcu2, mcu3, puertas a QubitVector qiskit-aer #124
  • Añadida puerta optimizada de intercambio controlado a QubitVector qiskit-aer #142
  • Añadida la optimización gate-fusion para QasmController, que se activa configurando fusion_enable=true qiskit-aer #136
  • Añadida una mejor gestión de las simulaciones fallidas qiskit-aer #167
  • Añadido qubits truncar optimización para qubits no utilizados qiskit-aer #164
  • Añadida la posibilidad de desactivar el error de despolarización en el modelo de ruido del dispositivo qiskit-aer #131
  • Se agregó la instrucción de inicialización del simulador a statevector_state qiskit-aer #117, qiskit-aer #137
  • Añadidos mapas de acoplamiento a los simuladores qiskit-aer #93
  • Añadido marco de optimización de circuitos qiskit-aer #83
  • Se agregaron las pruebas comparativas qiskit-aer #71 y qiskit-aer #177
  • Añadido soporte de ruedas para Debian -como las distribuciones qiskit-aer #69
  • Añadida autoconfiguración de hilos para el simulador qasm qiskit-aer #61
  • Añadido método de simulación basado en descomposiciones de rango de estabilizador qiskit-aer #51
  • Añadido basis_gates kwarg a NoiseModel init qiskit-aer #175.
  • Añadido un parámetro opcional a NoiseModel.as_dict() para devolver diccionarios que se pueden serializar utilizando la biblioteca json estándar directamente qiskit-aer #165
  • Refactorizar la gestión de hilos qiskit-aer #50
  • Mejorar las transformaciones de ruido qiskit-aer #162
  • Mejorar la notificación de errores qiskit-aer #160
  • Mejorar la eficiencia de la paralelización con max_memory_mb un nuevo parámetro de backend_opts qiskit-aer #61
  • Mejorar el rendimiento de u1 en statevector qiskit-aer #123

Corrección de errores

  • Corregidos los problemas de colisión de OpenMP en macOS para el complemento Terra qiskit-aer #46

Consideraciones acerca de la compatibilidad

  • Opción backend "initial_statevector" obsoleta para QasmSimulator y StatevectorSimulator qiskit-aer #185
  • Renombrado "chop_threshold" opción backend a "zero_threshold" y cambiado el valor por defecto a 1e-10 qiskit-aer #185

Ignis 0.1

Nuevas funciones

  • Volumen cuántico
  • Mitigación de las mediciones mediante calibraciones tensadas
  • La RB simultánea tiene la opción de alinear las puertas Clifford entre subconjuntos
  • La corrección de la medición puede producir una nueva calibración para un subconjunto de qubits

Consideraciones acerca de la compatibilidad

  • RB escribe en el conjunto mínimo de registros clásicos (solía ser Q [i] -> C [i] ). Este cambio permite corregir la medición con RB. A menos que los usuarios tuvieran un código de análisis externo, esto no cambiará los resultados. Los circuitos RB de 0.1 no son compatibles con los instaladores de 0.1.1.

Aqua 0.5

Nuevas funciones

  • Aplicación del algoritmo HHL compatible con LinearSystemInput
  • Componente enchufable Eigenvalues con variante EigQPE
  • Componente enchufable Reciprocal con las variantes LookupRotation y LongDivision
  • Operaciones de control múltiple U1 y U3 mcu1 y mcu3
  • Componente enchufable QFT derivado del componente IQFT
  • Resumidos los circuitos transpilados en el nivel de registro DEBUG
  • QuantumInstance acepta basis_gates y coupling_map de nuevo.
  • Soporte para utilizar la puerta cx para el enredo en RY y RYRZ forma variacional (cz es la opción por defecto)
  • Posibilidad de utilizar un hamiltoniano mezclador arbitrario en QAOA, lo que permite utilizar QAOA en problemas de optimización con restricciones [arXiv:1709.03489]
  • Añadida la clase base del algoritmo variacional VQAlgorithm, implementada por VQE y QSVMVariational
  • Añadido ising/docplex.py para generar automáticamente el Hamiltoniano de Ising a partir de modelos de optimización de DOcplex
  • Añadido el modo 'basic-dirty-ancilla' para mct
  • Añadido mcmt para la puerta multiobjetivo multicontrolada
  • Capacidades expuestas para generar circuitos a partir de fórmulas lógicas AND, OR, DNF (formas normales disyuntivas) y CNF (formas normales conjuntivas)
  • Se ha añadido la capacidad de generar circuitos a partir de fórmulas ESOP (suma exclusiva de productos) con optimización opcional basada en Quine-McCluskey y ExactCover
  • Se ha añadido LogicalExpressionOracle para generar circuitos de oráculo a partir de expresiones lógicas booleanas arbitrarias (incluida la compatibilidad con DIMACS) con capacidad de optimización opcional
  • Se ha añadido TruthTableOracle para generar circuitos de oráculo a partir de tablas de verdad con capacidad de optimización opcional
  • Añadido CustomCircuitOracle para generar oráculos a partir de circuitos especificados por el usuario
  • Añadida la implementación del algoritmo Deutsch-Jozsa
  • Añadida la implementación del algoritmo Bernstein-Vazirani
  • Añadida la implementación del algoritmo de Simon
  • Añadida la implementación del algoritmo de Shor
  • Se ha añadido la posibilidad de que el algoritmo de Grover tome un estado inicial personalizado (en lugar de la superposición uniforme predeterminada)
  • Se ha añadido la posibilidad de crear un estado inicial Custom a partir de un circuito existente
  • Añadido el algoritmo de optimización ADAM (y AMSGRAD)
  • Se han añadido distribuciones multivariantes, por lo que los modelos de incertidumbre tienen ahora componentes de distribución univariante y multivariante
  • Se ha añadido la opción de incluir u omitir las operaciones de intercambio para las construcciones de circuitos qft e iqft
  • Añadido el solucionador de sistemas lineales clásicos ExactLSsolver
  • Se han añadido los parámetros auto_hermitian y auto_resize al algoritmo HHL para que admita matrices no hermitianas y de tamaño distinto de 2n2^n por defecto
  • Se ha añadido otro mapa de características, RawFeatureVector, que asigna directamente los vectores de características a los estados de los qubits para su clasificación
  • SVM_Classical ahora puede cargar modelos entrenados por QSVM

Corrección de errores

  • Corregido ising/docplex.py para multiplicar correctamente los valores constantes en las restricciones
  • Se ha corregido la configuración de paquetes para identificar correctamente los paquetes de espacios de nombres que utilizan setuptools.find_namespace_packages

Consideraciones acerca de la compatibilidad

  • QuantumInstance ya no acepta memory .
  • Movida la línea de comandos y la GUI a un repositorio separado (qiskit_aqua_uis)
  • Eliminado el oráculo específico de SAT(ahora soportado por LogicalExpressionOracle)
  • Cambiada la implementación del modo advanced de mct: usando puertas simples de h en lugar de ch, y arreglando el antiguo paso de recursión en _multicx
  • Componentes random_distributions renombrado a uncertainty_models
  • Reorganizadas las construcciones de varias puertas comunes (ch, cry, mcry, mct, mcu1, mcu3, mcmt, logic_and, y logic_or) y circuitos (PhaseEstimationCircuit, BooleanLogicCircuits, FourierTransformCircuits, y StateVectorCircuits) bajo el directorio circuits
  • Cambió el nombre del algoritmo QSVMVariational por VQC, que significa Clasificador Cuántico Variacional
  • Se ha cambiado el nombre del algoritmo QSVMKernel por QSVM
  • Se ha cambiado el nombre de la clase SVMInput por ClassificationInput
  • Se ha cambiado el nombre del tipo de problema 'svm_classification' por 'classification'
  • Cambiado el tipo de entangler_map utilizado en FeatureMap y VariationalForm a lista de listas

IBM Proveedor Q 0.1

Nuevas funciones

  • Esta es la primera versión como paquete independiente. Si está instalando Terra de forma independiente, también necesitará instalar el paquete qiskit-ibmq-provider con pip install qiskit-ibmq-provider si desea utilizar los backends Q de IBM.
  • Se ha eliminado del proveedor la compatibilidad con trabajos sin formato Qobj. Tendrás que convertir los envíos en un formato antiguo a Qobj antes de poder enviarlos.
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.