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
StochasticSwapestá implementado en Cython. - Añadidas clases
QuantumChannelpara manipular canales cuánticos y mapas CPTP. - Soporte para circuitos parametrizados.
- Se ha mejorado la interfaz
PassManagery 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, yConsolidateBlocks.
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
_geten el objetoDAGCircuitestán siendo renombrados sin ese prefijo. - Cambio de elementos en
couplinglistdeCouplingMapde 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.qcvvestá 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ónqiskit.compiler.transpile()para transformar un circuito, seguida deqiskit.compiler.assemble()para convertirlo en un Qobj. En lugar decompile(...), utiliceassemble(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 objetosQuantumCircuitde un Qobj compilado.- El espacio de nombres
qiskit.mapperha quedado obsoleto. Se puede acceder a las clasesLayoutyCouplingMapa través deqiskit.transpiler. - Algunas funciones de
qiskit.tools.qi.qihan quedado obsoletas y se han trasladado aqiskit.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_modelanoise.utilsqiskit-aer #181 - Añadido el método
__eq__aNoiseModel,QuantumError,ReadoutErrorqiskit-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 aQubitVectorqiskit-aer #124 - Añadida puerta optimizada de intercambio controlado a
QubitVectorqiskit-aer #142 - Añadida la optimización gate-fusion para
QasmController, que se activa configurandofusion_enable=trueqiskit-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_stateqiskit-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_gateskwarg aNoiseModelinit 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_mbun nuevo parámetro debackend_optsqiskit-aer #61 - Mejorar el rendimiento de u1 en
statevectorqiskit-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 paraQasmSimulatoryStatevectorSimulatorqiskit-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
Eigenvaluescon varianteEigQPE - Componente enchufable
Reciprocalcon las variantesLookupRotationyLongDivision - Operaciones de control múltiple U1 y U3
mcu1ymcu3 - Componente enchufable
QFTderivado del componenteIQFT - Resumidos los circuitos transpilados en el nivel de registro DEBUG
QuantumInstanceaceptabasis_gatesycoupling_mapde nuevo.- Soporte para utilizar la puerta
cxpara el enredo enRYyRYRZforma variacional (czes 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 porVQEyQSVMVariational - Añadido
ising/docplex.pypara generar automáticamente el Hamiltoniano de Ising a partir de modelos de optimización de DOcplex - Añadido el modo
'basic-dirty-ancilla' paramct - Añadido
mcmtpara 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
LogicalExpressionOraclepara 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
TruthTableOraclepara generar circuitos de oráculo a partir de tablas de verdad con capacidad de optimización opcional - Añadido
CustomCircuitOraclepara 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
Customa 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_hermitianyauto_resizeal algoritmoHHLpara que admita matrices no hermitianas y de tamaño distinto de 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_Classicalahora puede cargar modelos entrenados porQSVM
Corrección de errores
- Corregido
ising/docplex.pypara 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
QuantumInstanceya no aceptamemory.- 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 porLogicalExpressionOracle) - Cambiada la implementación del modo
advanceddemct: usando puertas simples dehen lugar dech, y arreglando el antiguo paso de recursión en_multicx - Componentes
random_distributionsrenombrado auncertainty_models - Reorganizadas las construcciones de varias puertas comunes (
ch,cry,mcry,mct,mcu1,mcu3,mcmt,logic_and, ylogic_or) y circuitos (PhaseEstimationCircuit,BooleanLogicCircuits,FourierTransformCircuits, yStateVectorCircuits) bajo el directoriocircuits - Cambió el nombre del algoritmo
QSVMVariationalporVQC, que significa Clasificador Cuántico Variacional - Se ha cambiado el nombre del algoritmo
QSVMKernelporQSVM - Se ha cambiado el nombre de la clase
SVMInputporClassificationInput - Se ha cambiado el nombre del tipo de problema
'svm_classification'por'classification' - Cambiado el tipo de
entangler_maputilizado enFeatureMapyVariationalForma 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-providerconpip install qiskit-ibmq-providersi 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.