Notes de publication de Qiskit 0.19
0.19.6
Terra 0.14.2
Aucun changement
Aer 0.5.2
Aucun changement
Ignis 0.3.3
Mise à niveau
- Une nouvelle exigence scikit-learn a été ajoutée à la liste des exigences. Cette dépendance a été ajoutée dans la version 0.3.0 mais n'était pas correctement exposée en tant que dépendance dans cette version. Cela conduirait à une
ImportErrorsi le moduleqiskit.ignis.measurement.discriminator.iq_discriminatorsétait importé. Ceci est maintenant correctement listé comme une dépendance de sorte quescikit-learnsera installé avec qiskit-ignis.
Corrections des erreurs
- Corrige un problème dans qiskit-ignis 0.3.2 qui soulevait
ImportErrorlorsqueqiskit.ignis.verification.tomography.fitters.process_fitterétait importé sans quecvxpysoit installé.
Aqua 0.7.3
Aucun changement
IBM 0.7.2 du fournisseur Q
Aucun changement
0.19.5
Terra 0.14.2
Aucun changement
Aer 0.5.2
Aucun changement
Ignis 0.3.2
Corrections des erreurs
- La méthode
qiskit.ignis.verification.TomographyFitter.fit()a amélioré la logique de détection de l'adaptateur par défaut. Auparavant, la méthodecvxfitter était utilisée chaque fois que cvxpy était installé. Cependant, il était possible d'installer cvxpy sans un solveur SDP qui fonctionnerait pour la méthodecvxfitter. Cette logique a été retravaillée de manière à ce que la méthodecvxfitter ne soit utilisée que sicvxpyest installé et qu'un solveur SDP est présent et peut être utilisé. Dans le cas contraire, c'est l'outillstsqqui est utilisé. - Corrige un cas limite dans
qiskit.ignis.mitigation.measurement.fitters.MeasurementFitter.apply()pour les entrées qui ont des étiquettes d'état invalides ou incorrectes qui ne correspondent pas au circuit d'étalonnage. Auparavant, cette opération n'entraînait pas d'erreur et renvoyait simplement un résultat vide. Au lieu de cela, ce cas est désormais correctement pris en compte et une exceptionQiskitErrorest levée en cas d'utilisation d'étiquettes incorrectes.
Aqua 0.7.3
Mise à niveau
- La dépendance cvxpy qui est nécessaire pour le classificateur svm a été supprimée de la liste des exigences et est devenue une dépendance optionnelle. En effet, l'installation de cvxpy n'est pas transparente dans tous les environnements et nécessite souvent l'installation d'un compilateur pour fonctionner. Pour utiliser le classificateur svm, vous devez installer cvxpy en exécutant
pip install cvxpy<1.1.0ou en l'installant avec aqua en exécutantpip install qiskit-aqua[cvx].
Corrections des erreurs
- La méthode
composedu siteCircuitOputilisaitQuantumCircuit.combinequi a été modifié pour utiliserQuantumCircuit.compose. L'utilisation de combine entraîne le problème suivant : la composition d'un opérateur avecCircuitOpbasé sur un registre nommé n'enchaîne pas les opérateurs mais les empile. E.g. en composantZ ^ 2avec un circuit basé sur un registre nommé à 2 qubits, on obtient un opérateur à 4 qubits au lieu d'un opérateur à 2 qubits. - La méthode
MatrixOp.to_instructionrenvoyait auparavant un opérateur et non une instruction. Cette méthode a été mise à jour pour renvoyer une instruction. Notez que cela ne fonctionne que si la primitive de l'opérateur est unitaire, sinon une erreur est soulevée lors de la construction de l'instruction. - La méthode
__hash__de la classePauliOpa utilisé la méthodeid()qui empêche les comparaisons d'ensembles de fonctionner comme prévu puisqu'elles reposent sur des tables de hachage et que des objets identiques utilisés n'ont pas des hachages identiques. Désormais, l'implémentation utilise un hachage de la représentation de la chaîne en ligne avec l'implémentation de la classePauli.
IBM 0.7.2 du fournisseur Q
Aucun changement
0.19.4
Terra 0.14.2
Mise à niveau
- Auparavant, les convertisseurs
circuit_to_gateetcircuit_to_instructionincluaient automatiquement la porte ou l'instruction générée dans leSessionEquivalenceLibraryactif. Ces convertisseurs acceptent désormais un mot-clé optionnelequivalence_librarypour spécifier si et où les instances converties doivent être enregistrées. Par défaut, l'instance convertie n'est pas enregistrée.
Corrections des erreurs
nameLes propriétés des implémentations de la porte X à contrôle multiple (MCXGrayCode,MCXRecursiveetMCXVChain) ont été modifiées pour décrire plus précisément leur implémentation (mcx_gray,mcx_recursive, etmcx_vchainrespectivement) Auparavant, ces portes portaient le nommcx` with ``MCXGate, ce qui entraînait des erreurs de transposition et de simulation.ControlledGateavec un ensemble dectrl_staten'étaient pas évaluées comme étant égales, même si les portes comparées étaient équivalentes. Ce problème a été résolu.- Correction de la conversion de l'unité SI pour
qiskit.pulse.SetFrequency. L'instructionSetFrequencydevrait être exprimée en Hz sur le frontend et doit être convertie en GHz lorsqueSetFrequencyest converti enPulseQobjInstruction. - Les contrôles ouverts ont été mis en œuvre en modifiant la définition d'une porte. Cependant, lorsque la porte existe déjà dans la base, cette définition n'est pas utilisée, ce qui produit des circuits incorrects envoyés à un backend. Cela modifie le dérouleur pour qu'il émette la définition s'il rencontre un portail contrôlé avec des commandes ouvertes.
Aer 0.5.2
Aucun changement
Ignis 0.3.0
Aucun changement
Aqua 0.7.2
Prélude
Le calcul de l'espérance de la VQE avec le simulateur Aer qasm\ est maintenant par défaut un calcul qui a le comportement attendu du bruit de grenaille.
Mise à niveau
- cvxpy est maintenant dans la liste des exigences en tant que dépendance pour qiskit-aqua. Il est utilisé pour le solveur de programme quadratique qui est utilisé dans le cadre de
qiskit.aqua.algorithms.QSVM. Auparavant,cvxoptétait une dépendance optionnelle qui devait être installée pour utiliser cette fonctionnalité. Ceci n'est plus nécessaire car cvxpy sera installé avec qiskit-aqua. - Pour la tomographie d'état exécutée dans le cadre de
qiskit.aqua.algorithms.HHLavec un backend QASM, la fonction d'ajustement de la tomographieqiskit.ignis.verification.StateTomographyFitter.fit()est maintenant appelée explicitement avec la méthode définie surlstsqpour toujours utiliser l'ajustement des moindres carrés. Auparavant, il essayait opportunément d'utiliser le monteurcvxsicvxpyétait installé. Cependant, l'outilcvxdépend d'une installationcvxpyspécifiquement configurée avec un solveur SDP installé dans le cadre decvxpy, ce qui n'est pas toujours le cas dans un environnement oùcvxpyest installé. - Le calcul de l'espérance VQE à l'aide de l'instruction
qiskit.providers.aer.extensions.SnapshotExpectationValuede qiskit-aer n'est plus activé par défaut. Cette option a été changée pour devenir l'option par défaut dans 0.7.0 parce qu'elle est significativement plus rapide, mais elle a conduit à des résultats idéaux inattendus sans bruit de grenaille (voir #1013 pour plus de détails). La valeur par défaut a été rétablie afin de répondre aux attentes des utilisateurs. L'utilisation du calcul plus rapide de l'espérance est maintenant possible en définissant le nouveau kwarginclude_customàTruedans le constructeurqiskit.aqua.algorithms.VQE.
Nouvelles fonctions
- Un nouveau kwarg
include_customa été ajouté au constructeur deqiskit.aqua.algorithms.VQEet de ses sous-classes (principalementqiskit.aqua.algorithms.QAOA). Lorsqu'il est défini sur true et que le kwargexpectationest défini surNone(par défaut), il permet d'utiliser le calcul de l'espérance VQE avec l'instruction Aer'sqasm_simulatorqiskit.providers.aer.extensions.SnapshotExpectationValue. Le calcul basé sur l'instantané Aer spécial est beaucoup plus rapide, mais avec un résultat idéal similaire à celui du simulateur de vecteur d'état.
IBM 0.7.2 du fournisseur Q
Aucun changement
0.19.3
Terra 0.14.1
Aucun changement
Aer 0.5.2
Corrections des erreurs
- Correction d'un bug avec les simulateurs de vecteurs d'état et unitaires qui exécutaient un nombre de plans (parallèles) égal au nombre de threads du CPU au lieu de n'exécuter qu'un seul plan.
- Corrige l'application incorrecte des instructions "diagonal" de la porte qobj dans la méthode du simulateur Qasm de la matrice de densité.
- Correction d'un bogue où les portes conditionnelles n'étaient pas appliquées correctement sur la méthode de simulation de la matrice de densité.
- Correction d'un bug dans les portes CZ et Z pour les méthodes "density_matrix_gpu" et "density_matrix_thrust" QasmSimulator.
- Correction d'un problème où les besoins en mémoire de la simulation n'étaient pas vérifiés sur le site QasmSimulator lors de l'utilisation d'une méthode de simulation non automatique.
- Correction d'une fuite de mémoire qui affectait les méthodes du simulateur GPU
Ignis 0.3.0
Aucun changement
Aqua 0.7.1
Aucun changement
IBM 0.7.2 du fournisseur Q
Corrections des erreurs
qiskit.provider.ibmq.IBMQBackend.jobs()renverra désormais la liste correcte des objetsIBMQJoblorsque le kwargstatusest défini sur'RUNNING'. Corrige #523- Les métadonnées du paquet ont été mises à jour pour refléter correctement la dépendance de
qiskit-terra>= 0.14.0. Cette dépendance a été implicitement ajoutée dans le cadre de la version 0.7.0 mais n'a pas été reflétée dans les exigences du paquet, de sorte qu'il était auparavant possible d'installerqiskit-ibmq-provideravec une version deqiskit-terraqui était trop ancienne. Corrige #677
0.19.0
Terra 0.14.0
Prélude
La version 0.14.0 comprend plusieurs nouvelles fonctionnalités et corrections de bugs. Le plus grand changement de cette version est l'introduction d'une bibliothèque de circuits quantiques dans qiskit.circuit.librarycontenant quelques familles de circuits intéressantes.
La bibliothèque de circuits permet aux utilisateurs d'accéder à un ensemble riche de familles de circuits bien étudiées, dont les instances peuvent être utilisées comme repères, comme éléments de base pour la construction de circuits plus complexes, ou comme outil pour explorer les avantages du calcul quantique par rapport au calcul classique. Le contenu de cette bibliothèque continuera à s'enrichir et à se développer.
La version initiale de la bibliothèque de circuits contient
standard_gatesil s'agit de portes à largeur fixe, couramment utilisées comme blocs de construction primitifs, composées de portes à 1, 2 et 3 qubits. Par exemple, lesXGate,RZZGateetCSWAPGate. L'ancien emplacement de ces portes sousqiskit.extensions.standardest obsolète.generalized_gatesces familles peuvent être généralisées à un nombre arbitraire de qubits, par exemple aPermutationouGMS(porte globale de Molmer-Sorensen).boolean_logic: circuits qui transforment les états de base selon des fonctions logiques booléennes simples, telles queADDouXOR.arithmeticun ensemble de circuits permettant d'effectuer des opérations arithmétiques classiques telles queWeightedAdderetIntegerComparator.basis_changesla transformation quantique de Fourier : des circuits tels que la transformée quantique de Fourier,QFTqui appliquent mathématiquement des changements de base.n_localles modèles d'intrication et de rotation permettent de créer facilement de grands circuits avec des couches de rotation et d'intrication, tels queTwoLocalqui utilise des rotations à un qubit et des enchevêtrements à deux qubits.data_preparationles circuits qui prennent des données d'entrée classiques et les encodent dans un état quantique difficile à simuler, par ex.PauliFeatureMapouZZFeatureMap.- D'autres circuits se sont révélés intéressants dans la littérature, tels que
QuantumVolume,GraphStateouIQP.
Pour faciliter l'utilisation de ces circuits en tant que blocs de construction, nous avons introduit une compose() méthode de qiskit.circuit.QuantumCircuit pour la composition de circuits soit avec d'autres circuits (en les soudant aux extrémités et en permutant éventuellement les fils), soit avec d'autres portes plus simples :
>>> lhs.compose(rhs, qubits=[3, 2], inplace=True) ┌───┐ ┌─────┐ ┌───┐
lqr_1_0: ───┤ H ├─── rqr_0: ──■──┤ Tdg ├ lqr_1_0: ───┤ H ├───────────────
├───┤ ┌─┴─┐└─────┘ ├───┤
lqr_1_1: ───┤ X ├─── rqr_1: ┤ X ├─────── lqr_1_1: ───┤ X ├───────────────
┌──┴───┴──┐ └───┘ ┌──┴───┴──┐┌───┐
lqr_1_2: ┤ U1(0.1) ├ + = lqr_1_2: ┤ U1(0.1) ├┤ X ├───────
└─────────┘ └─────────┘└─┬─┘┌─────┐
lqr_2_0: ─────■───── lqr_2_0: ─────■───────■──┤ Tdg ├
┌─┴─┐ ┌─┴─┐ └─────┘
lqr_2_1: ───┤ X ├─── lqr_2_1: ───┤ X ├───────────────
└───┘ └───┘
lcr_0: 0 ═══════════ lcr_0: 0 ═══════════════════════
lcr_1: 0 ═══════════ lcr_1: 0 ═══════════════════════Ainsi, les circuits de Qiskit ne supposent plus un état initial implicite de et ne seront pas dessinés avec cet état initial. L'état initial entièrement nul est toujours supposé sur un backend lorsqu'un circuit est exécuté.
Nouvelles fonctions
-
Une nouvelle méthode,
has_entry()a été ajoutée à la classeqiskit.circuit.EquivalenceLibrarypour vérifier rapidement si une porte donnée a des décompositions connues dans la bibliothèque. -
Une nouvelle classe
IQPpour construire un circuit polynomial quantique instantané, a été ajoutée au module de bibliothèque de circuitsqiskit.circuit.library. -
Une nouvelle méthode
compose()a été ajoutée à la méthodeqiskit.circuit.QuantumCircuit. Il permet de composer deux circuits quantiques sans avoir à en transformer un en porte ou en instruction. Il permet également des permutations de qubits/clbits au moment de la composition, ainsi qu'une modification facultative sur place. Il peut également être utilisé à la place deappend()car il permet de composer des instructions et des opérateurs sur le circuit. -
qiskit.circuit.library.Diagonalont été ajoutés à la bibliothèque de circuits. Ces circuits mettent en œuvre des opérateurs quantiques diagonaux (composés d'éléments non nuls uniquement sur la diagonale). Elles sont simulées plus efficacement par le simulateur Aer que les matrices denses. -
Ajouter
from_label()à la classeqiskit.quantum_info.Cliffordpour l'initialisation en tant que produit tensoriel de portes I, X, Y, Z, H ou S à qubit unique. -
Le transformateur de programme
qiskit.pulse.reschedule.compress_pulses()effectue une passe d'optimisation pour réduire l'utilisation de la mémoire de forme d'onde dans le matériel en remplaçant plusieurs instances identiques d'une impulsion dans un programme d'impulsions par une seule impulsion. Par exemple :from qiskit.pulse import reschedule schedules = [] for _ in range(2): schedule = Schedule() drive_channel = DriveChannel(0) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedules.append(schedule) compressed_schedules = reschedule.compress_pulses(schedules) -
Le
qiskit.transpiler.Layoutpossède une nouvelle méthodereorder_bits()qui permet de réorganiser une liste de qubits virtuels en fonction de l'objet de disposition. -
Deux nouvelles méthodes ont été ajoutées à l'outil
qiskit.providers.models.PulseBackendConfigurationpour interagir avec les canaux.get_channel_qubits()pour obtenir la liste de tous les qubits exploités par le canal donné etget_qubit_channel()pour obtenir une liste des canaux opérant sur le qubit donné.
-
De nouvelles méthodes
qiskit.extensions.HamiltonianGateetqiskit.circuit.QuantumCircuit.hamiltonian()sont introduites, représentant l'évolution hamiltonienne de la fonction d'onde du circuit par un opérateur hermitien et un temps d'évolution spécifiés par l'utilisateur. Le temps d'évolution peut être aParameterce qui permet de créer des circuits paramétrés de type UCCSD ou QAOA qui se compilent en objetsUnitaryGatesi les paramètrestimesont fournis. L'unité d'unHamiltonianGateavec l'opérateur hamiltonienHet le paramètre de tempstest . -
Le module de bibliothèque de circuits
qiskit.circuit.librarypropose désormais un nouveau circuit logique booléen AND,qiskit.circuit.library.ANDet un circuit OR,qiskit.circuit.library.ORqui réalisent les opérations respectives sur un nombre variable de qubits fournis. -
De nouveaux faux backends sont ajoutés sous
qiskit.test.mock. Il s'agit notamment des versions simulées deibmq_armonk,ibmq_essex,ibmq_london,ibmq_valencia,ibmq_cambridge,ibmq_paris,ibmq_rome, etibmq_athens. Comme pour les autres faux backends, ceux-ci comprennent des instantanés de données d'étalonnage (c'est-à-direbackend.defaults()) et les données d'erreur (c'est-à-direbackend.properties()) prises dans le système réel, et peuvent être utilisées pour les tests locaux, la compilation et la simulation. -
Le paramètre
last_update_datepourBackendPropertiespeut désormais être transmis sous la forme d'un objetdatetime. Auparavant, seule une chaîne au format ISO8601 était acceptée. -
Ajoute
qiskit.quantum_info.Statevector.from_int()etqiskit.quantum_info.DensityMatrix.from_int()qui permettent de construire un état de base de calcul pour des dimensions de système spécifiées. -
Les méthodes de la classe
qiskit.circuit.QuantumCircuitpour ajouter des portes (par exempleh()), qui étaient auparavant ajoutées dynamiquement à la définition de la classe au moment de l'exécution, ont été remaniées pour devenir des méthodes statiques de la classe. Cela signifie que les analyseurs statiques (tels que les IDE) peuvent désormais lire ces méthodes.
Mise à niveau
-
Un nouveau paquet, python-dateutil, est désormais requis et a été ajouté à la liste des exigences. Il est utilisé pour analyser les chaînes de dates reçues de fournisseurs externes dans des objets
BackendPropertiesobjets. -
Les classes de schéma marshmallow dans
qiskit.providers.modelsont été supprimées car elles ne sont plus utilisées par le site BackendObjects. -
La sortie de la méthode
to_dict()pour les classes dansqiskit.providers.modelsn'est plus dans un format permettant une sérialisation JSON directe. En fonction du contenu des instances de ces classes, il peut y avoir des tableaux numpy et/ou des nombres complexes dans les champs du dict. Si vous sérialisez en JSON la sortie des méthodes to_dict, vous devez vous assurer que votre encodeur JSON peut gérer les tableaux numpy et les nombres complexes. Comprend :qiskit.providers.models.BackendConfiguration.to_dict()qiskit.providers.models.BackendProperties.to_dict()qiskit.providers.models.BackendStatus.to_dict()qiskit.providers.models.QasmBackendConfiguration.to_dict()qiskit.providers.models.PulseBackendConfiguration.to_dict()qiskit.providers.models.UchannelLO.to_dict()qiskit.providers.models.GateConfig.to_dict()qiskit.providers.models.PulseDefaults.to_dict()qiskit.providers.models.Command.to_dict()qiskit.providers.models.JobStatus.to_dict()qiskit.providers.models.Nduv.to_dict()qiskit.providers.models.Gate.to_dict()
Remarques concernant la dépréciation
-
La méthode
qiskit.dagcircuit.DAGCircuit.compose()prend maintenant une liste de qubits/clbits qui spécifient l'ordre positionnel des bits à composer. La méthode de mappage basée sur un dictionnaire utilisant l'argumentedge_mapest obsolète et sera supprimée dans une prochaine version. -
La méthode
combine_into_edge_map()pour la classeqiskit.transpiler.Layoutest obsolète et sera supprimée dans une prochaine version. Au lieu de cela, la nouvelle méthodereorder_bits()doit être utilisée pour réorganiser une liste de qubits virtuels en fonction de l'objet de disposition. -
Le passage d'un objet
qiskit.pulse.ControlChannelvia le paramètrechannelpour la méthodeqiskit.providers.models.PulseBackendConfigurationméthodecontrol()a été déprécié et sera supprimé dans une prochaine version. Les objetsControlChannelsont désormais générés à partir de l'attribut de configuration du backendchannelsqui contient les informations relatives à tous les canaux et aux qubits sur lesquels ils opèrent. La méthodecontrol()est censée prendre le paramètrequbitsde la forme(control_qubit, target_qubit)et du typelistoutuple, et renvoie une liste de canaux de contrôle. -
Les méthodes
ANDetORdeqiskit.circuit.QuantumCircuitsont obsolètes et seront supprimées dans une prochaine version. Vous devriez plutôt utiliser les classes logiques booléennes de la bibliothèque de circuitsqiskit.circuit.library.ANDamdqiskit.circuit.library.ORet ajouter ces objets à votre classe. Par exemple :from qiskit import QuantumCircuit from qiskit.circuit.library import AND qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) qc_and = AND(2) qc.compose(qc_and, inplace=True) -
Le module
qiskit.extensions.standardest obsolète et sera supprimé dans une prochaine version. Les classes de portes de ce module ont été déplacées versqiskit.circuit.library.standard_gates.
Corrections des erreurs
-
Les
qiskit.circuit.QuantumCircuitméthodesinverse()mirror(), ainsi que le setterQuantumCircuit.datagénèrent un circuit non valide lorsqu'ils sont utilisés sur une instance de circuit paramétrée. Ce problème a été résolu et ces méthodes devraient désormais fonctionner avec un circuit paramétré. Corrige #4235 -
Auparavant, lors de la création d'une version contrôlée d'une porte qiskit standard, si une adresse
ctrl_stateétait spécifiée, un objet génériqueControlledGateétait renvoyé, alors que sans cette adresse, une porte qiskit standard contrôlée était renvoyée si elle était définie. Cette PR permet aux portes standard contrôlées par qiskit de comprendrectrl_state.En outre, ce PR corrige ce qui pourrait être considéré comme un bogue où le réglage de
ctrl_stated'une porte déjà contrôlée supposait que l'état spécifié s'appliquait à toute la largeur de contrôle au lieu d'ajouter les qubits de contrôle. Par exemple, :circ = QuantumCircuit(2) circ.h(0) circ.x(1) gate = circ.to_gate() cgate = gate.control(1) c3gate = cgate.control(2, ctrl_state=0)appliquerait
ctrl_stateaux trois qubits de contrôle au lieu de n'ajouter que les deux qubits de contrôle. -
Correction d'un bug dans
random_clifford()qui l'empêchait d'échantillonner le groupe de Clifford complet. Corrige #4271 -
La
qiskit.circuit.Instructionméthodeqiskit.circuit.Instruction.is_parameterized()renvoyait auparavantTruepour toute instance deInstructiondont l'un des éléments du tableau contenait unqiskit.circuit.Parameterdans un élément de son tableauparams, même si cette instanceParameteravait été entièrement liée. Cette erreur a été corrigée de sorte que.is_parameterizedrenvoieFalselorsque l'instruction est entièrement liée. -
qiskit.circuit.ParameterExpression.subs()n'avait pas détecté correctement certains cas où la substitution de paramètres aboutissait à deux objetsParametersdistincts dans une expression portant le même nom. Cette erreur a été corrigée, de sorte qu'une adresseCircuitErrorsera affichée dans ces cas. -
Améliorer les performances des
qiskit.quantum_info.Statevectoretqiskit.quantum_info.DensityMatrixpour les simulations de circuits à faible qubit en optimisant les méthodes de la classe__init__. Corrige #4281 -
La fonction
qiskit.compiler.transpile()traite désormais correctement les cas où le paramètrebasis_gatesest défini surNone. Cela permet d'utiliser n'importe quelle porte dans le circuit transpilé de sortie, y compris les portes ajoutées par le processus de transpilation. Notez que l'utilisation de ce paramètre peut avoir des conséquences inattendues lors de l'optimisation. Certains passages de transpondeurs dépendent de l'existence d'un jeu debasis_gates. Par exemple,qiskit.transpiler.passes.Optimize1qGatesn'optimise que les chaînes de portes u1, u2 et u3 et, sansbasis_gates, il est incapable de dérouler des portes qui pourraient autrement être optimisées :from qiskit import * q = QuantumRegister(1, name='q') circuit = QuantumCircuit(q) circuit.h(q[0]) circuit.u1(0.1, q[0]) circuit.u2(0.1, 0.2, q[0]) circuit.h(q[0]) circuit.u3(0.1, 0.2, 0.3, q[0]) result = transpile(circuit, basis_gates=None, optimization_level=3) result.draw()┌───┐┌─────────────┐┌───┐┌─────────────────┐ q_0: ┤ H ├┤ U2(0.1,0.3) ├┤ H ├┤ U3(0.1,0.2,0.3) ├ └───┘└─────────────┘└───┘└─────────────────┘Corrections #3017
Autres remarques
-
Les objets de
qiskit.providers.modelsqui étaient auparavant construits à l'aide de la bibliothèque marshmallow ont été remaniés pour ne plus dépendre de marshmallow. Comprend :BackendConfigurationBackendPropertiesBackendStatusQasmBackendConfigurationPulseBackendConfigurationUchannelLOGateConfigPulseDefaultsCommandJobStatusNduvGate
Ils devraient pouvoir être remplacés sans changement notable, mais les spécificités héritées de marshmallow pourraient ne pas fonctionner. Veuillez déposer un dossier pour toute incompatibilité constatée.
Aer 0.5.1
Aucun changement
Ignis 0.3.0
Aucun changement
Aqua 0.7.0
Prélude
La version de Qiskit Aqua 0.7.0 introduit un grand nombre de nouvelles fonctionnalités ainsi qu'une intégration améliorée avec les qiskit.circuit.QuantumCircuit objets. Les principales contributions sont le module d'optimisation de Qiskit, une refonte complète des opérateurs, l'utilisation de circuits comme entrée native pour les algorithmes et la suppression de l'API JSON déclarative.
Module d'optimisation
Le module qiskit.optimization` offre désormais des fonctionnalités de modélisation et de résolution de programmes quadratiques. Il fournit divers algorithmes quantiques et conventionnels à court terme, tels que MinimumEigenOptimizer (qui couvre par exemple VQE ou QAOA) ou CplexOptimizer, ainsi qu'un ensemble de convertisseurs permettant de passer d'une représentation du problème à une autre, comme QuadraticProgramToQubo. Voir le journal des modifications pour une liste des fonctionnalités ajoutées.
Flux opérateur
La logique des opérateurs fournie dans qiskit.aqua.operators` a été entièrement remaniée et constitue désormais un ensemble complet d'outils permettant de construire des calculs quantiques physiquement intuitifs. Il contient des fonctions d'état, des opérateurs et des mesures et s'appuie en interne sur les objets Operator de Terra. Le calcul des valeurs d'espérance et des évolutions a été fortement simplifié et des objets tels que ExpectationFactory produisent l'algorithme d'espérance approprié et le plus efficace en fonction du type d'entrée de l'opérateur. Voir le journal des modifications pour une vue d'ensemble des fonctionnalités ajoutées.
Circuits natifs
Les algorithmes utilisent généralement des circuits paramétrés comme entrée, par exemple le VQE, le VQC ou le QSVM. Auparavant, ces entrées devaient être de type VariationalForm ou FeatureMap qui enveloppaient l'objet circuit. Les circuits sont désormais pris en charge de manière native par ces algorithmes, ce qui signifie que toute construction individuelle QuantumCircuit peut être transmise à ces algorithmes. En combinaison avec le lancement de la bibliothèque de circuits qui offre une large collection de familles de circuits, il est désormais facile de construire des circuits élaborés en tant qu'entrée d'algorithme.
API JSON déclarative
La possibilité d'exécuter des algorithmes en utilisant des dictionnaires comme paramètres ainsi que l'interface graphique d'Aqua a été supprimée.
IBM 0.7.0 du fournisseur Q
Nouvelles fonctions
- Une nouvelle exception,
qiskit.providers.ibmq.IBMQBackendJobLimitError, est désormais levée si un travail n'a pas pu être soumis parce que la limite des travaux actifs a été atteinte. qiskit.providers.ibmq.job.IBMQJobetqiskit.providers.ibmq.managed.ManagedJobSetont chacun deux nouvelles méthodesupdate_nameetupdate_tags. Ils sont utilisés pour modifier le nom et les étiquettes d'un travail ou d'un ensemble de travaux, respectivement.qiskit.providers.ibmq.IBMQFactory.save_account()etqiskit.providers.ibmq.IBMQFactory.enable_account()acceptent désormais les paramètres facultatifshub,group, etproject, qui permettent de spécifier un fournisseur par défaut à enregistrer sur le disque ou à utiliser, respectivement.
Mise à niveau
- Les méthodes
qiskit.providers.ibmq.job.IBMQJobcreation_dateettime_per_steprenvoient désormais des informations sur la date et l'heure sous la forme d'un objetdatetimeen heure locale au lieu de l'heure UTC. De même, les paramètresstart_datetimeetend_datetime, deqiskit.providers.ibmq.IBMQBackendService.jobs()etqiskit.providers.ibmq.IBMQBackend.jobs()peuvent maintenant être spécifiés en heure locale. - La méthode
qiskit.providers.ibmq.job.QueueInfo.format()utilise désormais un formateur personnalisé dedatetimeen chaîne, et la flèche du paquet n'est plus nécessaire et a été supprimée de la liste des exigences.
Remarques concernant la dépréciation
- Les méthodes
from_dict()etto_dict()deqiskit.providers.ibmq.job.IBMQJobsont obsolètes et seront supprimées dans la prochaine version.
Corrections des erreurs
- Correction d'un problème où
nest_asyncio.apply()peut lever une exception s'il n'y a pas de boucle asyncio à cause du threading.