Notes de publication de Qiskit 0.9
0.9
Terra 0.8
Mises en évidence
- Introduction du module Pulse sous
qiskit.pulse, qui comprend des outils pour créer des commandes d'impulsion, les programmer sur des canaux d'impulsion, les visualiser et les exécuter sur les appareils IBM Q. - Amélioration des classes QuantumCircuit et Instruction, permettant la composition de sous-circuits arbitraires en circuits plus grands, ainsi que la création de circuits paramétrés.
- Un puissant module Quantum Info sous
qiskit.quantum_info, fournissant des outils pour travailler avec des opérateurs et des canaux et pour les utiliser à l'intérieur de circuits. - Nouvelles passes d'optimisation du transpilateur et accès à des routines de transpilage prédéfinies.
Nouvelles fonctions
- La routine principale de
StochasticSwapest implémentée en Cython. - Ajout de classes
QuantumChannelpour la manipulation des canaux quantiques et des cartes CPTP. - Prise en charge des circuits paramétrés.
- L'interface
PassManagera été améliorée et de nouvelles fonctions ont été ajoutées pour faciliter l'interaction et l'utilisation avec les gestionnaires de laissez-passer personnalisés. - Le site
PassManagerest maintenant inclus et offre un pipeline prédéterminé de passages du transpondeur. - Fichiers de configuration utilisateur permettant aux environnements locaux de remplacer les valeurs par défaut de certaines fonctions.
- Le nouveau transpondeur passe :
EnlargeWithAncilla,Unroll2Q,NoiseAdaptiveLayout,OptimizeSwapBeforeMeasure,RemoveDiagonalGatesBeforeMeasure,CommutativeCancellation,Collect2qBlocks, etConsolidateBlocks.
Compatibility Considerations
Dans le cadre de la version 0.8, les éléments suivants ont été dépréciés et seront soit supprimés, soit modifiés de manière incompatible dans une prochaine version. Bien que cela ne soit pas strictement nécessaire, il s'agit d'éléments à prendre en compte avant la publication de 0.9 (sauf indication contraire) afin d'éviter un changement radical à l'avenir.
- Les méthodes préfixées par
_getdans l'objetDAGCircuitsont renommées sans ce préfixe. - Les éléments de
couplinglistofCouplingMapont été remplacés par des listes au lieu de tuples. - Les bases des dérouleurs doivent maintenant être explicites, et toute violation soulève une question informative
QiskitError. - Le paquet
qiskit.tools.qcvvest obsolète et sera supprimé à l'avenir. Vous devriez migrer vers l'utilisation du Qiskit Ignis qui remplace ce module. - La fonction
qiskit.compile()est désormais dépréciée au profit de l'utilisation explicite de la fonctionqiskit.compiler.transpile()pour transformer un circuit, suivie deqiskit.compiler.assemble()pour en faire un Qobj. Au lieu decompile(...), utilisezassemble(transpile(...), ...). qiskit.converters.qobj_to_circuits()est obsolète et sera supprimée dans une prochaine version. Au lieu de cela,qiskit.assembler.disassemble()doit être utilisé pour extraire des objetsQuantumCircuitd'un Qobj compilé.- L'espace de noms
qiskit.mappera été supprimé. Les classesLayoutetCouplingMapsont accessibles viaqiskit.transpiler. - Quelques fonctions de
qiskit.tools.qi.qisont devenues obsolètes et ont été déplacées versqiskit.quantum_info.
Veuillez noter que certaines modifications incompatibles avec le passé ont été apportées à cette version. Les notes suivantes contiennent des informations sur la manière de s'adapter à ces changements.
IBM Fournisseur Q
Le fournisseur IBM Q était auparavant inclus dans Terra, mais il a été divisé en un paquet séparé qiskit-ibmq-provider. Celui-ci devra être installé, soit via pypi avec pip install qiskit-ibmq-provider , soit à partir des sources afin d'accéder à qiskit.IBMQ ou qiskit.providers.ibmq. Si vous installez qiskit avec pip install qiskit, cela installera automatiquement tous les sous-paquets du projet Qiskit.
Composants Cython
À partir de la version 0.8, la routine principale de swap stochastique est désormais implémentée en Cython. Cela a été fait pour améliorer de manière significative les performances du swapper, cependant si vous construisez Terra à partir des sources ou si vous l'exécutez sur non-x86 ou sur une autre plateforme sans roues préconstruites et que vous l'installez à partir de la distribution des sources, vous devrez vous assurer que Cython est installé avant d'installer/construire Qiskit Terra. Ceci peut être facilement fait avec pip/pypi : pip install Cython.
Flux de travail du compilateur
La fonction qiskit.compile() a été supprimée et remplacée par l'appel à qiskit.compiler.transpile() pour effectuer l'optimisation et le mappage d'un circuit, puis à qiskit.compiler.assemble() pour construire un Qobj à partir de ce circuit optimisé et l'envoyer à un backend. Bien qu'il ne s'agisse que d'une dépréciation, un avertissement sera émis si vous utilisez l'ancien appel qiskit.compile() .
paramètres transpile(), assemble(), execute()
Ces fonctions sont fortement surchargées et acceptent un large éventail d'entrées. Ils peuvent gérer des entrées de circuits et d'impulsions. Tous les kwargs, à l'exception de backend , de ces fonctions acceptent désormais également les listes des types précédemment acceptés. Le kwarg initial_layout peut désormais être fourni à la fois sous forme de liste et de dictionnaire. Par exemple, pour cartographier une expérience de Bell sur les qubits 13 et 14, vous pouvez fournir : initial_layout=[13, 14] ou initial_layout={qr[0]: 13, qr[1]: 14}
Qobj
La classe Qobj a été divisée en deux sous-classes distinctes en fonction du cas d'utilisation, soit PulseQobj ou QasmQobj pour les tâches d'impulsion et de circuit respectivement. Si vous interagissez directement avec Qobj, vous devrez peut-être adapter votre utilisation en conséquence.
qiskit.qobj.qobj_to_dict() a été retiré. Utilisez plutôt la méthode to_dict() d'un objet Qobj.
Visualisation
Le changement le plus important apporté au module de visualisation est qu'il a été déplacé de qiskit.tools.visualization à qiskit.visualization. Cela a été fait pour indiquer que le module de visualisation est plus qu'un simple outil. Cependant, comme cette interface a été déclarée stable dans la version 0.7, l'interface publique de qiskit.tools.visualization continuera à fonctionner. Il est possible que cela change dans une prochaine version, mais le cas échéant, il sera déprécié avant d'être supprimé.
Les fonctions précédemment obsolètes, plot_circuit(), latex_circuit_drawer(), generate_latex_source(), et matplotlib_circuit_drawer() de qiskit.tools.visualization ont été supprimées. Au lieu de ces fonctions, il convient d'appeler qiskit.visualization.circuit_drawer() avec les arguments appropriés.
Les clés plot_barriers et reverse_bits du dictionnaire des kwargs style sont obsolètes. Les kwargs qiskit.visualization.circuit_drawer() plot_barriers et reverse_bits doivent être utilisés à la place.
Les fonctions de tracé de Wigner plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette, et plot_wigner_data qui se trouvaient auparavant dans le module qiskit.tools.visualization._state_visualization ont été supprimées. Ils n'ont jamais été exposés via l'interface publique stable et n'ont pas été bien documentés. Le code permettant d'utiliser cette fonctionnalité est toujours accessible via le dépôt qiskit-tutorials.
Associateur
L'api publique de qiskit.mapper a été déplacée dans qiskit.transpiler. Bien qu'il n'ait été déprécié que dans cette version, il sera supprimé dans la version 0.9. Par conséquent, si vous mettez à jour votre utilisation de Layout et CouplingMap pour importer à partir de qiskit.transpiler au lieu de qiskit.mapper avant que cela n'ait lieu, vous éviterez toute surprise à l'avenir.
Aer 0.2
Nouvelles fonctions
- Ajout d'une porte multiplexeur qiskit-aer #192
- Ajout de la fonction
remap_noise_modelànoise.utilsqiskit-aer #181 - Ajout de la méthode
__eq__àNoiseModel,QuantumError,ReadoutErrorqiskit-aer #181 - Ajout de la prise en charge des portes étiquetées dans les modèles de bruit qiskit-aer #175
- Ajouté optimisé
mcx,mcy,mcz,mcu1,mcu2,mcu3, gates toQubitVectorqiskit-aer #124 - Ajout d'une porte à permutation contrôlée optimisée à
QubitVectorqiskit-aer #142 - Ajout de l'optimisation de la fusion des portes pour
QasmController, qui est activée par le paramètrefusion_enable=trueqiskit-aer #136 - Ajout d'une meilleure gestion des échecs de simulations qiskit-aer #167
- Ajout de l'optimisation de la troncature des qubits pour les qubits non utilisés qiskit-aer #164
- Ajout de la possibilité de désactiver l'erreur de dépolarisation sur le modèle de bruit du dispositif qiskit-aer #131
- Ajout d'une instruction d'initialisation du simulateur à
statevector_stateqiskit-aer #117, qiskit-aer #137 - Ajout de cartes de couplage aux simulateurs qiskit-aer #93
- Ajout du cadre d'optimisation des circuits qiskit-aer #83
- Ajout du benchmarking qiskit-aer #71, qiskit-aer #177
- Ajout du support des roues pour les distributions de type Debian qiskit-aer #69
- Ajout de l'autoconfiguration des threads pour le simulateur qasm qiskit-aer #61
- Ajout d'une méthode de simulation basée sur les décompositions de rang des stabilisateurs qiskit-aer #51
- Ajout de
basis_gateskwarg àNoiseModelinit qiskit-aer #175. - Ajout d'un paramètre optionnel à
NoiseModel.as_dict()pour retourner des dictionnaires qui peuvent être sérialisés en utilisant directement la bibliothèque standard json qiskit-aer #165 - Refactoriser la gestion des threads qiskit-aer #50
- Améliorer les transformations du bruit qiskit-aer #162
- Améliorer le rapport d'erreur qiskit-aer #160
- Améliorer l'efficacité de la parallélisation avec
max_memory_mbun nouveau paramètre debackend_optsqiskit-aer #61 - Améliorer les performances de u1 dans
statevectorqiskit-aer #123
Corrections des erreurs
- Correction de OpenMP problèmes de clash sur macOS pour l'add-on Terra qiskit-aer #46
Compatibility Considerations
- Option de backend
"initial_statevector"obsolète pourQasmSimulatoretStatevectorSimulatorqiskit-aer #185 - Renommer l'option de backend
"chop_threshold"en"zero_threshold"et changer la valeur par défaut en 1e-10 qiskit-aer #185
Ignis 0.1
Nouvelles fonctions
- Volume quantique
- Atténuation des mesures à l'aide d'étalonnages tensoriels
- La RB simultanée permet d'aligner les portes de Clifford sur des sous-ensembles
- La correction des mesures peut produire un nouvel étalonnage pour un sous-ensemble de qubits
Compatibility Considerations
- RB écrit dans l'ensemble minimal de registres classiques (il s'agissait auparavant de Q [i] ->C [i] ). Cette modification permet de corriger les mesures avec RB. À moins que les utilisateurs ne disposent d'un code d'analyse externe, cela ne changera pas les résultats. Les circuits RB de 0.1 ne sont pas compatibles avec les monteurs de 0.1.1.
Aqua 0.5
Nouvelles fonctions
- Mise en œuvre de l'algorithme HHL supportant
LinearSystemInput - Composant enfichable
Eigenvaluesavec varianteEigQPE - Composant enfichable
Reciprocalavec les variantesLookupRotationetLongDivision - Opérations à contrôle multiple U1 et U3
mcu1etmcu3 - Composant enfichable
QFTdérivé du composantIQFT - Résumé des circuits transpilés au niveau de journalisation DEBUG
QuantumInstanceacceptebasis_gatesetcoupling_mapà nouveau.- Prise en charge de l'utilisation de la porte
cxpour l'intrication dans les formes variationnellesRYetRYRZ(czest le choix par défaut) - Prise en charge de l'utilisation d'un hamiltonien de mélangeur arbitraire dans QAOA, permettant l'utilisation de QAOA dans des problèmes d'optimisation contraints [arXiv:1709.03489]
- Ajout de la classe de base d'algorithmes variationnels
VQAlgorithm, implémentée parVQEetQSVMVariational - Ajout de
ising/docplex.pypour la génération automatique de l'hamiltonien d'Ising à partir des modèles d'optimisation de DOcplex - Ajout du mode
'basic-dirty-ancilla' pourmct - Ajout de
mcmtpour les portes multi-contrôles et multi-cibles - Capacités exposées de générer des circuits à partir de formules logiques ET, OU, DNF (formes normales disjonctives) et CNF (formes normales conjonctives)
- Ajout de la possibilité de générer des circuits à partir de formules ESOP (somme exclusive des produits) avec optimisation optionnelle basée sur Quine-McCluskey et ExactCover
- Ajout de
LogicalExpressionOraclepour générer des circuits d'oracle à partir d'expressions logiques booléennes arbitraires (y compris le support DIMACS) avec une capacité d'optimisation optionnelle - Ajout de
TruthTableOraclepour générer des circuits d'oracle à partir de tables de vérité avec une capacité d'optimisation optionnelle - Ajout de
CustomCircuitOraclepour générer un oracle à partir de circuits spécifiés par l'utilisateur - Ajout de l'implémentation de l'algorithme de Deutsch-Jozsa
- Ajout de l'implémentation de l'algorithme de Bernstein-Vazirani
- Ajout de l'implémentation de l'algorithme de Simon
- Ajout de l'implémentation de l'algorithme de Shor
- Ajout d'une option permettant à l'algorithme de Grover de prendre un état initial personnalisé (par opposition à la superposition uniforme par défaut)
- Possibilité de créer un état initial
Customà l'aide d'un circuit existant - Ajout de l'algorithme d'optimisation ADAM (et AMSGRAD)
- Ajout de distributions multivariées, de sorte que les modèles d'incertitude ont désormais des composantes de distribution univariées et multivariées
- Ajout d'une option permettant d'inclure ou d'ignorer les opérations de permutation pour les constructions de circuits qft et iqft
- Ajout d'un solveur de systèmes linéaires classiques
ExactLSsolver - Ajout des paramètres
auto_hermitianetauto_resizeà l'algorithmeHHLafin de prendre en charge par défaut les matrices non hermitiennes et de taille différente de celle de - Ajout d'une autre carte de caractéristiques,
RawFeatureVector, qui associe directement les vecteurs de caractéristiques aux états des qubits pour la classification SVM_Classicalpeut désormais charger des modèles formés parQSVM
Corrections des erreurs
- Correction de
ising/docplex.pypour multiplier correctement les valeurs constantes dans les contraintes - Correction de la configuration des paquets afin d'identifier correctement les paquets de l'espace de noms en utilisant la fonction
setuptools.find_namespace_packages
Compatibility Considerations
QuantumInstancene prend plusmemory.- Déplacement de la ligne de commande et de l'interface graphique dans un repo séparé (
qiskit_aqua_uis) - Suppression de l'oracle spécifique à
SAT(désormais pris en charge parLogicalExpressionOracle) - Modification de l'implémentation du mode
advanceddemct: utilisation de simples porteshau lieu dech, et correction de l'ancienne étape de récursion dans le mode_multicx - Composants
random_distributionsrenommé enuncertainty_models - Réorganisation des constructions de diverses portes communes (
ch,cry,mcry,mct,mcu1,mcu3,mcmt,logic_and, etlogic_or) et de circuits (PhaseEstimationCircuit,BooleanLogicCircuits,FourierTransformCircuits, etStateVectorCircuits) sous le répertoirecircuits - L'algorithme
QSVMVariationala été rebaptiséVQC, ce qui signifie Variational Quantum Classifier (classificateur quantique variationnel) - L'algorithme
QSVMKernela été renommé enQSVM - La classe
SVMInputa été renommée enClassificationInput - Renommé le type de problème
'svm_classification'en'classification' - Le type de
entangler_maputilisé dansFeatureMapetVariationalForma été remplacé par une liste de listes
IBM 0.1 du fournisseur Q
Nouvelles fonctions
- Il s'agit de la première version en tant que paquet autonome. Si vous installez Terra en mode autonome, vous devrez également installer le paquet
qiskit-ibmq-provideravecpip install qiskit-ibmq-providersi vous souhaitez utiliser les backends Q de IBM. - La prise en charge des travaux au format non-Qobj a été supprimée du fournisseur. Vous devrez convertir les soumissions dans un ancien format en Qobj avant de pouvoir les soumettre.