Skip to main content
IBM Quantum Platform

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 StochasticSwap est implémentée en Cython.
  • Ajout de classes QuantumChannel pour la manipulation des canaux quantiques et des cartes CPTP.
  • Prise en charge des circuits paramétrés.
  • L'interface PassManager a é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, et ConsolidateBlocks.

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 _get dans l'objet DAGCircuit sont renommées sans ce préfixe.
  • Les éléments de couplinglist of CouplingMap ont é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.qcvv est 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 fonction qiskit.compiler.transpile() pour transformer un circuit, suivie de qiskit.compiler.assemble() pour en faire un Qobj. Au lieu de compile(...), utilisez assemble(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 objets QuantumCircuit d'un Qobj compilé.
  • L'espace de noms qiskit.mapper a été supprimé. Les classes Layout et CouplingMap sont accessibles via qiskit.transpiler.
  • Quelques fonctions de qiskit.tools.qi.qi sont devenues obsolètes et ont été déplacées vers qiskit.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.utils qiskit-aer #181
  • Ajout de la méthode __eq__ à NoiseModel, QuantumError, ReadoutError qiskit-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 to QubitVector qiskit-aer #124
  • Ajout d'une porte à permutation contrôlée optimisée à QubitVector qiskit-aer #142
  • Ajout de l'optimisation de la fusion des portes pour QasmController, qui est activée par le paramètre fusion_enable=true qiskit-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_state qiskit-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_gates kwarg à NoiseModel init 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_mb un nouveau paramètre de backend_opts qiskit-aer #61
  • Améliorer les performances de u1 dans statevector qiskit-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 pour QasmSimulator et StatevectorSimulator qiskit-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 Eigenvalues avec variante EigQPE
  • Composant enfichable Reciprocal avec les variantes LookupRotation et LongDivision
  • Opérations à contrôle multiple U1 et U3 mcu1 et mcu3
  • Composant enfichable QFT dérivé du composant IQFT
  • Résumé des circuits transpilés au niveau de journalisation DEBUG
  • QuantumInstance accepte basis_gates et coupling_map à nouveau.
  • Prise en charge de l'utilisation de la porte cx pour l'intrication dans les formes variationnelles RY et RYRZ (cz est 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 par VQE et QSVMVariational
  • Ajout de ising/docplex.py pour la génération automatique de l'hamiltonien d'Ising à partir des modèles d'optimisation de DOcplex
  • Ajout du mode 'basic-dirty-ancilla' pour mct
  • Ajout de mcmt pour 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 LogicalExpressionOracle pour 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 TruthTableOracle pour générer des circuits d'oracle à partir de tables de vérité avec une capacité d'optimisation optionnelle
  • Ajout de CustomCircuitOracle pour 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_hermitian et auto_resize à l'algorithme HHL afin de prendre en charge par défaut les matrices non hermitiennes et de taille différente de celle de 2n2^n
  • 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_Classical peut désormais charger des modèles formés par QSVM

Corrections des erreurs

  • Correction de ising/docplex.py pour 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

  • QuantumInstance ne prend plus memory .
  • 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 par LogicalExpressionOracle)
  • Modification de l'implémentation du mode advanced de mct: utilisation de simples portes h au lieu de ch, et correction de l'ancienne étape de récursion dans le mode _multicx
  • Composants random_distributions renommé en uncertainty_models
  • Réorganisation des constructions de diverses portes communes (ch, cry, mcry, mct, mcu1, mcu3, mcmt, logic_and, et logic_or) et de circuits (PhaseEstimationCircuit, BooleanLogicCircuits, FourierTransformCircuits, et StateVectorCircuits) sous le répertoire circuits
  • L'algorithme QSVMVariational a été rebaptisé VQC, ce qui signifie Variational Quantum Classifier (classificateur quantique variationnel)
  • L'algorithme QSVMKernel a été renommé en QSVM
  • La classe SVMInput a été renommée en ClassificationInput
  • Renommé le type de problème 'svm_classification' en 'classification'
  • Le type de entangler_map utilisé dans FeatureMap et VariationalForm a é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-provider avec pip install qiskit-ibmq-provider si 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.
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.