IBM Quantum Notes de mise à jour du client Compute
0.49.0 (10 août 2026)
Mise à niveau
- Les classes d'options du
options_modelspaquet sont désormais basées sur celles de PydanticBaseModelplutôt que surdataclass. ( 3042 ) - La version par défaut du schéma de l'Executor a été remplacée par « 2.0 ». ( 3043 )
- Le service « Qiskit Runtime » a été renommé « IBM Quantum Compute », et les références à ce service dans la documentation ont été mises à jour. La classe
QiskitRuntimeServiceest désormais disponible sous forme deIBMQuantumComputeService. ( 3070 )
Remarques concernant la dépréciation
- L'utilisation de stdlib
asdictavec les classes d'options issues duoptions_modelspaquet est désormais dépréciée, car il s'agit désormais de modèles Pydantic. Utilisez plutôt directementoptions.model_dump()pour les sérialiser dans un fichierdict. ( 3042 ) - Cette option
post_selectionNoiseLearnerV3est désormais obsolète et sera supprimée dans une prochaine version. ( 3160 )
Nouvelles fonctions
- Ajout d'une instruction
MidCircuitResetet d'un passage de transpileurConvertToMidCircuitResetAndMeasure. Ce nouveau passage étend les fonctionnalitésConvertToMidCircuitMeasureexistantes en remplaçant également les instructionsresetnon terminales par des implémentations de réinitialisation en cours de circuit spécifiques au matériel. ( 2903 ) - Ajout du champ « bit_flip_checks » à la classe « NoiseLearnerV3Options », permettant aux utilisateurs de demander des vérifications de renversement de bits sur les résultats des circuits d'apprentissage du bruit. ( 2907 )
- Ajout d'un paramètre
persistfacultatif àFakeBackendV2.refresh(). Par défaut (persist=True), le comportement reste inchangé : la configuration et les propriétés mises à jour écrasent les fichiers de données fournis avec le paquet installé, ce qui permet de conserver la mise à jour d'une session à l'autre. L'optionpersist=False« passing » enregistre les données mises à jour dans un répertoire temporaire, ce qui permet à l'opération derefresh()réussir même lorsque le paquet est installé dans un emplacement en lecture seule (par exemple, unsite-packagesrépertoire système) où le remplacement des fichiers fournis avec le paquet entraînerait sinon une erreurPermissionError. Dans ce mode, le backend est mis à jour uniquement pour la session en cours et les modifications ne sont pas enregistrées sur le disque. ( 2977 ) IBMBackenddispose désormais d'un attributphysical_qubitsqui renvoie le nombre de qubits physiques du backend (qubits programmables, qubits de réinitialisation et coupleurs confondus). Cet attribut est également disponible pourFakeBackendV2les backends qui ne sont pas obsolètes. ( 3080 )- L' URL IAM utilisé par
QiskitRuntimeService.instances()peut désormais être redéfini via la variable d'environnementIAM_URL, selon la même convention que les variablesGLOBAL_CATALOG_URLGLOBAL_SEARCH_URLet du SDK d' IBM. Cela permet d'acheminer le trafic IAM via un point de terminaison privé (par exemple,https://private.iam.cloud.ibm.com) dans les environnements VPE sans aucune modification du code. ( 3135 )
Corrections des erreurs
- Améliorer le message d'avertissement affiché lorsqu'une tâche récupérée a été sérialisée avec une version de Qiskit plus récente que celle installée localement. Avant d'appeler
qiskit.qpy.load, affiche désormaisRuntimeDecoderun message clair recommandant de procéder à une mise à niveau verspip install -U qiskitlorsque la version du format QPY intégré est plus récente que celle prise en charge par la version installée de Qiskit. ( 2426 ) FakeProviderForBackendV2.backends()renvoie désormais également huit backends fictifs qui pouvaient être importés depuisqiskit_ibm_runtime.fake_providermais qui ne figuraient pas dans la liste des backends du fournisseur, en plus de ceux qu'il renvoyait déjà :FakeAachen,FakeBerlin,FakeBoston,FakeBrussels,FakeKingston,FakeMiami,FakePittsburgh, etFakeStrasbourg. Auparavant, l'appel de (FakeProviderForBackendV2().backend(name="fake_kingston")ainsi que des sept autres) provoquait uneQiskitBackendNotFoundErrormême si les classes de fond existaient. ( 3164 )
0.48.0 (14 juillet 2026)
Mise à niveau
- La version minimale requise de Qiskit est désormais
2.3.0, et celle de Samplomatic est0.18.0. Les utilisateurs deExecutorpeuvent désormais faire tourner leurs circuits grâce au"local_c1"groupe « twirling », pris en charge par Samplomatic à partir de la version0.17.0et au-delà. ( 2925 )
Remarques concernant la dépréciation
-
Toutes les classes représentant des résultats sont désormais disponibles via le
qiskit_ibm_runtime.resultspackage; par conséquent, les classes suivantes ont été déplacées vers le package « results » :PauliLindbladError,LayerError,NoiseLearnerResult(qui faisait auparavant partie deqiskit_ibm_runtime.utils.noise_learner_result)EstimatorPubResult(qui faisait auparavant partie deqiskit_ibm_runtime.utils.estimator_pub_result)
L'importation à partir des emplacements précédents est obsolète, et les références seront supprimées dans une prochaine version. ( 2835 )
-
L'exécution d'une
SamplerV2tâche avec des valeurs différentespub.shotsselon les PUB est déconseillée. De même, l'exécution d'uneEstimatorV2tâche avec des valeurs différentespub.precisionselon les PUB est déconseillée. ( 2992 ) -
La configuration
MeasureNoiseLearningOptions.shots_per_randomizationsur uneintvaleur est obsolète et sera supprimée dans les prochaines versions. Veuillez utiliser"auto"à la place. ( 3004 )
Nouvelles fonctions
-
La
RuntimeJobV2.usage()méthode prend désormais en charge un paramètre facultatifpartial( 2884 ) :FalseSi l'indicateurpartialest activé, la méthode renverra0une valeur en attente jusqu'à ce que le calcul de l'utilisation de la tâche soit terminé.TrueSi l'indicateurpartialest activé, la méthode renverra l'utilisation partielle incrémentielle de la tâche, que le calcul soit terminé ou non.
-
Ajout d'options permettant de demander les horaires des circuits et d'obtenir les résolutions numériques des segments pour chaque circuit lors de l'exécution de tâches Executor. ( 2790 ) ( 2789 )
-
Ajout de la prise en charge de
instance="auto"dansQiskitRuntimeServiceetQiskitRuntimeService.save_account(). L'utilisation depassinginstance="auto"active explicitement la sélection automatique d'instance sans déclencher l'avertissement « instance not set » ni les avertissements « Loading/Using instance » lors de la récupération du backend. La valeur peut être enregistrée dans le fichier de configuration afin qu'elle s'applique à chaque instanciation ultérieure. ( 2854 ) -
Ajout d'un
use_fractional_gatesparamètre àQiskitRuntimeService.least_busy(), dont le comportement correspond à celui du même paramètre dansQiskitRuntimeService.backend().TrueLorsque cette option est activée, seuls les backends dont les portes de base comportent des portes fractionnaires sont pris en compte; les backends qui n'en comportent pas sont ignorés au profit du backend éligible suivant le moins sollicité. ( 2855 ) -
La prise en charge du passage de plusieurs décodeurs de résultats aux fonctions
RuntimeJobV2etRuntimeJobV2.result()a été réintroduite. ( 2899 ) -
Ajout de la prise en charge de
QuantumProgram.meas_level = "both", qui permet de demander que les mesures classées et celles traitées par noyau figurent toutes deux dans les résultats du programme quantique. ( 2973 )
Corrections des erreurs
- Correction d'un bug dans la
FoldRzzAnglepasse de transpilation :Rzzles portes dont l'angle rejoignait exactement la+-pilimite (par exemple3*pi,-3*pi,7*pi) étaient regroupées en un circuit qui différait de l'original d'une phase globale depi. Cette étape déduit désormais la parité d'enroulement perdue2*pidirectement de l'angle d'enroulement, de sorte que le circuit replié préserve l'opérateur unitaire complet (y compris la phase globale) pour tous les angles. ( 2856 ) SamplerV2.run()Lorsqu'on utilise des backends provenant d'instances différentes, le service utilisé par les méthodes deEstimatorV2.run(),, et d'autres primitives.run()garantit désormais que le client API utilisé pour soumettre le travail est bien celui appartenant au backend, au lieu d'utiliser systématiquement le client API actif. ( 2931 )- Correction du repliement des angles hors limites
rzzlors de la transpilation. Avec le paramètre précédent, il y avait un bug : les passes de traduction exécutées après la passe « FoldRzzAngle » pouvaient modifier les angles et les rendre négatifs ou supérieurs àpi/2. Pour corriger ce bogue, il suffit de définirangle_boundsdans la cible du backend sur(0, pi/2)pour larzzporte, et d'enregistrer unrzzwrapper avec le passage duWrapAnglestranscompilateur. Ce mécanisme remplace l'utilisation duIBMDynamicFractionalTranslationPluginplugin et de laFoldRzzAnglephase de transpilation. ( 2960 )
Autres remarques
- La bibliothèque utilise désormais la version
2026-04-15de l'API REST « Qiskit Runtime ». ( 2845 ) - Le plugin
IBMFractionalTranslationPluginde transcompilation obsolète a été supprimé. ( 2880 ) - La version par défaut du schéma pour Executor est désormais
1.1. ( 2911 )
0.47.0 (12 mai 2026)
Nouvelles fonctions
-
Ajout des classes
ExecutoretQuantumProgram, qui permettent de tirer pleinement parti de l'ensemble des fonctionnalités offertes par le package Samplomatic. -
Ajout de la classe
NoiseLearnerV3pour déterminer le niveau de bruit des instructions contenant des encadrés annotés. -
Ajout d'un script permettant de récupérer la configuration et les propriétés d'un backend réel.
-
Un nouveau backend fictif,
FakeKingston, a été ajouté. Il s'agit d'un dispositif d' r2 s Heron de 156 qubits. ( 2711 ) -
global_searchLes interactions avec les services de la plateforme IBM Cloud (qui ont lieu lors deQiskitRuntimeServicel'instanciation, avec les noms de service,global_catalogetresource_controller) respectent désormais les mécanismes de configuration du SDK d' IBM Cloud, ce qui permet de transmettre des paramètres de configuration personnalisés via des variables d'environnement ou des fichiers d'identifiants. ( 2712 ) -
Ajouté
draw_chunk_timings()àqiskit_ibm_runtime.visualizationpour représenter graphiquement la durée d'exécution d'une ou plusieurs instances de la nouvelle classe de conteneur de durées de blocs,ChunkTiming, sur un graphique à barres interactif. Une méthode pratiqueChunkTiming.draw()est également disponible pour le cas d'un seul résultat viajob.result().timing.draw(). ( 2727 ) -
-aEn s'appuyant sur le script de création de clichés de backend fictifs présenté dans le ticket 2711, le script génère__init__.pydésormais également des fichiers etfake_<backend_name>.pypour chaque backend, et ajoute un nouvel argument /--accountpermettant de sélectionner un compte spécifique lors de la récupération des données de backend provenant de différentes régions cloud (par exemple, us-east par opposition à eu-de).Grâce à ce script mis à jour, les faux backends suivants, qui manquaient, ont été ajoutés :
FakeAachen,FakeBerlin,FakeBoston,FakeBrussels,FakeMiami,FakePittsburgh, etFakeStrasbourg. ( 2736 )
Mise à niveau
- Les
RuntimeJobV2.result()méthodes etRuntimeJobV2.wait_for_final_state()acceptent désormais un paramètre facultatifpoll_interval, qui permet de personnaliser l'intervalle entre les requêtes adressées au service. La valeur par défaut est désormais0.5de secondes pour les tâches hors session, et0.1de secondes pour les tâches en session. ( 2762 )
Remarques concernant la dépréciation
-
Le paquet
extras« Python » a été refactorisé :commonetdocumentationsont obsolètes et seront supprimés dansv0.48.performancea été introduit pour les dépendances facultatives non liées au développement qui offrent des performances ou des fonctionnalités supplémentaires.- Les dépendances de développement présentent désormais une granularité plus fine (
style,style_local,test,doc), l'optiondevsupplémentaire permettant toujours d'installer une suite de développement complète. ( 2707 )
Corrections des erreurs
`GlobalSearchV2Lesproxiesarguments etssl_verificationdeQiskitRuntimeServicesont désormais transmis aux requêtes sous-jacentes d' HTTP s adressées aux services,GlobalCatalogV1, etIAMAuthenticator, ce qui permet d'instancierQiskitRuntimeServicecorrectement lors de l'utilisation d'un proxy. ( 2592 )- Ajout de la possibilité de spécifier
calibration_idetuse_fractional_gateslors de l'initialisation d'une session à partir d'unsession_id. Cela corrige des bogues connus, à savoir que l'instanciation d'unSessionobjet viafrom_idne préserve ni la valeur decalibration_iddéfinie lors de l'instanciation initiale de l'objet d'origineSession, ni la valeur deuse_fractional_gatesdéfinie lors de l'instanciation initiale du backend. ( 2652 ) filter``map``NoiseLearner.run()prend désormais correctement en charge les générateurs, les expressions de générateur et les autres itérateurs à passage unique. Auparavant, ceux-ci étaient épuisés après la vérification initiale des types, ce qui entraînait la soumission de tâches ne comportant aucun circuit. ( 2759 )
0.46.1 (23 mars 2026)
Corrections des erreurs
- Correction d'un problème dû auquel
setuptools_scmavait été associé par erreur à~=8.0dans la version précédente. La contrainte de version a été>=6.2rétablie.
0.46.0 (23 mars 2026)
Autres remarques
- La version minimale requise de Qiskit est désormais
2.2.0. ( 2689 )
0.45.1 (12 février 2026)
Corrections des erreurs
- Lors de la création d'objets backend, l'.QiskitRuntimeService vérifiait auparavant uniquement
rzzles portes dans les portes de base du backend pour décider s'il fallait utiliser le cache ou créer un nouvel objet backend. .QiskitRuntimeService vérifiera désormais les portesrxetrzzdans les portes de base du backend afin de décider s'il faut actualiser la configuration ou la récupérer à partir du cache. ( 2524 ) - L'initialisation
QiskitRuntimeServicene échoue plus s'il n'est pas possible de récupérer les informations du catalogue d'une instance (par exemple, parce que l'instance a été archivée). ( 2603 )
0.45.0 (8 janvier 2026)
Nouvelles fonctions
qiskit-ibm-runtimeest désormais compatible avec Qiskit v2.3.- La
delete_job()méthode a été réintroduite. ( 2541 )
Corrections des erreurs
- Correction d'un bug
QiskitRuntimeService.backend()survenant lorsque l'indicateuruse_fractional_gates=Truevérifie la présence de portes etRzz(l'une ou l'autre, ou les deuxRx), alors qu'il ne devrait vérifier queRzzles portes dans la base du backend. ( 2520 )
Autres remarques
- La version minimale requise de Qiskit est désormais
2.0.0, car la série1.xQiskit n'est plus prise en charge. ( 2543 )
0.44.1 (12 février 2026)
Remarques concernant la dépréciation
- La soumission de circuits contenant des données non vides
circuit.calibrationsest déconseillée et sera supprimée dans la versionqiskit-ibm-runtimev0.45. ( 2574 )
Corrections des erreurs
- Lors de la création d'objets backend, l'.QiskitRuntimeService vérifiait auparavant uniquement
rzzles portes dans les portes de base du backend pour décider s'il fallait utiliser le cache ou créer un nouvel objet backend. .QiskitRuntimeService vérifiera désormais les portesrxetrzzdans les portes de base du backend afin de décider s'il faut actualiser la configuration ou la récupérer à partir du cache. ( 2524 ) - L'initialisation
QiskitRuntimeServicene échoue plus s'il n'est pas possible de récupérer les informations du catalogue d'une instance (par exemple, parce que l'instance a été archivée). ( 2603 )
0.44.0 (16 décembre 2025)
Mise à niveau
-
Si un backend ne prenant pas en charge les portes fractionnaires est demandé en activant l'indicateur
use_fractional_gates=TruedansQiskitRuntimeService.backend(),IBMInputValueErrorune exception sera levée. ( 2405 ) -
Le résolveur URL a été mis à jour afin que les canaux
ibm_cloud``ibm_quantum_platformet génèrent désormais le même point d'entrée d'exécution : URL (https://quantum.cloud.ibm.com/api/v[x]). Auparavant, leibm_cloudcanal générait l'adresse URL, qui n'est plus utilisée, et s'appuyait sur des redirections. Cette modification supprime cette dépendance et harmonise la génération d' URL s sur l'ensemble des canaux. Il n'y a aucun changement visible pour l'utilisateur. ( 2486 ) -
Un ordre des canaux sur l'axe des y a désormais été
draw_circuit_schedule_timing()défini pour, conformément à l'ordre des canaux dans l'argumentincluded_channelsd'entrée. ( 2492 ) -
Ajout d'un nouvel argument
merge_common_instructionsde paramètre quidraw_circuit_schedule_timing(), s'il est défini surTrue, fusionnera les instructions du même type en fonction de la continuité temporelle.Exemple ( 2494 ) :
from qiskit_ibm_runtime.visualization import draw_circuit_schedule_timing job_result: SamplerPubResult = job.result() circuit_schedule: str = job_result[0].metadata["compilation"]["scheduler_timing"]["timing"] fig = draw_circuit_schedule_timing( circuit_schedule=circuit_schedule, merge_common_instructions=True ) fig.show()
Nouvelles fonctions
-
Lorsqu'une tâche est soumise, des avertissements s'affichent désormais si l'instance utilisée a atteint sa limite. ( 2458 )
-
Ajout d'un backend « Fake Nighthawk » (
FakeNighthawk) aufake_providermodule.Sa carte de couplage et ses portes de base correspondent à celles d'un backend Nighthawk réel, mais les propriétés ne sont pas destinées à représenter les valeurs d'erreur typiques de Nighthawk. Vous pouvez utiliser ce faux backend pour, par exemple, transcompiler et optimiser vos circuits en prévision des prochains backends Nighthawk. Pour un circuit Ising à réseau carré de 100 qubits avec 10 étapes Trotter,
FakeNighthawka montré une amélioration de 600 % de la profondeur du circuit par rapport à un backend Heron. ( 2476 ) -
Le
qiskit_ibm_runtime.transpiler.passesmodule a été enrichi d'un nouveau passage de transcompilation :ConvertMidCircMeas. Cette étape détecte les instructions non terminalesMeasuredans un circuit et les convertit en instructions de mesure en cours d'exécution prises en charge par la cible. Le passage est constitué de deux arguments :-
target(obligatoire) : la cible du backend définissant les instructions prises en charge. -
mcm_name(facultatif) : le nom de l'instruction de mesure à mi-parcours à utiliser.Prend par défaut la valeur
measure_2. Le nom doit respecter le modèlemeasure_[X](par exemple,measure_3,measure_reset).
Lors de l'initialisation, le test vérifie que la cible spécifiée prend en charge l'instruction de mesure en cours de circuit sur au moins un qubit. Sinon, la construction échoue. Une fois exécutée, la fonction effectue les opérations suivantes :
- Il circule sur un circuit déjà tracé.
- Elle remplace uniquement les
Measure`instructions non terminales par l'instruction de mesure en cours de circuit spécifiée, à condition que la cible la prenne en charge sur le qubit physique correspondant.
Il ne fait pas ce qui suit :
- Cela ne remplace pas les mesures effectuées au niveau des bornes.
- Cela ne remplace pas les instructions existantes relatives aux mesures en cours de circuit (par exemple,
measure_2àmeasure_3). - Il ne convertit pas les mesures en milieu de circuit en mesures aux bornes.
Exemple d'utilisation ( 2317 ) :
from qiskit import QuantumCircuit from qiskit.transpiler import PassManager from qiskit.providers.fake_provider import GenericBackendV2 from qiskit_ibm_runtime.circuit import MidCircuitMeasure from qiskit_ibm_runtime.transpiler.passes import ConvertToMidCircuitMeasure from qiskit.transpiler.target import Target # Fake target construction for demo purposes mcm = MidCircuitMeasure() target = GenericBackendV2(num_qubits=2, seed=0).target target.add_instruction(mcm, {(i,): None for i in range(2)}) # Example usage qc = QuantumCircuit(2, 2) qc.measure(0, 0) qc.cx(0,1) qc.measure(1, 1) my_pass = ConvertToMidCircuitMeasure(target) pm = PassManager([my_pass]) new_qc = pm.run(qc) print(new_qc)Sortie attendue :
┌────────────┐ q_0: ┤0 ├──■───── │ │┌─┴─┐┌─┐ q_1: ┤ Measure_2 ├┤ X ├┤M├ │ │└───┘└╥┘ c_0: ╡0 ╞══════╬═ └────────────┘ ║ c_1: ════════════════════╩═ -
Corrections des erreurs
- Correction d'un bug d'authentification IAM lors de l'utilisation d'une configuration proxy spécifiée dans
QiskitRuntimeService. Le correctif injecte lesproxiesattributsverifyet deQiskitRuntimeServicedansIAMTokenManagerlorsqu'il utilise l'authentification cloud (CloudAuth). ( 2344 )
Autres remarques
- Les méthodes
delete_job()obsolètescheck_pending_jobs()et, ainsi que la prise en charge de Python 3.9, ont été supprimées. ( 2439 ) - Ajouté
CircuitSchedulecomme entrée facultative àdraw_circuit_schedule_timing(). Cela permet un prétraitement manuel des données de synchronisation du circuit en dehors de sa fonction de dessin. ( 2457 )
0.43.1 (23 octobre 2025)
Mise à niveau
- Lors de l'initialisation
QiskitRuntimeServiceà partir d'un compte enregistré, lewarningniveau des messages de journalisation concernant le nom du compte enregistré (ou le compte par défaut) a été abaissé auinfoniveau. ( 2445 )
0.43 (14 octobre 2025)
Remarques concernant la dépréciation
-
Ajout d'un nouvel
targetargument à l'initialiseur après les passes d'analyse et de remplissage du transcompilateur :ALAPScheduleAnalysis,PadDelay,PadDynamicalDecoupling,BlockBasePadder. Cette modification aligne ces passes sur l'architecture globale du transcompilateur Qiskit et remplace l'utilisation de l'argumentdurations.La
DynamicCircuitInstructionDurationsclasse, utilisée dans les cycles de planification personnalisés, est obsolète depuis la versionqiskit-ibm-runtimev0.43. Cette classe a été optimisée pour la planification des opérations sur les processeurs Eagle, mais elle n'est plus adaptée à la gamme actuelle de processeurs Heron. Cette classe a été utilisée pour définir l'argument`durationsdans les cycles de planification mentionnés ci-dessus (ALAPScheduleAnalysis,PadDelay,PadDynamicalDecoupling,BlockBasePadder). Cet argument est également obsolète et sera supprimé dans une prochaine version. Les utilisateurs sont invités à migrer vers l'argumenttarget. ( 2403 ) -
La classe
RuntimeOptionsest obsolète. Cette classe était à l'origine destinée à être utilisée avec des programmes personnalisés et n'est plus nécessaire. (2435 )
Nouvelles fonctions
-
Le
qiskit_ibm_runtimepaquet a été enrichi de deux nouveaux modules :circuitetcircuit.library. Ces modules sont conçus pour refléter la structure des modules SDK correspondantsqiskit, tout en fournissant des implémentations spécifiques à chaque fournisseur pour les objets de circuit et les instructions.Le premier ajout à cette nouvelle bibliothèque de circuits est la classe
MidCircuitMeasure. Cette classe permet de créer des instructions qui suivent la convention d'appellationmeasure_<identifier>, qui sont mappées à des instructions matérielles spécifiques de mesure en milieu de circuit correspondant à ce modèle. Le nom par défaut de cette instruction est"measure_2".Exemple d'utilisation :
from qiskit import QuantumCircuit from qiskit_ibm_runtime.circuit import MidCircuitMeasure measure_2 = MidCircuitMeasure() measure_3 = MidCircuitMeasure("measure_3") qc = QuantumCircuit(1, 1) qc.append(measure_2, [0], [0]) qc.append(measure_3, [0], [0]) qc.measure([0], [0])Sortie :
┌────────────┐┌────────────┐┌─┐ q: ┤0 ├┤0 ├┤M├ │ Measure_2 ││ Measure_3 │└╥┘ c: ╡0 ╞╡0 ╞═╩═ └────────────┘└────────────┘L'utilitaire
convert_to_target()a été mis à jour pour prendre en charge un champ"instruction_signatures"supplémentaire dans les fichiers de configuration du backend (configuration.json). Ce champ est destiné à représenter les instructions non unitaires et non standard signalées par le backend et doit respecter le schéma suivant :"instruction_signatures" = [ { "name": "measure_2", "num_qubits": 1, "num_clbits": 1, "parameters": [], "return_type": "Bool", "description": "An alternative measurement. This can be used as a mid-circuit measurement in a dynamic circuit. ", }, { "name": "reset_2", "num_qubits": 1, "num_clbits": 1, "parameters": [], "return_type": "Bool", "description": "An alternative reset instruction.", } ]En plus de ce changement, la fonction
convert_to_target()accepte désormais un argumentcustom_name_mappinget expose les drapeauxadd_delayetfilter_faultyde l'implémentation originale du noyau. (2316 ) -
QiskitRuntimeService.backends()etQiskitRuntimeService.backend()disposent d'un nouveau paramètre,calibration_id. Cet étalonnage personnalisé servira à la construction de la cible et sera également utilisé lors de l'exécution de tâches primitives sur le backend. ( 2432 ) -
Ajout d'une nouvelle fonction
visualization.draw_circuit_schedule_timing()pour tracer les données temporelles de planification des circuits renvoyées dans les métadonnées des résultats des travaux. Il s'agit actuellement d'une fonction bêta qui nécessite que l'option expérimentale"scheduler_timing"soit réglée surTrue, comme indiqué ci-dessous. Pour l'instant, cette fonction n'est disponible que pour les emplois de typeSampler.sampler = SamplerV2(backend) sampler.options.experimental = { "execution": { "scheduler_timing": True, }, }Les données relatives à l'ordonnancement du circuit peuvent ensuite être consultées à partir des métadonnées de résultat du travail, comme suit :
job_result: SamplerPubResult = job.result() circuit_schedule = job_result[0].metadata["compilation"]["scheduler_timing"] circuit_schedule_timing = circuit_schedule["timing"]Cette fonction utilise la nouvelle classe
CircuitSchedulepour charger, analyser, prétraiter et tracer les données en vue d'un traçage à l'aide d'une interface prise en charge par Plotly. (2328 ) -
Les points d'extrémité privés virtuels pour IBM Quantum Platform sont désormais pris en charge. Pour en savoir plus, consultez notre guide sur les points d'accès privés virtuels. (2367 )
-
Il est désormais possible de récupérer les balises d'une tâche sans avoir à la récupérer via
QiskitRuntimeService.job(). ( 2420 ) -
La passe
ConvertISAToCliffordprend désormais en charge la cliffordization des circuits contenant des portes fractionnaires. (2427 )
0.42.0 (15 septembre 2025)
Corrections des erreurs
- Le comportement de
QiskitRuntimeService.least_busy()la méthode était incohérent, car elle s'attendait à recevoir une réponse fixe de la part de l'API pour le champ « reason », qui est indiqué comme facultatif dans le schéma de l'API. Ce problème a été résolu en supprimant la dépendance à ce champ. ( 2411 )
Mise à niveau
-
Lorsque
QiskitRuntimeServiceest initialisé sans instance et qu'aucune instance de compte n'est enregistrée, un avertissement s'affiche désormais pour détailler les filtres actuels (tags,region, etplans_preference) et les instances disponibles. Siplans_preferencecette option n'est pas activée, les instances des formules gratuites et d'essai sont prioritaires par rapport aux instances payantes.Des avertissements supplémentaires ont également été ajoutés pour rendre plus claire l'instance active actuelle :
- Messages d'avertissement indiquant aux utilisateurs s'ils utilisent un compte sauvegardé ou des informations d'identification spécifiées manuellement.
- Lorsque Qiskit Runtime sélectionne automatiquement une instance pour le backend demandé, un avertissement s'affiche avec le nom de l'instance et le type de plan.
Vous pouvez désormais procéder à l'initialisation
QiskitRuntimeServiceà l'aide d'un simple jeton API (clé). Étant donné que leibm_quantumnom du canal a été supprimé et que lesibm_cloudcanaux etibm_quantum_platformpointent tous deux vers la même API, lechannelparamètre n'est plus nécessaire.ibm_quantum_platformC'est la chaîne par défaut. ( 2375 ) -
La prise en charge des résultats en continu ayant été supprimée dans
0.32.0, l'option d'environnement obsolète (0.38.0)callback, ainsi que les paramètresBaseRuntimeJob,client_paramsetuser_callback, ont été supprimés.La classe
RuntimeJoba également été supprimée. Toutes les primitives renvoient les travaux sous la formeRuntimeJobV2. Les indications de type dans la base de données ont été mises à jour pour refléter ce changement. (2298 ) -
RuntimeJobV2.properties()va désormais récupérer les propriétés du backend à partir du moment où la tâche a commencé à s'exécuter, et non plus à partir du moment où elle a été créée. ( 2369 ) -
Correction d'une incohérence dans la conversion d'unité de
rep_timesdansQasmBackendConfigurationafin d'assurer la cohérence entre l'initialisation et la sérialisation. Le paramètre est désormais correctement converti de microsecondes en secondes lors de l'initialisation, puis reconverti en microsecondes lors de la sérialisation viato_dict(), ce qui correspond au comportement des autres paramètres de temporisation :rep_delay_rangeetdefault_rep_delay. ( 2386 ) -
Une erreur systématique sera désormais générée lors de l'initialisation du service si un jeton API non valide est fourni à
QiskitRuntimeService.Une erreur sera également soulevée si le compte associé au jeton spécifié n'a pas accès à l'instance donnée. C'était le comportement précédemment documenté dans les notes de mise à jour de
0.40.0. (2408 )
Nouvelles fonctions
-
Étant donné que les backends permettent désormais d'exécuter des travaux contenant à la fois des portes fractionnaires et des circuits dynamiques, les instructions de flux de contrôle ne sont plus filtrées lors de l'utilisation de
use_fractional_gates=True. En conséquence, il existe un nouveau plugin d'état de traduction,IBMDynamicFractionalTranslationPlugin, pour cibler les circuits dynamiques et les portes fractionnaires.IBMFractionalTranslationPluginest obsolète car il n'est plus nécessaire. (2366 )
0.41.1 (18 août 2025)
Corrections des erreurs
-
Correction de plusieurs bogues qui provoquaient une erreur
IBMInputValueErrorlors de la création d'unSession/ lorsque l'instance par défaut était enregistrée ou que le nom de l'instance était transmis /BatchDe plus,
QiskitRuntimeService.least_busy()la fonction renvoie désormais correctement le backend le moins sollicité lorsque leinstanceparamètre est fourni et qu'il n'existe pas d'instance par défaut. ( 2359 )
0.41.0 (24 juillet 2025)
Prélude
La version de qiskit-ibm-runtime v0.41.0 se concentre sur la suppression de IBM Quantum Platform Classic et sur l'amélioration de l'expérience utilisateur pour la nouvelle IBM Quantum Platform. Parmi les nouvelles fonctionnalités, les améliorations et les corrections de bogues mineurs, les points forts de la version sont les suivants :
- Le canal
ibm_quantumet IQP Classic ne sont plus pris en charge.QiskitRuntimeService.least_busy()est nettement plus rapide.QiskitRuntimeService.usage()a été mise à jour pour afficher des informations concernant la limite d'utilisation actuelle de l'instance, sa consommation et le temps restant.
Mise à niveau
- En raison de l'arrêt de IBM Quantum Platform Classic, le canal
ibm_quantumn'est plus pris en charge parqiskit-ibm-runtime. Les comptes et données sauvegardés sur le canalibm_quantumne seront pas accessibles. Utilisez plutôt le canalibm_quantum_platform. Voir notre guide de migration pour plus de détails. (2289 )
Nouvelles fonctions
-
Un nouveau paramètre,
tags, a été ajouté à l'initialiseurQiskitRuntimeServiceetQiskitRuntimeService.save_account()à la méthode.tagspeut être utilisé pour filtrer les instances afin que seules celles portant les balises indiquées soient renvoyées.En outre, si aucune instance valide n'est renvoyée lors de l'utilisation des filtres
tags,region, ouplans_preference, une erreur sera désormais soulevée lors de l'initialisation. Assurez-vous que les noms detagsetregiontransmis correspondent exactement à l'instancetagsouregion(insensible à la casse). Pourplans_preference, tant qu'un nom de plan correspondant est transmis, les instances avec le nom de plan correspondant seront prioritaires. (2277 ) -
Avec la migration vers la nouvelle plate-forme IBM Quantum, il y avait quelques incohérences avec IBM Quantum Platform Classic qui devaient être corrigées :
QiskitRuntimeService.usage()renvoie désormais des informations d'utilisation concernant l'instance active actuelle d' IBM Cloud.QiskitRuntimeService.delete_job()n'est pas pris en charge sur la nouvelle plateforme; il a donc été déprécié.RuntimeJobV2.instance()renverra désormais le CRN de l'instance IBM Cloud.RuntimeJob.queue_usage()n'est pas pris en charge sur la nouvelle plateforme, il est donc obsolète. (2296 )
-
La prise en charge de l'exécution de
qiskit-ibm-runtimeavec Python 3.9 est obsolète et sera supprimée dans une prochaine version.De plus,
qiskit-ibm-runtimesupporte désormais officiellement Python 3.13. (2314 ) -
Lors de l'enregistrement d'un compte, un contrôle de validation est désormais effectué pour s'assurer que les paramètres
region,plans_preferenceettagssont valides. (2319 ) -
Il existe une nouvelle méthode qui
QiskitRuntimeService.active_instance()renvoie l' IBM Cloud CRN de l'instance actuellement active.La
QiskitRuntimeService.jobs()méthode a été mise à jour afin de prendre correctement en charge leinstanceparamètre, qui permet de filtrer les tâches. ( 2325 ) -
QiskitRuntimeService.usage()a été mis à jour pour inclure unusage_remaining_secondschamp. Ce champ indique la différence entre la valeur déclaréeusage_limit_secondsouusage_allocation_seconds(selon la configuration de l'instance) etusage_consumed_seconds. Pour en savoir plus sur les limites d'allocation des instances, cliquez ici. ( 2329 ) -
refresh()dispose d'un nouveau paramètre,use_fractional_gates, qui peut être défini àTruepour permettre au faux backend d'inclure des portes fractionnaires. Notez que cette méthode ne fonctionne que si vous avez accès au véritable backend. (2342 ) -
Le
QiskitRuntimeServicea été mis à jour pour utiliser une nouvelle version de l'API. Avec cette nouvelle version, laQiskitRuntimeService.least_busy()méthode a été mise à jour pour tirer parti de la miseBackendsResponseV2à jour, ce qui la rend nettement plus rapide. ( 2323 ) -
La classe
TwirledSliceSpandispose d'un nouveau membredata_slice_versionde données de type entier, dont la valeur par défaut est 1. Lorsque cette valeur est définie sur 2, les tuples de tranches de données contiennent des informations sur les prises de vue de l' PUB, utilisées pourTwirledSliceSpan.mask()structurer le tableau renvoyé. Le dernier axe sera tronqué, de sorte que sa longueur sera réduite àpub_shots. ( 2312 ) -
Ajout de la sérialisation pour
qiskit.quantum_info.PauliLindbladMap. (2297 ) -
Il existe une nouvelle méthode
convert_to_rzz_valid_pub(), qui peut être utilisée pour transformer un PUB en un PUB équivalent compatible avec les contraintes Rzz. Actuellement, la méthode ne prend pas en charge les circuits dynamiques et ne préserve pas la phase globale. (2126 )
Corrections des erreurs
- Correction d'un bug dans
BasePrimitiveoù les primitives instanciées à l'intérieur d'unSessiongestionnaire de contexte ouBatchsans lemodeparamètre récupéraient le backend depuis le service (par son nom) au lieu d'utiliser le backend transmis à ouSessionBatch. Cela pourrait poser des problèmes lorsque leSessionbackend ouBatcha été modifié par les utilisateurs (par exemple, en supprimant une porte), car les primitives récupéreraient alors l'objet backend non modifié auprès du service. Une fois la correction effectuée, l'objetSessionbackend ouBatchest utilisé directement. ( 2282 ) - Correction d'un problème dans
IBMBackendlequel les modifications apportées aux propriétés, telles que celles concernantbasis_gates, persistaient même après le rafraîchissement de l'objet backend. ( 2283 ) - Correction de la sérialisation des intervalles d'exécution, afin de garantir que les exécutions des anciennes versions de qiskit-ibm-runtime ne plantent pas lorsqu'elles tentent de décoder des intervalles d'exécution récemment encodés. Cependant, la désérialisation avec les anciennes versions renverra désormais les intervalles d'exécution sous la forme d'un dictionnaire, et non plus sous la forme d'un
ExecutionSpansobjet. Dans le cadre de ce travail, nous avons également supprimé ledata_slice_versionchamp deTwirledSliceSpan; les tranches « twirled » qui prennent en compte les « pub shots » sont désormais gérées par une nouvelle classeTwirledSliceSpanV2. ( 2347 )
Autres remarques
None``max_experimentsLes attributs obsolètesIBMBackendetmax_shotsont été supprimés, et laIBMBackend.max_circuits()méthode renvoie désormais. Pour plus de détails, consultez le guide sur les limites des tâches. ( 2235 )- Les méthodes
defaults()etFakeBackendV2, désormais obsolètesIBMBackend, ont été supprimées. Elles ont été dépréciées dans la version « v0.38.0 ». Les valeurs par défaut de Pulse ont également été supprimées de tous les faux backends. ( 2238 ) - Amélioration du message d'erreur renvoyé lorsque
ExecutionSpan.mask()la méthode est appelée pour unPUBqui n'est pas contenu dans lespan. ( 2311 )
0.40.1 (4 juin 2025)
Corrections des erreurs
- Correction d'un problème : si aucune instance n'était enregistrée ni transmise lors de l'initialisation, le service ne pouvait effectuer aucun appel API tant
QiskitRuntimeService.backend()que la méthode ouQiskitRuntimeService.backends()n'était pas appelée en premier. - Correction d'un bogue où si
use_fractional_gatesest défini mais que la configuration du backend a déjà été mise en cache, la configuration incorrecte peut être renvoyée. (2269 )
Autres remarques
- Les messages d'erreur relatifs aux angles de la porte
rzzse situant en dehors de la plage autorisée de 0 à lors de la validation du circuit ont été mis à jour pour préciser que la valeur de l'angle demandée dans le circuit était le problème et non une valeur d'angle fournie par le backend. (2276 )
0.40.0 (28 mai 2025)
Nouvelles fonctions
-
Les changements suivants ont été apportés pour soutenir la prochaine migration de la plateforme IBM Quantum :
-
Un nouveau type de canal,
ibm_quantum_platform, a été introduit pour l'initialisation des services (QiskitRuntimeService()). Il rejoint les canaux existantsibm_quantum(désormais obsolète) etibm_cloud. Par défaut,ibm_quantum_platformest sélectionné lorsqu'aucun canal n'est spécifié. Ce nouveau canal se connecte à la nouvelle API IBM Quantum Platform et est destiné à remplaceribm_cloud. Entre-temps, le canalibm_cloudsera redirigé vers la nouvelle API, mais il est déconseillé de continuer à l'utiliser. -
La
instancevaleur n 'est plus nécessaire pour enregistrer (QiskitRuntimeService.save_account()) ou initialiser (QiskitRuntimeService()) un compte sur la nouvelle plateforme (ibm_quantum_platform, et, à titre temporaire,ibm_cloudles canaux). Si aucune instance n'est fournie, toutes les instances seront vérifiées lors de la récupération d'un backend, (service.backend("backend_name")). Si une instance est fournie àQiskitRuntimeService.save_account(), ou lors de l'initialisation, elle sera utilisée comme instance par défaut lors de la récupération des backends. L'instance transmise lors de l'initialisation prévaudra sur celle enregistrée dans le compte. -
Notez que le jeton API « IBM Cloud » (
token) est obligatoire pour enregistrer (QiskitRuntimeService.save_account()) ou initialiser (QiskitRuntimeService()) un compte sur la nouvelle plateforme. Il sert d'identifiant de compte et permet d'accéder aux ressources associées au compte dans lequel le jeton a été créé. Vous trouverez ici la liste des jetons par compte. Un seul compte peut être utilisé par jeton API. Si vous souhaitez utiliser plusieurs comptes, vous devez créer plusieurs jetons API. -
Les
QiskitRuntimeService.backend()méthodes etQiskitRuntimeService.backends()ont été mises à jour pour accepter uninstancepassé explicitement lors de la récupération des backends :service.backend(name="...", instance="..."). -
De nouveaux paramètres,
region, etplans_preference, ont été ajoutés à l'initialiseur etQiskitRuntimeService.save_account()à laQiskitRuntimeServiceméthode. Ils permettent de donner la priorité à certaines instances sur la nouvelle plateforme (etibm_quantum_platform, à titre temporaire,ibm_cloudaux chaînes) sans avoir à indiquer explicitement l' CRN. Plus précisément :region: Définit une préférence de région.us-eastoueu-de.plans_preference: Il s'agit d'une liste de types de comptes, classés par ordre de préférence. Une instance du premier type de la liste sera prioritaire.
Par exemple, si
regionest enregistré sousus-east, seules les instances deus-eastseront vérifiées. Si l'optionplans_preferenceest activée, les instances seront classées par ordre de priorité, c'est-à-dire que['Open', 'Premium']classera par ordre de priorité toutes les instances du plan ouvert, puis toutes les instances du plan premium, et enfin les autres. Notez que les noms des plans dansplans_preferencedoivent correspondre exactement aux noms de l'API (insensible à la casse). -
Le
instanceparamètre d'entrée deQiskitRuntimeServicea été étendu afin d'accepter de nouveaux types d'entrée pour lesibm_quantum_platformcanaux etibm_cloud. Outre le nom de ressource « IBM Cloud » ( CRN ), le nom de l'instance peut désormais être transmis en tant que valeur de l'instance. -
La
instances()méthode a été étendue afin d'afficher toutes les instances disponibles associées à un compte pour lesibm_quantum_platformcanaux etibm_cloud, en plus du canal déjà activéibm_quantum.Les extraits de code suivants montrent les nouveaux modèles d'utilisation rendus possibles par les changements décrits ci-dessus (2239 ) :
# save account service = QiskitRuntimeService.save_account( # No channel needs to be specified, ibm_quantum_platform is the default token=token, region="eu-de", # Optional plans_preference=['Open',...], #Optional set_as_default=True #Optional ) # initialize account service = QiskitRuntimeService() # defaults to ibm_quantum_platform account service.backend(name="...") # picks instance based on saved preferences service.backend(name="...", instance="...") # can also explicity pass in an instance to use # initialize account with instance service = QiskitRuntimeService(instance = "...") # sets instance as default instance service.backend(name="...") # only checks default instance, fails if the backend not in the instance service.backend(name="...", instance="...") # can still explicity pass in a different instance # OR # save account with instance service = QiskitRuntimeService.save_account( # No channel needs to be specified, ibm_quantum_platform is the default token=token, instance="..." # This will be the default instance region="us-east", # Optional plans_preference=['Open',...], #Optional set_as_default=True #Optional ) # initialize account service = QiskitRuntimeService() # defaults to ibm_quantum_platform account service.backend(name="...") # only checks saved default instance from save_account service.backend(name="...", instance="...") # can also explicity pass in an instance which takes precendence # initializing account with instance works the same way service = QiskitRuntimeService(instance = "...") # sets instance as default instance, overrides instance from save_account service.backend(name="...") # only checks default instance, fails if the backend not in the instance service.backend(name="...", instance="...") # can still explicity pass in a different instance
-
-
L'option
privatesousEnvironmentOptionsest maintenant supportée sur les canauxibm_cloudetibm_quantum_platform(nouvelle plateforme Quantum IBM ). Lorsque cette option est définie surTrue, le travail est renvoyé sans paramètres et les résultats ne peuvent être récupérés qu'une seule fois.Il existe également une nouvelle propriété
private()qui indique si un travail est privé ou non. (2263 )
Corrections des erreurs
- L'appel à
defaults()danstarget()a été supprimé car les valeurs par défaut du backend ne sont plus utilisées dans la génération de la cible. (2261 )
0.39.0 (13 mai 2025)
Nouvelles fonctions
- La version maximale supportée par le service QPY est maintenant 14. (2231 )
- Les données saisies dans les « Pub »
EstimatorV2sont désormais soumises à une nouvelle étape de validation qui vérifie que les observables sont constituées d'opérations de Pauli ne contenant que des « {I, X, Y, Z} ». ( 2254 )
Corrections des erreurs
- Un nouveau paramètre
create_newa été ajouté aux classesBatchetSession. Ce paramètre permet aux utilisateurs de déterminer si le point de terminaison API de session POST doit être appelé lors de l'initialisation de la classe. La valeur par défaut estTrue, car c'est le cas pour la plupart des workflows destinés aux utilisateurs. Cependant, des méthodes telles queSession.from_id()permettent de le configurer de manièreFalseà éviter la création d'une nouvelle session lorsque la session d'origine est encore active. Cela a permis de résoudre les problèmes liés à la création simultanée de plusieurs sessions lors de l'appel de.from_id(). ( 2195 ) - Suppression de l'indication de type erronée
Optionalpour lebackendparamètre dansSessionetBatch. ( 2222 ) Session.from_id()génère désormais une erreur si la session ne dispose pas d'un backend connu. C'est généralement le cas si aucune tâche n'a encore été exécutée au cours de la session. ( 2226 )
Autres remarques
- IBM Cloud utiliseront désormais un jeton d'accès pour appeler l'API Qiskit Runtime au lieu du jeton fourni par l'utilisateur. (2102 )
IBMInputValueErrorhérite désormais deValueError, en plus de la classe mère existanteIBMError. Certaines fonctions de validation qui soulevaient auparavant des exceptions de typeValueErrorsoulèvent désormais des exceptions de typeIBMInputValueError. (2250 )
0.38.0 (15 avril 2025)
Remarques concernant la dépréciation
RuntimeJobest désormais obsolète et sera supprimé au plus tôt trois mois après la publication de cette version.RuntimeJoba été remplacé parRuntimeJobV2dans toutes les implémentations primitives; cette dépréciation ne devrait donc avoir aucune incidence pour les utilisateurs. La principale différence entre ces deux classes réside dans le fait questatus()la première renvoie une chaîne de caractères au lieu de l'énumération deJobStatusQiskit. ( 2170 )- Les portes d'impulsion n'étant plus prises en charge, les
IBMBackendméthodesdefaults()etFakeBackendV2sont désormais obsolètes et seront supprimées au plus tôt trois mois après la publication de cette version. Bien que la méthode existe toujours, ces valeurs par défaut pour les impulsions ne sont plus utilisées pour construire la cible du backend. ( 2186 ) - L'option de canal
ibm_quantumest obsolète et sera supprimée le 1er juillet. Après cette date,ibm_cloud,ibm_quantum_platform, etlocalseront les seuls canaux valables. Pour vous aider à migrer vers le nouveau site IBM Quantum Platform sur le canalibm_cloud, lisez le guide de migration. (2205 )
Nouvelles fonctions
- Les attributs de la configuration des faux backends peuvent maintenant être récupérés directement avec
backend.<attribute_name>. (2202 )
Corrections des erreurs
- Correction d'un bogue pour lequel
DoubleSliceSpan.mask()etTwirledSliceSpan.mask()sont erronés lorsqu'ils contiennent une tranche unidimensionnelle. (2184 )
Mise à niveau
- La prise en charge des résultats en continu ayant été supprimée à l'adresse
0.32.0, le code websocket correspondant a été supprimé. Dans le cadre de ce processus, l'option d'environnementcallbackest obsolète, de même que les paramètresclient_paramsetuser_callbackdansBaseRuntimeJob. (2143 )
0.37.0 (13 mars 2025)
Remarques concernant la dépréciation
- Les attributs
IBMBackend,max_shotsetmax_experiments, ainsi que la propriétémax_circuitsont tous été supprimés. Ces valeurs d'attributs représentaient auparavant le nombre maximal de prises de vue et de circuits pouvant être soumis dans le cadre d'un travail, mais ce n'est plus le cas aujourd'hui. Pour plus de détails, voir le guide des limites d'emploi. (2166 )
Nouvelles fonctions
-
qiskit-ibm-runtimeest désormais compatible avec Qiskit 2.0. Cela signifie que les classes et les méthodes supprimées dans Qiskit 2.0 ont également été supprimées ou traitées en conséquence. Les changements liés aux sitespulseetchannelsont mis en évidence ci-dessous :ChanneldansIBMBackendont été supprimées.- La classe de configuration du backend
PulseBackendConfigurationa été supprimée, de sorte que tous les backends seront désormais renvoyés sous la formeQasmBackendConfiguration. PulseDefaults(backend defaults) peuvent toujours être récupérés, mais ils ne sont plus nécessaires lors de la création d'un backendTarget.
Voir le guide de migration Pulse pour plus de détails. (2116 )
-
Ajout d'un avertissement lorsqu'une primitive est initialisée en dehors d'une session ou d'un gestionnaire de contexte de lot. Dans ce cas, le travail sera exécuté en mode travail au lieu de la session ou du lot. (2152 )
Corrections des erreurs
- Correction de la prise en charge de l'ordonnancement personnalisé des étapes du transpondeur avec Qiskit 2.x. (2153 )
- ConvertConditionsToIfOps fonctionne désormais correctement à tous les niveaux d'optimisation des plugins d'ordonnancement pour les circuits dynamiques, lors de l'utilisation de Qiskit 1.x. (2154 )
- Lors de la récupération des tâches à l'aide de
jobs(), il n'est pas possible de faire la distinction entre les primitives de type « v1 » et « v2 ». Les primitives « v1 » ayant été entièrement supprimées il y a plus de six mois dans0.28.0, les tâches renvoyées parjobs()utiliseront désormais par défautRuntimeJobV2. ( 2156 )
0.36.1 (14 février 2025)
Corrections des erreurs
- Correction d'un problème où le fait de ne pas avoir installé
qiskit-aerprovoquait une erreur d'importation. (2144 )
0.36.0 (14 février 2025)
Mise à niveau
-
La version minimale requise de
qiskitest désormais 1.3. Qiskit 1.3 présente la version 13 de QPY. La version minimale requise de Qiskit a été augmentée afin que Qiskit Runtime puisse utiliser la dernière version de QPY pour sérialiser les circuits dans les soumissions de travaux. (2096 ) -
Les dépréciations obsolètes suivantes ont été supprimées :
- La prise en charge de l'option de simulateur
noise_modelsur les simulateurs de nuages a été supprimée. Cette option fonctionnera toujours en mode de test local. - Les propriétés
NoiseLearnerResult,generatorsetratesont été supprimées. Ils sont toujours accessibles dans la propriétéerror. - La fonction d'utilité
get_runtime_api_base_url()a été supprimée. (2124 )
- La prise en charge de l'option de simulateur
0.35.0 (4 février 2025)
Mise à niveau
- Python 3.8 a atteint sa fin de vie le 7 octobre 2024. Qiskit SDK a abandonné la prise en charge de 3.8 dans
qiskit 1.3. Dans le même ordre d'idées,qiskit-ibm-runtimene soutient plus Python 3.8. (2097 ) - La prise en charge de
backend.run()a été supprimée. Consultez le guide de migration pour savoir comment migrer tout code existant qui utilisebackend.run()vers la nouvelle interface de primitives V2. (1962 ) - Les expressions de paramètres avec des portes RZZ seront vérifiées par rapport aux valeurs qui leur sont attribuées dans le site PUB. Un message
IBMInputValueErrorsera émis si les valeurs de paramètres spécifiées dans PUB font que l'expression d'un paramètre évalue un angle non valide (négatif ou supérieur àpi/2). (2093 ) - En cas de panne de maintenance, un message d'erreur approprié sera émis lors de l'initialisation du site
QiskitRuntimeService. (2100 )
Nouvelles fonctions
- Les travaux exécutés en mode de test local renverront désormais une instance d'une nouvelle classe,
LocalRuntimeJob. Cette nouvelle classe hérite de la classePrimitiveJobde Qiskit tout en y ajoutant les méthodes et propriétés trouvées dansBaseRuntimeJob. De cette manière, l'exécution des tâches en mode de test local sera plus proche de l'exécution des tâches sur un backend réel. (2057 ) - Deux nouveaux faux backends,
FakeFezetFakeMarrakesh, ont été ajoutés. Il s'agit de dispositifs Heron à 156 qubits. (2112 )
0.34.0 (05/12/2024)
Nouvelles fonctions
-
Ajout des fonctions
draw_zne_evsetdraw_zne_extrapolatorspour visualiser les données des expériences utilisant ZNE. Ajout deEstimatorPubResultavec les méthodesdraw_zne_evsetdraw_zne_extrapolators, invoquant les fonctions de visualisation correspondantes. (1820 ) -
Ajout de la prise en charge du modèle de bruit et des données de niveau 1 pour l'échantillonneur local
L'option
SamplerV2simulator.noise_modelest désormais transmise àBackendSamplerV2en tant qu'option noise_model sous run_options si la primitive prend en charge l'option run_options (cette prise en charge a été ajoutée dans Qiskit v1.3 ).SamplerV2De même, l'optionexecution.meas_typeest désormais convertie enmeas_leveloptions etmeas_returnsousrun_optionsduBackendSamplerV2si celui-ci prend en chargerun_options. Cette modification permet désormais la prise en charge des données de niveau 1 en mode de test local, alors qu'auparavant seules les données de niveau 2 (classifiées) étaient prises en charge. ( 1990 ) -
Une nouvelle fonction
validate_rzz_pubsa été ajoutée. La fonction vérifie que les paramètresrzzsont compris entre0etpi/2, pour les paramètres numériques (par exemple,rzz(np.pi/4, 0)), et pour les paramètres non bornés (rzz(theta, 0)) avec des valeurs à substituer fournies dans le pub. Les expressions de paramètres (par exemple,rzz(theta + phi, 0)) ne sont toujours pas validées. (2021 ) -
FoldRzzAngleAjout d'un nouveau pluginIBMFractionalTranslationPluginde traduction pour le transpiler et d'une passe. Ce plugin est automatiquement appliqué aux backends récupérés via l'opt-inuse_fractional_gates, et la passe de repliement est ajoutée lorsque la cible du backend inclut laRZZporte.La nouvelle passe modifie le circuit quantique d'entrée, de sorte que toutes les portes
RZZdu circuit ont un paramètre d'angle compris entre [0, pi/2], ce qui est pris en charge par les processeurs quantiques IBM. (2043 )
Mise à niveau
-
Les dépréciations de la version
0.26.0ont été supprimées.- Le passage d'un backend sous forme de chaîne dans
Session,Batch,Sampler, etEstimatorn'est plus valide. Utilisez plutôt l'objet backend actuel. - Auparavant, le fait de passer un backend comme mode dans
SamplerV2ouEstimatorV2exécutait les tâches en mode travail, même si un gestionnaire de contexte de session était ouvert. Ces tâches seront désormais exécutées dans le cadre de la session ouverte. En outre, si un backend différent du backend de la session est transmis comme mode, une erreur sera soulevée. Servicen'est plus un paramètre valide dansSessionetBatch. (2027 )
- Le passage d'un backend sous forme de chaîne dans
Corrections des erreurs
- Correction d'un problème où
FakeBackendV2.refresh()ne rafraîchissait pas toujours les propriétés, les valeurs par défaut et la configuration du backend. (2020 ) CouplingMapa été ajouté àRuntimeEncoderafin de pouvoir désormais être transmis auNoiseLearnerprogramme. ( 2026 )- Le comportement de
use_fractional_gatesl'argument deQiskitRuntimeService.backend()a été modifié.FalseLorsque cette option est activée, elle filtre désormais toutes les références aux portes fractionnaires des données de configuration et de propriétés fournies par l'API.TrueDe même, lorsque cette option est activée, toutes les instructions de circuit dynamique sont filtrées des données de configuration et de propriétés. Auparavant, cette option n'avait d'incidence que sur la création de la cible du backend, ce qui signifiait que les instructions contenues dans la cible n'étaient pas cohérentes avec celles figurant dans les données de configuration et de propriétés. Dans l'ensemble, ce changement devrait passer inaperçu pour les utilisateurs, mais si du code s'appuie sur les données de configuration et de propriétés contenant toutes les instructions, il devra être mis à jour (notez que définiruse_fractional_gatessurNonepermettra de charger toutes les instructions sans filtrage). ( 2031 ) - Les configurations de backend invalides ou inexistantes sur le serveur n'empêcheront plus la récupération de tous les backends à l'aide de
service.backends(). (2048 ) - Épingler la version de la dépendance
pydanticà<2.10pour éviter qu'une régression n'interrompe le processus de construction. (2049 )
Autres remarques
-
Les fichiers
requirements.txtetsetup.pyont été supprimés en faveur d'une nouvelle approche de gestion des dépendances utilisantpyproject. Cette transition simplifie le processus de développement. Les dépendances sont désormais gérées directement par le fichier pyproject.toml.- Utilisez
pip install -e .pour installer les dépendances de qiskit-ibm-runtime. - Utilisez
pip install -e ".[dev]"pour installer les dépendances de développement. - Utilisez
pip install -e ".[visualization]"pour installer les dépendances de visualisation. (2053 )
- Utilisez
0.33.2 (11 novembre 2024)
Corrections des erreurs
- Correction d'un problème où la validation RZZ ne gérait pas correctement les expressions de paramètres. (2035 )
0.33.1 (08/11/2024)
Autres remarques
- Ajout d'un alias privé à
decode_backend_configuration(). (2028 )
0.33.0 (7 novembre 2024)
Nouvelles fonctions
- Ajout
draw_layer_errors_swarm()d'une fonction qui trace un graphique en nuage représentant un ou plusieursLayerErrorobjets. Nous avons également ajouté une méthodedraw_swarm()pratique permettant d'appeler la fonction de dessin sur une instance donnée. ( 1988 ) - Ajout
TwirledSliceSpand'unExecutionSpanà utiliser lorsque la fonction « twirling » est activée dans le Sampler. Il garde notamment en mémoire un axe de forme supplémentaire correspondant aux randomisations de rotation, et indique également si cet axe se trouve au début du tuple de forme ou juste avant l'axe des plans. ( 2011 )
Mise à niveau
- Les faux backends V1 restants -
FakeMelbourne,FakePoughkeepsie,FakeTenerife,FakeTokyo, etFakeRueschlikonont été supprimés. (2012 )
Corrections des erreurs
- Correction de l'emplacement du texte en survol de la fonction
draw_execution_spans(). Avant cette correction, ils étaient dessinés sur les mauvais marqueurs. (2014 )
0.32.0 (30 octobre 2024)
Nouvelles fonctions
-
Ajout
draw_execution_spans()d'une fonction permettant de créer une figure Plotly qui visualise un ou plusieursExecutionSpansobjets. Nous avons également ajouté une méthodedraw()pratique permettant d'appeler la fonction de dessin sur une instance donnée. ( 1923 )from qiskit_ibm_runtime.visualization import draw_execution_spans # use the drawing function on spans from sampler job data spans1 = sampler_job1.result().metadata["execution"]["execution_spans"] spans2 = sampler_job2.result().metadata["execution"]["execution_spans"] draw_execution_spans(spans1, spans2) # convenience to plot just spans1 spans1.draw() -
Ajout d'une nouvelle méthode,
backend.refresh(), qui actualise la cible backend actuelle avec les dernières mises à jour du serveur. (1955 ) -
Ajout
DoubleSliceSpand'une optionExecutionSpanpermettant le traitement par lots avec deux tranches. ( 1982 ) -
Chacune des
SamplerV2classes,EstimatorV2, etnoise_learner.NoiseLearnerdispose désormais d'unebackend()méthode qui renvoie le backend avec lequel la classe est configurée. ( 1995 )
Mise à niveau
-
Les dépréciations de la version
0.25.0ont été supprimées.optimization_leveln'est plus une option valable pourEstimatorV2.- Les méthodes de travail
interim_results()etstream_results()ont été supprimées. (1965 )
-
Le paramètre
channel_strategydansQiskitRuntimeServicea été supprimé. Pour continuer à utiliser Q-CTRL dans votre flux de travail, veuillez explorer les options suivantes :- Si votre organisation dispose déjà d'une instance IBM Quantum Premium Plan : migrez vers la fonction Q-CTRL Performance Management, qui se trouve dans le catalogue de fonctions Qiskit.
- Pour continuer à utiliser Qiskit Runtime avec IBM Cloud : migrez vers Q-CTRL Fire Opal, le même produit de gestion des performances accessible directement via Q-CTRL. Vous pouvez connecter votre clé API IBM Cloud et votre CRN Qiskit Runtime à Fire Opal. ( 1966 )
0.31.0 (15 octobre 2024)
Nouvelles fonctions
- Ajout de l'outil NEAT (Noisy Estimator Analyzer Tool), une classe permettant de comprendre les performances attendues des travaux d'estimation. (1950 )
- Mise à jour de la vérification ISA pour valider que l'angle
rzzest compris entre[0, pi/2]. (1953 )
Mise à niveau
- Les faux backends V1 ont été supprimés. (1946 )
Corrections des erreurs
- Correction d'un problème avec la validation ISA où un changement lié à la connectivité dans les opérations de contrôle n'était pas appliqué correctement. (1954 )
0.30.0 (23 septembre 2024)
Remarques concernant la dépréciation
-
La fonction utilitaire
get_runtime_api_base_urlest obsolète. Utilisez plutôtdefault_runtime_url_resolver. (1914 ) -
Le paramètre
channel_strategyest obsolète. La stratégie de gestion des performances Q-CTRL sera supprimée le 18 octobre 2024. Pour continuer à utiliser Q-CTRL dans votre flux de travail, veuillez explorer les options suivantes :- Si votre organisation dispose déjà d'une instance IBM Quantum Premium Plan : migrez vers la fonction Q-CTRL Performance Management, qui se trouve dans le catalogue de fonctions Qiskit.
- Pour continuer à utiliser Qiskit Runtime avec IBM Cloud : migrez vers Q-CTRL Fire Opal, le même produit de gestion des performances accessible directement via Q-CTRL. Vous pouvez connecter votre clé API IBM Cloud et votre CRN Qiskit Runtime à Fire Opal. ( 1931 )
-
Dans une prochaine version,
RuntimeJob.status()sera renvoyé sous forme de chaîne de caractères au lieu d'une instance deJobStatus. (1933)
Nouvelles fonctions
-
Ajout de nouvelles méthodes
Session.usage(),Batch.usage(), etJob.usage()qui renvoient toutes des informations sur l'utilisation des tâches et des sessions. Pour plus d'informations , cliquez ici. (1827 ) -
Ajout de la transpilation
ConvertISAToCliffordpour convertir les portes d'un circuit en portes de Clifford. (1887 ) -
Ajout
url_resolverd'un paramètre facultatif auQiskitRuntimeServiceconstructeur pour permettre la génération personnalisée de l'API Qiskit Runtime URL en fonction des valeurs fourniesurlpour,instanceetprivate_endpoint. Si aucune option n'est spécifiée, le résolveur par défaut sera utilisé.# Define a custom resolver. In this case returns the concatenation of the provided `url` and the `instance` def custom_url_resolver(url, instance, *args, **kwargs): return f"{url}/{instance}" service = QiskitRuntimeService(channel="ibm_quantum", instance="ibm-q/open/main", url="https://baseurl.org" url_resolver=custom_url_resolver) # resulting resolved url will be: `https://baseurl.org/ibm-q/open/main` -
Ajout de la fonction utilitaire
default_runtime_url_resolver. (1914 ) -
Le drapeau
use_fractional_gatespourQiskitRuntimeService.backend()etQiskitRuntimeService.backends()peut maintenant êtreNone. Lorsqu'il est fixé àNone, aucun filtrage des instructions n'est effectué et la cible de retour peut contenir à la fois des portes fractionnaires et des opérations de flux de contrôle. (1938 )
Mise à niveau
-
Les dépréciations de la version
0.24.0ont été supprimées. Les modifications suivantes ont été apportées.- Les arguments backend et session pour Sampler et Estimator ont été supprimés et remplacés par "mode"
- La propriété primitive
Sessiona été remplacée parmode - La spécification d'options sans la structure complète du dictionnaire n'est plus prise en charge
Job.program_id()a été remplacé parJob.primitive_id()Service.run()etSession.run()ont été remplacées par une méthode privée,_run()- Dans
Service.backend(), "name" est désormais un paramètre obligatoire Service.get_backend()a été supprimée et remplacée parbackend()(1907 )
Corrections des erreurs
- Correction d'un bogue où les primitives ne pouvaient pas être exécutées dans le contexte de session avec des portes fractionnaires. (1922)
0.29.1 (17 septembre 2024)
Nouvelles fonctions
- Ajout d'une logique pour encoder et décoder
NoiseLearnerResult. (1908 )
0.29.0 (4 septembre 2024)
Remarques concernant la dépréciation
- L'option simulateur
noise_modelest désormais obsolète pour les travaux exécutés sur des appareils réels.noise_modelreste une option acceptable lorsque l'on utilise le mode de test local. (1892 )
Nouvelles fonctions
- Nous avons ajouté de nouvelles classes,
ExecutionSpanetExecutionSpanSet. Ces classes sont utilisées dans les métadonnées de résultats primitifs pour fournir des informations sur les heures de début et de fin des tâches par lots. ( 1833 ) - Ajout d'une nouvelle option
privatesousEnvironmentOptions. (1888 ) - Ajout de l'option
fallbackaux extrapolateurs ZNE. (1902 )
Corrections des erreurs
- Portage de la méthode
Noise_model.from_dict()à partir deqiskit-aercar elle a été supprimée dans0.15.0. (1890 ) - Revenir sur une modification précédente de
backend.targetoù la cible n'était plus mise en cache. (1891 ) - Correction d'un problème où
Session.from_id()créait une nouvelle session vide. (1896 )
0.28.0 (15 août 2024)
Nouvelles fonctions
ResilienceOptionsV2a un nouveau champlayer_noise_model. Lorsque ce champ est activé, toutes les stratégies d'atténuation qui nécessitent des données sur le bruit sautent l'étape d'apprentissage du bruit et recueillent les informations nécessaires surlayer_noise_model. (1858 )
Mise à niveau
- Les primitives « V1 » et
SamplerV1EstimatorV1ont été entièrement supprimées. Consultez l' introduction aux primitives pour découvrir comment utiliser les primitives « V2 ». ( 1857 ) - Le paramètre
serviceest désormais requis dansSession.from_id(). (1868 )
0.27.1 (12 août 2024)
Nouvelles fonctions
- Ajout d'une logique pour encoder et décoder
PauliLindbladErroretLayerError. (1853 )
0.27.0 (08/08/2024)
Nouvelles fonctions
- Ajout des classes
PauliLindbladErroretLayerErrorpour représenter les processus de bruit des couches. (1844 )
Corrections des erreurs
- Correction d'un problème lié à l'utilisation du simulateur aer et du mode service local avec les sessions. (1838 )
0.26.0 (31 juillet 2024)
Remarques concernant la dépréciation
- Le passage d'un backend sous forme de chaîne dans
Session,Batch,EstimatorV2, etSamplerV2a été déprécié. Utilisez plutôt l'objet backend actuel. (1804 ) - Le fait de passer un backend comme mode dans
SamplerV2etEstimatorV2exécute actuellement un travail en mode travail même s'il se trouve à l'intérieur d'un gestionnaire de contexteSessionouBatch. Ce comportement est obsolète et, dans une prochaine version, la session/le lot aura la priorité. (1816 ) - L'introduction de
servicedansSession,Batcha été supprimée. Le paramètreservicen'est plus nécessaire car le service peut être extrait du backend. (1826 ) - Comme les modules backend de
qiskit.providers.models, y comprisBackendPropertiesetBackendConfiguration, sont obsolètes dans Qiskit 1.2, ils ont été copiés dansqiskit-ibm-runtime. Veillez à mettre à jour la dernière version,0.26.0, pour utiliser ces classes. (1803 )
Nouvelles fonctions
-
Les méthodes
properties,defaults,configuration, etcheck_faultyont été ajoutées àFakeBackendV2. (1765 ) -
Si des travaux sont exécutés dans une session créée avec
QiskitRuntimeService.Session.from_id()alors que la session est déjà fermée, les travaux sont immédiatement rejetés. (1780 ) -
Les paramètres d'entrée des travaux ne seront plus mis en cache. Ces paramètres peuvent inclure des circuits importants et ne doivent pas être automatiquement gardés en mémoire. (1783 )
-
QiskitRuntimeLocalServicea été créé pour soutenir un mode de test local. Pour éviter d'avoir à initialiser une classe distincte, "local" a été ajouté en tant que canal valideQiskitRuntimeService.service = QiskitRuntimeService(channel="local")renvoie une instance de
QiskitRuntimeLocalService. (1793 ) -
Lors de l'exécution de travaux sur le plan ouvert, un avertissement s'affiche désormais si la limite du nombre maximal de travaux en attente a été atteinte. Le service tentera également d'attendre que les tâches en attente les plus anciennes soient terminées avant de soumettre une nouvelle tâche. (1794 )
-
Ajout de
NoiseLearneret des fonctionnalités connexes, telles queNoiseLearnerOptionsetNoiseLearnerResults. (1805 )
Corrections des erreurs
- Chaque circuit est vérifié pour être conforme à la norme ISA. Dans le cadre de cette vérification, une erreur est soulevée si des instructions non prises en charge par le backend sont détectées. Auparavant, un bogue provoquait le saut de certaines instructions (celles qui se trouvent à l'intérieur de corps d'opérations de flux de contrôle). Nous avons corrigé le problème dans cette version. (1784 )
- Correction d'un problème où l'appel à
IBMBackend.target_history()mettait en cache la cible du backend et où l'appel àIBMBackend.target()renvoyait de manière incorrecte cette cible mise en cache. (1791 ) - La validation des options permettant de vérifier si
zne_mitigationoupec_mitigationsont définis surTruelors de l'utilisation d'autres options connexes a été supprimée. (1792 ) - Correction d'un problème où les utilisateurs ne pouvaient pas récupérer les résultats des travaux si la bibliothèque python
simplejsonétait installée dans leur environnement. (1800 )
0.25.0 (02/07/2024)
Remarques concernant la dépréciation
- L'option
optimization_leveldansEstimatorV2est obsolète. Au lieu de cela, vous pouvez effectuer l'optimisation du circuit en utilisant le transpondeur Qiskit ou le service de transpondeur Qiskit. (1748 ) qiskit_ibm_runtime.RuntimeJobV2.interim_results(),qiskit_ibm_runtime.RuntimeJobV2.stream_results(),qiskit_ibm_runtime.RuntimeJob.interim_results(), etqiskit_ibm_runtime.RuntimeJob.stream_results()sont désormais tous obsolètes. (1776 )
Nouvelles fonctions
- Ajout des méthodes
backend,backends, etleast_busyàQiskitRuntimeLocalService. (1764 ) - Ajout d'une propriété
instanceàBaseRuntimeJobqui renvoie l'instance où le travail a été exécuté. (1771 ) default_shotssont désormais une option prise en charge lors de l'utilisation deEstimatorV2en mode de test local. (1773 )
0.24.1 (18 juin 2024)
Corrections des erreurs
- Interdiction des portes fractionnaires par défaut, afin que la cible du backend n'exclue pas le flux de contrôle. (1755 )
0.24.0 (10 juin 2024)
Remarques concernant la dépréciation
-
namesera désormais un paramètre obligatoire dans la fonction backend().backend()ne renverra plus le premier backend parmi tous les backends sinamen'est pas fourni. (1147 ) -
Après la suppression des programmes personnalisés, les méthodes suivantes sont obsolètes et renommées.
qiskit_ibm_runtime.QiskitRuntimeService.run()est obsolète et sera remplacée par une méthode privéeqiskit_ibm_runtime.QiskitRuntimeService._run().qiskit_ibm_runtime.Session.run()est obsolète et sera remplacée par une méthode privéeqiskit_ibm_runtime.Session._run().qiskit_ibm_runtime.RuntimeJob.program_id()est obsolète et sera remplacé parqiskit_ibm_runtime.RuntimeJob.primitive_id(). (1238 ) -
backendL'argument de Sampler et Estimator est désormais obsolète. Veuillez utilisermodeà la place.sessionL'argument de Sampler et Estimator est également obsolète. Veuillez utilisermodeà la place. ( 1556 ) -
qiskit_ibm_runtime.QiskitRuntimeService.get_backend()est obsolète. Veuillezqiskit_ibm_runtime.QiskitRuntimeService.backend()utiliser ceci à la place.FakeBackendLes backends fictifs « V1 », ainsi que,FakeProvidersont également en voie d'être abandonnés au profit des backends fictifs « V2 » etFakeProviderForBackendV2. ( 1689 ) -
La spécification d'options sans la structure complète du dictionnaire est obsolète. Au lieu de cela, transmettez un dictionnaire entièrement structuré. Par exemple, utilisez
{'environment': {'log_level': 'INFO'}}au lieu de{'log_level': 'INFO'}. (1731 )
Nouvelles fonctions
-
En ce qui concerne les modes d'exécution, l'échantillonneur et l'estimateur comprennent désormais un argument
mode. Le paramètremodepeut être un backend, une session, un lot ou aucun. En conséquence, le nom du backend a été déprécié et ne sera plus considéré comme un mode d'exécution valide. (1556 ) -
L'option ZneOptions.amplifier a été ajoutée, qui peut être l'une de ces chaînes :
"gate_folding"(par défaut) utilise le pliage de portes à 2 qubits pour amplifier le bruit. Si le facteur de bruit exige l'amplification d'un sous-ensemble de portes seulement, ces portes sont choisies au hasard."gate_folding_front"utilise le pliage de portes à 2 qubits pour amplifier le bruit. Si le facteur de bruit exige l'amplification d'un sous-ensemble de portes seulement, ces portes sont sélectionnées à l'avant du circuit DAG topologiquement ordonné."gate_folding_back"utilise le pliage de portes à 2 qubits pour amplifier le bruit. Si le facteur de bruit exige l'amplification d'un sous-ensemble de portes seulement, ces portes sont sélectionnées à l'arrière du circuit DAG topologiquement ordonné. (1679 )
-
Lors de l'enregistrement d'un compte, il existe un nouveau paramètre,
private_endpoint, qui, s'il est défini surTrue, permet aux utilisateurs de se connecter à une API privée IBM Cloud. Ce paramètre peut également être utilisé lors de l'initialisation du service, par exemple :QiskitRuntimeService(private_endpoint = True). (1699 ) -
Une nouvelle fonctionnalité d'activation optionnelle permettant de prendre en charge les portes fractionnaires a été ajoutée à
IBMBackend. IBM Les backends prennent actuellement en charge exclusivement les circuits dynamiques et les portes fractionnaires; ces deux fonctionnalités ne peuvent pas être utilisées dans un même travail primitif. Par ailleurs, certains protocoles d'atténuation des erreurs pouvant être utilisés avec la primitive d'estimation, tels que PEC ou PEA, peuvent ne pas prendre en charge la rotation des portes avec les portes fractionnaires. Étant donné que le modèle cible de Qiskit ne prend pas en compte cette contrainte, nous avons adopté l'approche « opt-in », selon laquelle votre cible backend n'inclut que des portes fractionnaires (instructions de flux de contrôle) lorsque le backend est (ou n'est pas) activé. Cette fonctionnalité est gérée lorsque vous récupérez le backend cible à partir du fichierQiskitRuntimeService.from qiskit_ibm_runtime import QiskitRuntimeService backend = QiskitRuntimeService(channel="ibm_quantum").backends( "name_of_your_backend", use_fractional_gates=True, )[0]Lorsque la fonction fractionnaire est activée, les circuits transpilés peuvent avoir une profondeur plus courte que les portes de base conventionnelles IBM, par exemple [sx, rz, ecr].
Lorsque vous utilisez des instructions de flux de contrôle, par exemple
if_else, dans votre circuit, vous devez désactiver la fonction de porte fractionnaire pour obtenir des circuits ISA exécutables. Le choix du jeu d'instructions relève désormais de la responsabilité des utilisateurs.Notez que ce modèle peut être modifié ou supprimé sans dépréciation lorsque les backends de IBM seront mis à jour dans le cadre d'un développement futur. (1715 )
-
Vous pouvez désormais utiliser l'option expérimentale dans
qiskit_ibm_runtime.options.EstimatorOptionspour activer la méthode d'atténuation des erreurs dite « Probabilistic Error Amplification » (PEA) pour vos tâches d'estimation. ( 1728 ) -
La version
1.1de Qiskit est maintenant supportée et requise. (1700 )
Mise à niveau
QiskitRuntimeService.backends()La fonction « now » renvoie désormais toujours une nouvelleIBMBackendinstance, même lorsque la même requête est utilisée. Les propriétés du backend et les données par défaut sont récupérées depuis le serveur pour chaque instance lors de leur premier accès, tandis que les données de configuration sont mises en cache en interne dans l'instance du service. ( 1732 )
Corrections des erreurs
- Correction d'un problème où la récupération des travaux avec job() et jobs() ne renvoyait que des instances
RuntimeJob, même si le travail avait été exécuté avec une primitive V2. Désormais, les travaux primitifs V2 seront renvoyés correctement en tant qu'instancesRuntimeJobV2. (1471 ) - Afin d'éviter les perturbations du réseau pendant les longs processus de travail, les erreurs websocket ne seront plus soulevées. (1518 )
- Correction de la combinaison des
insert_multiple_cyclesoptions etcoupling_mapdansPadDynamicalDecoupling. Cette combinaison permet de choisir un découplage dynamique échelonné comportant plusieurs cycles de séquence dans chaque délai qui franchit le seuil défini parsequence_min_length_ratios. ( 1630 ) - Correction d'un problème de sérialisation qui provoquait une erreur lors du décodage des métadonnées d'un travail. (1682 )
- Correction de la docstring sur la rotation des mesures qui indiquait à tort qu'elle était activée par défaut pour l'échantillonneur. (1722 )
- Correction des sous-options expérimentales imbriquées qui remplacent les sous-options non expérimentales. (1731 )
- La méthode du backend utils
convert_to_targeta été remplacée par la méthode convert_to_target de Qiskit. Cette modification corrige certains problèmes liés à la génération de cibles et aux données d'étalonnage. (1600 )
0.23.0 (15 avril 2024)
Remarques concernant la dépréciation
- backend.run () a été supprimée. Veuillez utiliser les primitives à la place. Vous trouverez plus de détails dans le guide de migration. (1561 )
- Dans une prochaine version, le paramètre
servicede la fonction from_id() sera nécessaire. (1311 )
Nouvelles fonctions
- Les impressions
OptionsetOptionsV2seront désormais formatées sous forme de tableau. (1490 ) - Ajouter
block_ordering_callablel'argument àBlockBasePadder,PadDynamicalDecoupling,PadDelay, etBaseDynamicCircuitAnalysis. Cela permet à l'utilisateur de créer des blocs à l'aide de l'algorithme de son choix. Aucune hypothèse ni aucun contrôle ne sont effectués concernant la validité des résultats générés par leblock_ordering_callableprogramme. Cet argument s'explique par le fait que, pour certaines familles de circuits, la fonctionblock_order_op_nodesexistante peut s'avérer très lente. ( 1531 ) - Les primitives Sampler et Estimator V2 ont été améliorées pour intégrer des procédures de validation personnalisées lorsque la propriété channel_strategy est définie comme "q-ctrl" Cette logique de validation personnalisée rectifie efficacement les options d'entrée incorrectes et protège les utilisateurs contre la désactivation involontaire des améliorations de performance de Q-CTRL. (1550 )
SamplerV2prend désormais en charge les pirouettes. La fonction « Twirling » ne s'appliquera qu'aux registres de mesure qui ne sont pas impliqués dans une logique conditionnelle. ( 1557 )- Session details() inclut désormais un nouveau champ,
usage_time. L'utilisation est définie comme le temps pendant lequel un système quantique est engagé pour effectuer un travail. (1567 )
Corrections des erreurs
RuntimeJobV2ne générera plus d'erreur lorsque l'API renvoie un statut inconnu. Au lieu de cela, le statut fourni par l'API sera directement renvoyé. ( 1476 )- Correction d'un bug où les en-têtes personnalisés n'étaient pas envoyés dans la requête
/jobs. (1508 ) - Correction d'un bug avec l'encodage/décodage de
ParameterExpression. (1521 ) - Correction d'un problème qui empêchait la méthode in_final_state() de mettre à jour le statut lorsqu'elle
RuntimeJobV2était appelée. ( 1547 )
0.22.0 (21 mars 2024)
Mise à niveau
- Modifier
skip_reset_qubitsl'indicateur facultatif du constructeur pourPadDynamicalDecoupling.FalseDans ce cas, le découplage dynamique est appliqué aux qubits quel que soit leur état, même aux retards situés au début d'un circuit. Cette option correspond désormais au comportement de Qiskit. ( 1409 )
Nouvelles fonctions
- Un nouveau mode de test local est ajouté. Il vous permet de valider vos programmes quantiques avant de les envoyer à un système physique. Le mode de test local est activé si l'un des faux backends de
qiskit_ibm_runtime.fake_providerou une instance de backend Qiskit Aer est utilisée lors de l'instanciation d'une primitive ou d'une session. (1495 )
Corrections des erreurs
- Correction d'un bogue qui faisait que la valeur de
resilience_level=0dansEstimatorV2était ignorée (et que la valeur par défaut était utilisée à la place). (1541 )
0.21.2 (18 mars 2024)
Corrections des erreurs
- Correction d'un bogue qui permettait à
RuntimeDecoderd'importer des classes arbitraires. (1527 )
0.21.1
Corrections des erreurs
- Correction d'un problème où
SamplerV1etEstimatorV1ne pouvaient pas être importés à cause d'un problème dans la définition des alias.
0.21.0
Mise à niveau
- Les circuits qui ne correspondent pas à la définition matérielle cible ne sont plus pris en charge par les primitives d' Qiskit Runtime, sauf si
channel_strategy="q-ctrl"est utilisé. Consultez la documentation sur la transpilation ( transpile ) pour obtenir des instructions sur la transformation des circuits, ainsi que les exemples de primitives ( run/primitives-examples ) pour voir comment cela s'applique aux transformations d'opérateurs.
Remarques concernant la dépréciation
-
Dans une prochaine version,
backendsera un paramètre obligatoire pourqiskit_ibm_runtime.Sampleretqiskit_ibm_runtime.Estimatorsisessionn'est pas spécifié, même en cas d'utilisation du canalibm_cloud.Il s'agira également d'un paramètre obligatoire pour
qiskit_ibm_runtime.Sessionetqiskit_ibm_runtime.Batch.
Corrections des erreurs
- Correction d'un problème avec
IBMBackend.targetqui excluait incorrectement les opérations de flux de contrôle prises en charge (IfElseOp,WhileLoop, etc.) si un backend donné les prend en charge. - Correction d'un bogue où la récupération d'un faux backend via
FakeProviderForBackendV2.backend()entraînait une erreur de type. - Corrige la vérification des circuits ISA pour autoriser les portes à impulsion et les circuits qui n'ont pas d'agencement.
0.20.0
Nouvelles fonctions
-
Ajouter l'entrée optionnelle
dd_barrierau constructeur PadDynamicalDecoupling pour identifier les parties du circuit sur lesquelles appliquer le découplage dynamique (dd) de manière sélective. Si cette chaîne est contenue dans l'étiquette d'une barrière du circuit, dd est appliqué sur les retards se terminant par elle (sur les mêmes qubits); sinon, il n'est pas appliqué. -
Python 3.12 est désormais pris en charge.
-
Les sessions seront désormais lancées avec un nouveau point de terminaison
/sessionsqui permet différents modes d'exécution. Le mode Batch est désormais pris en charge parBatch, et le mode Session fonctionnera de la même manière qu'auparavant. Pour plus d'informations, veuillez consulter la rubrique run/sessions.Notez que
SessionetBatchcréés à partir deqiskit-ibm-runtimeavant cette version ne seront plus pris en charge après le 31 mars 2024. Veuillez mettre à jour votre version deqiskit-ibm-runtimedès que possible avant cette date.Notez également que l'utilisation de simulateurs avec des sessions n'est plus prise en charge. Les utilisateurs peuvent toujours démarrer des sessions avec des simulateurs sans problème, mais aucune session ne sera créée. Il n'y aura pas d'identifiant de session.
-
Les sessions démarrées avec qiskit_ibm_runtime.IBMBackend.open_session () utiliseront le nouveau point d'arrivée
/sessions.La fonctionnalité des sessions ne changera pas, mais notez que les sessions
backend.run()antérieures à cette version ne seront plus prises en charge après le 31 mars 2024. Veuillez mettre à jour votre version deqiskit-ibm-runtimedès que possible avant cette date.
Remarques concernant la dépréciation
- Les circuits qui ne correspondent pas à la définition matérielle cible ne seront plus pris en charge après le 1er mars 2024. Consultez la documentation sur la transpilation ( transpile ) pour obtenir des instructions sur la transformation des circuits, ainsi que les exemples de primitives ( run/primitives-examples ) pour voir comment cela s'applique aux transformations d'opérateurs.
Corrections des erreurs
- Assignation fixe des durées d'instruction lors de l'ordonnancement de circuits avec flux de contrôle. Avant cette correction, les indices des instructions sur les blocs intérieurs n'étaient pas mis en correspondance avec les indices physiques dans le bloc extérieur.
Autres remarques
- L'entrée des durées de
InstructionDurationsest désormais également requise pour le constructeur dePadDelay.
0.19.1
Mise à niveau
- Étendre
DynamicCircuitInstructions.from_backend()pour extraire et patcher les durées des objetsBackendV1etBackendV2. Ajoutez égalementDynamicCircuitInstructions.from_target()pour utiliser un objetTargetà la place.
Corrections des erreurs
- Corriger le correctif de
DynamicCircuitInstructionspour les instructions dont la durée n'est pas exprimée en unités dedt. - Correction d'un problème avec la fonction
qpy.dump(), lorsque l'indicateuruse_symengineétait défini sur un objet véridique évalué àTruemais qui n'était pas en réalité le booléenTrue, la charge utile QPY générée était corrompue.
0.19.0
Mise à niveau
- qiskit-ibm-provider est en cours de dépréciation, et ne sera donc plus une dépendance pour qiskit-ibm-runtime.
- qiskit-ibm-runtime est maintenant compatible avec les versions de Qiskit >= 0.45, y compris 1.0.0.
0.18.0
Nouvelles fonctions
- Ajout d'un nouveau paramètre, dynamic_circuits à backends() pour permettre le filtrage des backends qui supportent les circuits dynamiques.
- Ajout du paramètre
max_timeàIBMBackend.open_session(). - Ajout d'une méthode
RuntimeJob.queue_info()pour obtenir les informations sur la file d'attente depuis le backend. Cette fonction a été transférée deqiskit_ibm_provider.
Remarques concernant la dépréciation
QiskitRuntimeService.runtime()a été supprimée.
Corrections des erreurs
- De nombreuses méthodes dans RuntimeJob nécessitent de récupérer les données de l'emploi à partir de l'API à l'aide de
job_get(). Cet appel à l'API exclura désormais le champparamspar défaut, car il n'est nécessaire que dans qiskit_ibm_runtime.RuntimeJob.inputs().
0.17.0
Nouvelles fonctions
- Ajout d'une nouvelle méthode properties() qui renvoie les propriétés du backend du job au moment où celui-ci a été exécuté.
- details() comporte un nouveau champ, activated_at, qui indique l'heure à laquelle la session est devenue active.
Corrections des erreurs
-
Lorsqu'un seul backend est récupéré avec le paramètre
instance,service.backend('ibm_torino', instance='ibm-q/open/main') # raises error if torino is not in ibm-q/open/main but in a different instance # the user has access to service = QiskitRuntimeService(channel="ibm_quantum", instance="ibm-q/open/main") service.backend('ibm_torino') # raises the same errorsi le backend ne se trouve pas dans l'instance mais dans une autre instance à laquelle l'utilisateur a accès, une erreur sera soulevée. La même erreur sera désormais soulevée si une instance est passée lors de l'initialisation et qu'un backend ne faisant pas partie de cette instance est ensuite récupéré.
-
Correction d'un problème où la récupération de la carte de couplage de certains backends entraînait une erreur NameError.
0.16.0
Prélude
Les sessions sont désormais à l'abri des threads et permettent de réaliser plusieurs expériences interactives simultanées.
Nouvelles fonctions
- Les sessions sont désormais sûres pour les threads.
Mise à niveau
- Les méthodes liées à l'utilisation de programmes personnalisés sont supprimées.
Corrections des erreurs
- Si une instance cloud compatible avec
q-ctrlest utilisée alors queq-ctrln'est pas transmis en tant quechannel_strategy, une erreur sera soulevée.
0.15.1
Corrections des erreurs
- Revenir sur 0.15.0 les modifications apportées à from_id() parce qu'il s'agissait d'une modification de rupture sans dépréciation appropriée.
0.15.0
Nouvelles fonctions
-
Un nouveau module qiskit_ibm_runtime.fake_provider a été ajouté pour permettre l'accès à une série de faux backends dérivés d'instantanés d'appareils Quantum IBM. Cette fonctionnalité était à l'origine fournie par le module
qiskit.providers.fake_provider, mais sera bientôt abandonnée au profit de qiskit_ibm_runtime.fake_provider.Les instantanés fournis par les faux backends sont utiles pour tester localement le transpiler et effectuer des simulations locales bruyantes du système avant de l'exécuter sur des appareils réels. Voici un exemple d'utilisation d'un faux backend pour la transpilation et la simulation :
from qiskit import QuantumCircuit from qiskit import transpile from qiskit_ibm_runtime.fake_provider import FakeManilaV2 # Get a fake backend from the fake provider backend = FakeManilaV2() # Create a simple circuit circuit = QuantumCircuit(3) circuit.h(0) circuit.cx(0,1) circuit.cx(0,2) circuit.measure_all() # Transpile the ideal circuit to a circuit that can be directly executed by the backend transpiled_circuit = transpile(circuit, backend) # Run the transpiled circuit using the simulated fake backend job = backend.run(transpiled_circuit) counts = job.result().get_counts() -
Ajout de la prise en charge de
backend.run(). La fonctionnalité est similaire à celle deqiskit-ibm-provider. -
Une erreur sera soulevée lors de l'initialisation si
q-ctrlest transmis en tant quechannel_strategyet que l'instance de compte n'a pas activéq-ctrl. -
Suppression du stockage du résultat dans
RuntimeJob._results. Au lieu de cela, les résultats sont récupérés chaque fois que la méthoderesults()est appelée.
Remarques concernant la dépréciation
- L'utilisation du fichier
~/.qiskit/qiskitrc.jsonpour les informations relatives aux comptes a été supprimée. Utilisez plutôt~/.qiskit/qiskit-ibm.json.
Corrections des erreurs
- Correction d'un problème où les travaux annulés et échoués renvoyaient un résultat invalide qui se traduisait par une erreur de type, ce qui empêchait de renvoyer l'erreur réelle à l'utilisateur.
- Un avertissement sera émis lors de l'initialisation si l'environnement DE est utilisé car toutes les fonctionnalités ne sont pas prises en charge dans cet environnement.
- Le paramètre
backendde la fonction from_id() est obsolète car les sessions ne prennent pas en charge plusieurs backends. En outre, le paramètreservicen'est plus facultatif. - Les entrées
circuit_indicesetobservable_indicespour l' Estimateur et l' Échantillonneur ont été complètement supprimées.
Autres remarques
- Ajout du code de migration pour exécuter
backend.rundans qiskit_ibm_runtime au lieu de qiskit_ibm_provider.
0.14.0
Nouvelles fonctions
- Il existe une nouvelle classe,
qiskit_ibm_runtime.Batch, qui fonctionne actuellement de la même manière que qiskit_ibm_runtime.Session mais sera ultérieurement mise à jour pour mieux prendre en charge la soumission de plusieurs travaux à la fois. - Les clés et valeurs arbitraires ne sont plus autorisées dans
Options.
Remarques concernant la dépréciation
- Les programmes personnalisés sont en voie d'abandon à compter de la version qiskit-ibm-runtime 0.14.0 et seront supprimés le 27 novembre 2023. Les utilisateurs peuvent également convertir leurs programmes personnalisés afin d'utiliser les primitives d' Qiskit Runtime, grâce à Qiskit Serverless.
0.13.0
Nouvelles fonctions
-
Ajout d'une nouvelle méthode, details(), qui renvoie des informations sur une session, notamment : la durée maximale de la session, le temps actif restant, l'état actuel et le fait que la session accepte ou non des travaux.
Nous avons également ajouté la fonction status(), qui renvoie l'état actuel de la session.
-
Lors de l'initialisation, si elle n'est pas transmise directement, l'adresse
instancesélectionnée par défaut par le fournisseur sera enregistrée au niveau "INFO". Lors de l'exécution d'un travail, si le backend sélectionné ne se trouve pas dans l'instance par défaut mais dans une autre instance à laquelle l'utilisateur a également accès, cette instance sera également enregistrée.
Mise à niveau
-
qiskit_ibm_runtime.Session.close () a été mis à jour pour indiquer qu'un site
Sessionn'accepte plus de nouveaux emplois. La session n'acceptera pas d'autres travaux, mais elle continuera à exécuter les travaux en file d'attente jusqu'à ce qu'ils soient terminés ou que le délai maximal soit écoulé. Cela se produit également automatiquement lorsque le gestionnaire de contexte de session est quitté. Lorsqu'une session qui n'accepte pas de travaux n'a plus de travaux à exécuter, elle est immédiatement fermée, ce qui permet au backend d'exécuter d'autres travaux plutôt que d'attendre le délai d'attente interactif.L'ancien comportement de la méthode de fermeture a été déplacé vers une nouvelle méthode, qiskit_ibm_runtime.Session.cancel (), où tous les travaux en file d'attente dans une session sont annulés et terminés.
Corrections des erreurs
- Correction d'un bug où
shotspassé en tant que type numpy n'était pas sérialisé correctement. - Correction d'un bug dans target_history() où le paramètre datetime n'était pas utilisé pour récupérer les propriétés du backend à partir de la date spécifiée.
0.12.2
Nouvelles fonctions
- En cas d'utilisation d'un
channel_strategy, seuls les backends qui prennent en charge cechannel_strategyseront accessibles à l'utilisateur. - Ajout de l'option permettant de définir un compte par défaut dans le fichier json du compte. Pour sélectionner un compte par défaut, définissez
set_as_default=TruedansQiskitRuntimeService.save_account(). - Ajout d'une nouvelle méthode
Session.from_idqui crée une nouvelle session avec un identifiant donné. - Un avertissement sera désormais émis si un utilisateur soumet un travail qui devrait dépasser son quota mensuel de temps d'exécution du système de 10 minutes. Cela ne s'applique qu'aux travaux exécutés sur du matériel réel dans l'instance
ibm-q/open/main. Si le travail dépasse le quota, il sera annulé.
Mise à niveau
- Les messages d'erreur des travaux incluent désormais le code d'erreur. Les codes d'erreur peuvent être trouvés dans les erreurs.
0.12.1
Nouvelles fonctions
- Les utilisateurs peuvent utiliser une nouvelle variable d'environnement,
USAGE_DATA_OPT_OUT, pour refuser le suivi de l'utilisation du module utilisateur en fixant cette valeur àTrue. En outre, seuls certains modules qiskit seront suivis au lieu de tous les modules commençant par qiskit ou qiskit_. - Les utilisateurs peuvent désormais transmettre une valeur de
defaultau paramètrechannel_strategyde la commande qiskit_ibm_runtime.QiskitRuntimeService. Désormais, si un compte est configuré avec une certaine stratégie de canal, l'utilisateur peut la remplacer en passant pardefault. - Les primitives Sampler et Estimator ont été améliorées pour intégrer des procédures de validation personnalisées lorsque la propriété channel_strategy du site :class:qiskit_ibm_runtime.QiskitRuntimeService est configurée comme "q-ctrl" Cette logique de validation personnalisée rectifie efficacement les options d'entrée incorrectes et protège les utilisateurs contre la désactivation involontaire des améliorations de performance de Q-CTRL.
Corrections des erreurs
- La récupération des propriétés du backend avec properties() supporte désormais le passage d'un paramètre
datetimepour récupérer les propriétés à partir d'une date passée. - Les options
noise_factorsetextrapolatordeqiskit_ibm_runtime.options.ResilienceOptionssont désormais définies par défaut surNone, à moins queresilience_levelne soit défini sur 2. Seules les options relatives au niveau de résilience seront définies. Ainsi, lorsque vous utilisezresilience_level2,noise_factorssera toujours défini par défaut comme(1, 3, 5)etextrapolatorcommeLinearExtrapolator. En outre, les options dont la valeur estNonene seront plus envoyées au serveur. - Les messages d'erreur des travaux ne seront plus renvoyés en majuscules.
- L'option max_execution_time est maintenant basée sur le temps d'exécution du système au lieu du temps de l'horloge murale. Le temps d'exécution du système est le temps que le système consacre au traitement de votre travail. Si un travail dépasse ce délai, il est annulé de force. Les emplois sur simulateur continuent d'utiliser le temps de l'horloge murale.
0.12.0
Nouvelles fonctions
-
Ajout d'un
global_service, de sorte que si l'utilisateur définit un QiskitRuntimeService,, celui-ci sera utilisé par les primitives, même si le service ne leur est pas transmis explicitement. Par exemple :from qiskit_ibm_runtime import QiskitRuntimeService, Sampler service = QiskitRuntimeService(channel="ibm_quantum") # Sampler._service field will be initialized to ``service`` sampler = Sampler(backend="ibmq_qasm_simulator") -
Ajout d'une nouvelle méthode, qiskit_ibm_runtime.QiskitRuntimeService.instances() qui renvoie toutes les instances (hub/group/project) dans lesquelles se trouve l'utilisateur. Ceci ne concerne que le canal
ibm_quantumpuisque le canalibm_cloudn'a pas d'instances multiples. -
Ajout de validations pour les options au deuxième niveau de la dictée, c'est-à-dire, pour chacune des résilience, simulateur, exécution et transpilation, vérification que leurs options sont supportées. Dans le cas contraire, une exception est levée.
-
Il existe un nouveau paramètre,
channel_strategy, qui peut être défini lors de l'initialisation de qiskit_ibm_runtime.QiskitRuntimeService ou sauvegardé dans qiskit_ibm_runtime.QiskitRuntimeService.save_account(). Sichannel_strategyest défini àq-ctrl, tous les travaux du service utiliseront la stratégie d'atténuation des erreurs Q-CTRL.
Mise à niveau
- Les circuits et autres paramètres d'entrée ne seront plus automatiquement stockés dans les travaux d'exécution. Ils peuvent toujours être récupérés à l'aide de qiskit_ibm_runtime.RuntimeJob.inputs().
Remarques concernant la dépréciation
- Les options de résilience
noise_amplifiersont obsolètes. Après la période de dépréciation, seule l'amplification locale des plis sera prise en charge. Se référer à https://github.com/qiskit-community/prototype-zne pour l'amplification globale du pliage.
Corrections des erreurs
- Lors de l'exécution sur le canal "ibm_cloud", il est possible de ne pas spécifier le backend. Dans ce cas, le système sélectionne l'un des backends disponibles pour ce service. Le problème n° 625 https://github.com/Qiskit/qiskit-ibm-runtime/issues/625 a signalé que le backend renvoyé par
job.backend()n'était pas toujours le backend sur lequel le travail était exécuté. Ce PR corrige ce bogue. - Corrige une condition de concurrence dans le test\cancel_running_job() dans test_job.py où l'annulation du travail ne pouvait pas être effectuée. Voir #1019 <https://github.com/Qiskit/qiskit-ibm-runtime/issues/1019> _ pour plus de détails.
- Auparavant, nous avons ajouté une validation lors de l'exécution des tâches pour nous assurer que le nombre de circuits n'était pas supérieur au maximum pour ce backend,
backend.max_circuits. Cette limite n'est en fait pas nécessaire pour les primitives exécutées à partir d'une session.
0.11.3
Nouvelles fonctions
- Ajout de la raison de l'échec lors de l'invocation de la méthode error_message().
- Ajout d'une nouvelle propriété, usage_estimation() qui renvoie le temps d'exécution estimé du système,
quantum_seconds. Le temps d'exécution du système représente le temps que le système consacre au traitement de votre travail. - Lève une exception si le nombre de circuits transmis à
_run_primitive()dépasse le nombre de circuits pris en charge par le backend. - Il existe une nouvelle méthode update_tags() qui peut être utilisée pour mettre à jour le site
job_tagsd'un travail. - Si
instanceest fourni comme paramètre à qiskit_ibm_runtime.QiskitRuntimeService, il est utilisé comme filtre dansQiskitRuntimeService.backends(). Siinstancen'est pas reconnu comme l'une des instances du fournisseur, une exception sera levée. Auparavant, nous n'émettions qu'un avertissement.
0.11.2
Nouvelles fonctions
-
Si un travail a été annulé et que job.result () est demandé, une exception est levée au lieu de renvoyer None.
-
Une nouvelle méthode, qiskit_ibm_runtime.options.SimulatorOptions.set_backend(), permet aux utilisateurs de définir plus facilement les options du simulateur pour un backend.
from qiskit.providers.fake_provider import FakeManila from qiskit_aer.noise import NoiseModel # Make a noise model fake_backend = FakeManila() # Set options to include the noise model options = Options() options.simulator.set_backend(fake_backend) options.simulator.seed_simulator = 42
Corrections des erreurs
- Correction d'une récursion infinie lors d'une tentative de copie profonde d'un IBMBackend. Ajout d'une méthode
qiskit_ibm_runtime.IBMBackend.deepcopy(). - Correction d'un problème où les métadonnées du circuit n'étaient pas sérialisées correctement, ce qui entraînait une erreur de type.
0.11.1
Remarques concernant la dépréciation
- Dans qiskit_ibm_runtime.RuntimeJob.metrics(), le champ bss sera remplacé par usage.
0.11.0
Nouvelles fonctions
-
Lors de la récupération d'un travail à l'aide de
qiskit_ibm_runtime.IBMRuntimeService.job(), l'API ne renverra plus l'adresseparams. Au lieu de cela, elles seront chargées paresseusement lorsqu'elles seront réellement nécessaires dans qiskit_ibm_runtime.RuntimeJob.inputs(). -
Ajout d'un avertissement lorsque le backend n'est pas actif dans QiskitRuntimeService.run.
-
Prise en charge des entrées de type
CouplingMaplorsqu'elles sont fournies en tant qu'option du simulateur. Auparavant, nous avons soutenu, par exempleoptions.simulator = {"coupling_map": [[0, 1], [1, 0]]}Désormais, nous soutenons également les éléments suivants :
options.simulator = {"coupling_map": CouplingMap.from_line(10)}
Mise à niveau
- Une session par défaut n'est plus ouverte pour vous si vous passez un nom ou une instance de backend à qiskit_ibm_runtime.Sampler ou qiskit_ibm_runtime.Estimator aux constructeurs. La primitive sera exécutée sans session. En outre, vous devez désormais utiliser le paramètre
backendpour transmettre un nom ou une instance de backend au lieu du paramètresession(qui peut continuer à être utilisé pour transmettre une session). - Le premier paramètre de la fonction qiskit_ibm_runtime.Sampler et qiskit_ibm_runtime.Estimator est désormais
backendau lieu desession.
Remarques concernant la dépréciation
- Le passage d'un nom ou d'une instance de backend au paramètre
sessionlors de l'initialisation d'une application de type qiskit_ibm_runtime.Sampler ou qiskit_ibm_runtime.Estimator a été déprécié. Veuillez utiliser le paramètrebackendà la place. Vous pouvez continuer à transmettre une session en utilisant le paramètresession.
0.10.0
Nouvelles fonctions
- Python 3.11 est désormais pris en charge.
Mise à niveau
- Ajout de messages d'erreur dans le cas où l'utilisateur définit des valeurs non prises en charge pour "max_execution_time". Auparavant, cette validation était effectuée du côté du serveur.
Corrections des erreurs
- Ajout de la désérialisation des paramètres de RuntimeJob.inputs. Auparavant, les circuits étaient renvoyés dans un format sérialisé. Corrige le problème #829.
- Permettre aux utilisateurs de récupérer tous les backends même si l'un d'entre eux a une configuration manquante. Le backend sans configuration ne sera pas renvoyé.
0.9.4
Nouvelles fonctions
- Ajout de méthodes pour valider les options d'entrée dans les options
transpilationetenvironment.
Mise à niveau
- Lors de la construction d'un backend
qiskit.transpiler.Target, les qubits et les portes défectueux de la configuration du backend seront éliminés par filtrage.
Remarques concernant la dépréciation
-
Les arguments obsolètes
circuits,parameters,service, etskip_transpilationont été supprimés de l' échantillonneur.De même, les arguments obsolètes
circuits,observables,parameters,service, etskip_transpilationont été supprimés de l' Estimateur.Dans QiskitRuntimeService, le paramètre
autha été supprimé. En outre, les paramètresinstance,job_tagsetmax_execution_timeont été supprimés de qiskit_ibm_runtime.QiskitRuntimeService.run(). Ils peuvent être transmis par l'intermédiaire deRuntimeOptions.Le site
RuntimeOptionsbackend_namen'est plus pris en charge. Veuillez utiliserbackendà la place.
Corrections des erreurs
- Correction d'un bogue où la récupération d'un travail depuis un backend sans les options
noise_modelouseed_simulatorentraînait une erreur de clé.
0.9.3
Mise à niveau
- Ajout de messages d'erreur dans le cas où l'utilisateur définit des valeurs non prises en charge pour 'optimization_level' ou pour 'resilience_level'. Ajout d'une vérification de la validation des options données en entrée à
resilience. Auparavant, cette validation était effectuée du côté du serveur. En les ajoutant du côté du client, la réponse sera beaucoup plus rapide en cas d'échec. La variable d'environnementQISKIT_RUNTIME_SKIP_OPTIONS_VALIDATIONest utilisée pour contrôler la validation. Si cette option est activée, la validation sera ignorée. - Les configurations du backend ne sont plus chargées lorsque QiskitRuntimeService est initialisé. Au lieu de cela, la configuration n'est chargée et mise en cache que lors des opérations get_backend() et backends().
Corrections des erreurs
- Lors de la création d'un objet Option et de la transmission d'une option d'entrée à
resilience_options, cette option a été incluse dansresilience_options, mais les autres options par défaut ont été supprimées. Cette erreur a été corrigée, de sorte que les entrées sont désormais gérées correctement, comme les autres types d'options.
0.9.2
Nouvelles fonctions
- Ajout d'un nouvel argument appelé
session_timeà la méthode program_run etqiskit_ibm_runtime.RuntimeOptions. Les valeurs saisies par l'utilisateur pour la sessionmax_timeseront envoyées au serveur en tant quesession_time. Cela permet aux utilisateurs de spécifier des valeurs différentes pour les sessionsmax_timeetmax_execution_time. - Ajout de la méthode target_history(). Cette méthode est similaire à target(). La différence est que la nouvelle méthode permet à l'utilisateur de passer un paramètre de type datetime, pour récupérer des données historiques du backend.
Mise à niveau
- Accepter toutes les options données au niveau 1 et les affecter au type d'option hiérarchique approprié. Par exemple, si l'utilisateur fournit
options = {"shots": 10}comme entrée à l'échantillonneur/estimateur, il sera interprété commeoptions = {"execution: {"shots": 10}}. - Si un travail est renvoyé sans backend, la récupération du backend via qiskit_ibm_runtime.RuntimeJob.backend() récupérera les données du serveur et tentera de mettre à jour le backend. En outre,
job_idetbackend, qui étaient des attributs obsolètes de qiskit_ibm_runtime.RuntimeJob ont été supprimés. - Ajout d'un avertissement lorsque l'utilisateur passe une option qui n'est pas prise en charge dans les options.
Corrections des erreurs
- Correction d'un problème où les valeurs par défaut pour
optimization_leveletresilience_leveln'étaient pas définies correctement. - Correction d'un problème qui faisait que si aucun backend n'était sélectionné,
optimization_leveletresilience_levelétaient remplacés par défaut parNone, ce qui entraînait l'échec du travail. - Si une instance est transmise à qiskit_ibm_runtime.QiskitRuntimeService.get_backend() et que le backend est ensuite utilisé dans une session, tous les travaux de la session seront exécutés à partir de l'instance originale transmise.
- Suppression de la décomposition supplémentaire de
BlueprintCircuits dans l'encodeur JSON. Il s'agissait d'une correction de bogue, mais elle a été corrigée depuis. Le fait de continuer à effectuer la décomposition a entraîné d'éventuels problèmes si le circuit décomposé n'était plus dans l'ensemble de base correct du backend.
0.9.1
Mise à niveau
-
qiskit_ibm_runtime.QiskitRuntimeService.jobs() dispose désormais d'un paramètre
backend_namequi peut être utilisé pour retourner uniquement les jobs exécutés avec le backend spécifié. -
Permet à l'utilisateur de stocker les détails du compte dans un fichier spécifié par l'utilisateur dans le paramètre.
filename. La valeur par défaut reste ~/.qiskit/qiskit-ibm.json. Exemple d'utilisation : Ex :QiskitRuntimeService.save_account(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account", token="my_token") service = QiskitRuntimeService(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account",)
Remarques concernant la dépréciation
backendn'est plus une option supportée lors de l'utilisation de qiskit_ibm_runtime.Session.run (). Les sessions ne prennent pas en charge plusieurs backends croisés. En outre, une exception sera levée si un backend transmis par le biais des options ne correspond pas au backend de la session originale dans une session active.
Corrections des erreurs
ECRGateetCZGateont été ajoutés au constructeurTargetpour corriger un bug de compilation.
Autres remarques
- Les messages d'erreur d'un travail qui échoue pouvant être longs, nous les avons raccourcis de manière à ce qu'ils commencent à partir de la dernière adresse
Tracebackdu message.
0.9.0
Mise à niveau
- Modification des valeurs par défaut de
optimization_levelet deresilience_leveldansqiskit_ibm_runtime.Options. Si leurs valeurs sont définies par l'utilisateur, elles ne sont pas modifiées. S'il n'est pas défini, si le backend est un simulateur sans bruit, alorsoptimization_levelest défini à 1 etresilience_levelà 0. Sinon, ils sont définis à 3 et 1 respectivement. - session_id() et tags() ont été ajoutés pour faciliter le retour de l'identifiant (session_id) et des étiquettes (job_tags) d'un travail.
Corrections des erreurs
- Correction d'un problème où les travaux qui n'ont pas été exécutés avant la fermeture d'une session ne sont pas réellement exécutés dans le cadre de cette session. Les travaux doivent être exécutés dans le cadre d'une session, même si celle-ci est fermée par la sortie du gestionnaire de contexte.
- Corrige le problème dans lequel la soumission d'un travail volumineux échoue en raison d'un dépassement du délai de l'opération d'écriture.
0.8.0
Nouvelles fonctions
- Python 3.10 est désormais pris en charge.
- Des options de résilience avancées peuvent désormais être définies sous
options.resilience. Voirqiskit_ibm_runtime.options.ResilienceOptionspour toutes les options disponibles. - Vous pouvez désormais spécifier une paire de décodeurs de résultats pour le paramètre
result_decoderde la méthode qiskit_ibm_runtime.QiskitRuntimeService.run(). Si une paire est spécifiée, la première est utilisée pour décoder les résultats intermédiaires et la seconde les résultats finaux.
Mise à niveau
- L'option par défaut de
resilience_levela été modifiée de 0 à 1. En outre, l'option par défautoptimization_levela été modifiée de 1 à 3.
Remarques concernant la dépréciation
- Les options de transpilation
translation_methodettiming_constraintssont obsolètes.
Corrections des erreurs
- Si une qiskit_ibm_runtime.IBMBackend est transmise au constructeur qiskit_ibm_runtime.Session le service utilisé pour initialiser l'instance
IBMBackendest utilisé pour la session au lieu du service de compte par défaut.
0.7.0
Nouvelles fonctions
qiskit_ibm_runtime.Optionsaccepte désormais des arguments de type mot-clé arbitraire. Cela permet aux utilisateurs de spécifier de nouvelles options pour les programmes primitifs sans mettre à jourqiskit_ibm_runtime. Ces arguments arbitraires ne sont toutefois pas validés.- La classe qiskit_ibm_runtime.options.EnvironmentOptions accepte désormais un paramètre
callback. Ce paramètre peut être utilisé pour transmettre les résultats intermédiaires et finaux des primitives. - La classe
qiskit_ibm_runtime.Optionsaccepte désormaismax_execution_timecomme option de premier niveau etjob_tagscomme option sousenvironment.qiskit_ibm_runtime.RuntimeOptionsa également été mis à jour pour inclure ces deux paramètres.
Mise à niveau
- Cette version de qiskit-ibm-runtime nécessite qiskit-terra version 0.22 ou supérieure. Le fichier
requirements.txta été mis à jour en conséquence.
Remarques concernant la dépréciation
- Qiskit Runtime les programmes
torch-train,torch-infer,sample-expval,sample-program, etquantum_kernal_alignmentont été supprimés en raison de leur faible utilisation. - Le passage du paramètre
instanceà la fonction qiskit_ibm_runtime.QiskitRuntimeService.run() a été supprimé. Au lieu de cela, vous pouvez passer le paramètreinstanceà l'intérieur du paramètreoptions. - Le fait de passer
job_tagsetmax_execution_timecomme paramètres à qiskit_ibm_runtime.QiskitRuntimeService a été supprimé. Veuillez les faire passer à l'intérieur deoptions.
Corrections des erreurs
- Correction de la section manquante sur la récupération des emplois dans le guide pratique.
0.7.0rc2
Mise à niveau
- Ajout d'un contrôle de validation à
Sampler.run(). Il soulève une erreur s'il n'y a pas de bit classique. - L' échantillonneur est mis à jour pour renvoyer
SamplerResultavecSamplerResult.quasi_distsen tant que liste deQuasiDistrbution. Il avait l'habitude de définir une liste dedictcommeSamplerResult.quasi_dists, mais il ne suivait pas la conception deSamplerResult. - La classe RuntimeJob est maintenant une sous-classe de
qiskit.providers.Job.
Remarques concernant la dépréciation
job_idetbackenddes attributs de qiskit_ibm_runtime.RuntimeJob ont été dépréciés. Veuillez utiliser les méthodes qiskit_ibm_runtime.RuntimeJob.job_id() et qiskit_ibm_runtime.RuntimeJob.backend() à la place.- L'attribut
backend_namedeqiskit_ibm_runtime.RuntimeOptionsest obsolète et remplacé parbackend.
0.7.0rc1
Prélude
La manière dont les primitives sont invoquées au sein d'une session et les options disponibles pour les primitives ont été modifiées de manière significative. Veuillez consulter le reste des notes de mise à jour et les tutoriels pour plus d'informations.
Nouvelles fonctions
-
Vous pouvez désormais invoquer le même programme primitif ou des programmes primitifs différents plusieurs fois au cours d'une même session. Par exemple :
from qiskit_ibm_runtime import QiskitRuntimeService, Session, Sampler, Estimator, Options from qiskit.test.reference_circuits import ReferenceCircuits from qiskit.circuit.library import RealAmplitudes from qiskit.quantum_info import SparsePauliOp # Initialize account. service = QiskitRuntimeService() # Set options, which can be overwritten at job level. options = Options(optimization_level=1) # Prepare inputs. bell = ReferenceCircuits.bell() psi = RealAmplitudes(num_qubits=2, reps=2) H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)]) theta = [0, 1, 1, 2, 3, 5] with Session(service=service, backend="ibmq_qasm_simulator") as session: # Submit a request to the Sampler primitive within the session. sampler = Sampler(session=session, options=options) job = sampler.run(circuits=bell) print(f"Sampler results: {job.result()}") # Submit a request to the Estimator primitive within the session. estimator = Estimator(session=session, options=options) job = estimator.run( circuits=[psi], observables=[H1], parameter_values=[theta] ) print(f"Estimator results: {job.result()}") -
Une nouvelle classe
qiskit_ibm_runtime.Optionsest introduite. Cette classe vous permet de compléter automatiquement les options liées aux programmes primitifs. Par exemple :from qiskit_ibm_runtime import Session, Sampler, Options from qiskit.test.reference_circuits import ReferenceCircuits options = Options() options.optimization_level = 3 # This can be done using auto-complete. with Session(backend="ibmq_qasm_simulator") as session: # Pass the options to Sampler. sampler = Sampler(session=session, options=options) # Or at job level. job = sampler.run(circuits=ReferenceCircuits.bell(), shots=4000) -
qiskit_ibm_runtime.RuntimeJob dispose d'une nouvelle méthode, metrics(). Cette méthode renvoie les métriques d'un travail, y compris les informations relatives à l'horodatage.
-
Les qiskit_ibm_runtime.QiskitRuntimeService
channelpeut maintenant être stockée en tant que variable d'environnement,QISKIT_IBM_CHANNEL. Ainsi, lors de l'utilisation des Runtime Primitives, le service ne doit pas être instancié manuellement et peut être créé directement à partir des variables d'environnement.
Mise à niveau
-
Lancez
RuntimeJobMaxTimeoutErrorlorsqu'un travail dure trop longtemps afin que les programmes puissent le traiter de manière appropriée. -
Les paramètres expérimentaux
transpilation_settings,resilience_settings, etmax_timedes constructeurs :class:` qiskit_ibm_runtime.Sampler et qiskit_ibm_runtime.Estimator ont été supprimés. Vous pouvez utiliser la classeqiskit_ibm_runtime.Optionspour spécifier les paramètres, etmax_timepeut être spécifié lors du démarrage d'une nouvelle session. Par exemple :from qiskit_ibm_runtime import Session, Sampler, Options options = Options() # This can be done using auto-complete. option.optimization_level = 3 options.resilience_level = 1 with Session(max_time="2h") as session: # Pass the options to Sampler. sampler = Sampler(session=session, options=options) -
Étant donné que certains comptes comportent de nombreux programmes d'exécution, la mise en cache d'une liste de tous les programmes lors du premier appel à
programs()a été supprimée. Au lieu de cela, les programmes ne seront mis en cache que jusqu'à la valeurlimitindiquée, dont la valeur par défaut est de 20.
Remarques concernant la dépréciation
-
Invoquer qiskit_ibm_runtime.Sampler et qiskit_ibm_runtime.Estimator en tant que gestionnaires de contexte a été supprimé. Vous pouvez utiliser la classe qiskit_ibm_runtime.Session pour créer une nouvelle session et invoquer une ou plusieurs primitives au sein de la session.
Par conséquent, le passage de paramètres d'entrée, tels que
circuits,observables, etparameter_values, ainsi queserviceaux constructeurs deSampleretEstimatora également été déprécié. Les entrées peuvent maintenant être transmises à la méthoderun()des classes primitives, etservicepeut être transmis à qiskit_ibm_runtime.Session lors du démarrage d'une nouvelle session. -
Le passage de
skip_transpilationaux constructeurs :class:` qiskit_ibm_runtime.Sampler et qiskit_ibm_runtime.Estimator a été déprécié. Vous pouvez utiliser la classeqiskit_ibm_runtime.Optionspour spécifier cette option. Par exemple :from qiskit_ibm_runtime import Options options = Options() # This can be done using auto-complete. options.transpilation.skip_transpilation = True
Corrections des erreurs
- Corrige le problème #428 en augmentant la version minimale requise de
qiskit-terraà0.21.0, puisque la dernière version deqiskit-ibm-runtimen'est pas compatible avec0.20.0ou une version antérieure deqiskit-terra.
0.6.0
Mise à niveau
-
Lors de la migration depuis
qiskit-ibmq-provider, les informations d'identification du canalibm_quantumseront automatiquement copiées depuis le fichier qiskitrc et un fichier qiskit-ibm.json sera créé s'il n'existe pas. Il suffit d'initialiser la classe QiskitRuntimeService sans passer de paramètres pour utiliser ce compte copié sur le compte par défautibm_quantum.Ex. :
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService() -
IBMEstimatorqui était dépréciée auparavant est maintenant supprimée. Utiliser la classe des estimateurs à l'avenir. -
IBMRuntimeServicequi était dépréciée auparavant est maintenant supprimée. Utiliser QiskitRuntimeService à l'avenir.
0.5.0
Prélude
Cette version tire parti des améliorations apportées à l'API et à la file d'attente pour mieux prendre en compte les sessions d'exécution. Par conséquent, lors de l'utilisation des primitives (échantillonneur et estimateur), les travaux d'exécution de la même session seront placés en tête de la file d'attente, ce qui accélérera la session d'exécution, une fois qu'elle aura démarré.
Nouvelles fonctions
-
L'objet
service, qui est une instance de la classe QiskitRuntimeService est désormais accessible depuis la classe IBMBackend à l'aide de la propriétéservice.Ex. :
backend = service.get_backend("ibmq_qasm_simulator") backend.service # QiskitRuntimeService instance used to instantiate the backend
Mise à niveau
-
jobs() a deux nouveaux paramètres,
created_afteretcreated_before. Ils peuvent être utilisés pour filtrer les travaux par date de création en heure locale. -
Les paramètres
circuit_indicesetobservable_indiceslors de l'appel àestimatorsont désormais obsolètes et seront supprimés dans une prochaine version. Vous pouvez maintenant transmettre des indices ou des objets en utilisant les paramètrescircuitsetobservables.Ex. :
with Estimator( circuits=[qc1, qc2], observables=[H1, H2, H3], service=service, options=options ) as estimator: # pass circuits and observables as indices result = estimator(circuits=[0, 1], observables=[0, 1], parameter_values=[theta1, theta2]) # pass circuits and observables as objects result = estimator(circuits=[qc1, qc2], observables=[H1, H3], parameter_values=[theta1, theta3]) -
Les paramètres
circuit_indicesetobservable_indiceslors de l'appel àestimatorsont désormais obsolètes et seront supprimés dans une prochaine version. Vous pouvez maintenant transmettre des indices ou des objets en utilisant les paramètrescircuitsetobservables.Ex. :
with Sampler( circuits=[qc1, qc2], service=service, options=options ) as sampler: # pass circuits as indices result = sampler(circuits=[0, 1], parameter_values=[theta1, theta2]) # pass circuit as objects result = sampler(circuits=[qc1, qc2], parameter_values=[theta2, theta3]) -
L'adresse
session_id, qui est l'identifiant du premier travail d'une session d'exécution, peut désormais être utilisée comme filtre dans jobs() avec le paramètresession_id. -
run() prend désormais en charge un nouveau paramètre,
job_tags. Ces balises peuvent être utilisées pour filtrer les travaux avec jobs(). -
run() prend désormais en charge un nouveau paramètre,
max_execution_time, qui peut être utilisé pour remplacer le temps d'exécution maximal par défaut du programme. Il doit être inférieur ou égal au temps d'exécution maximal du programme. -
jobs() a un nouveau paramètre,
descending. La valeur par défaut de ce paramètre estTrue, ce qui signifie que les emplois seront renvoyés par ordre décroissant en fonction de la date de création. -
RuntimeJobTimeoutErrorest désormais déclenchée lorsque l'adressetimeoutdéfinie dans result() ou wait_for_final_state() expire. -
Lors de l'initialisation de QiskitRuntimeService et qu'un jeton invalide est utilisé,
IBMNotAuthorizedErrorsera levé au lieu deRequestsApiError. -
IBMSamplerqui était dépréciée auparavant est maintenant supprimée. Utiliser la classe d' échantillonnage à l'avenir. -
qubit_properties() retournera maintenant une sous classe de
QubitPropertiesappeléeIBMQubitPropertieset exposera l'anharmonicité en plus de t1, t2 et la fréquence déjà exposée par la classeQubitProperties.
0.4.0
Mise à niveau
-
IBMRuntimeServicea été renomméeQiskitRuntimeSerice. La classeIBMRuntimeServiceest désormais obsolète et sera supprimée dans une prochaine version.Exemple :
Avant :
from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...")Après :
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") -
IBMEstimatorest désormais obsolète et sera supprimée dans une prochaine version. Utiliser la classe des estimateurs à l'avenir.Exemple :
Avant :
from qiskit_ibm_runtime import IBMRuntimeService, IBMEstimator service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...") estimator_factory = IBMEstimator(service=service, backend="ibmq_qasm_simulator") with estimator_factory(circuits=[qc], observables="...", parameters="...") as estimator: result = estimator(circuit_indices=[0], ...)Après :
from qiskit_ibm_runtime import QiskitRuntimeService, Estimator service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") with Estimator( circuits=[qc], observables="...", parameters="...", service=service, options={ "backend": "ibmq_qasm_simulator" }, # or IBMBackend<"ibmq_qasm_simulator"> ) as estimator: result = estimator(circuit_indices=[0], ...) -
IBMSamplerest désormais obsolète et sera supprimée dans une prochaine version. Utiliser la classe d' échantillonnage à l'avenir.Exemple :
Avant :
from qiskit_ibm_runtime import IBMRuntimeService, IBMSampler service = IBMRuntimeService(channel="ibm_cloud", token="...", instance="...") sampler_factory = IBMSampler(service=service, backend="ibmq_qasm_simulator") with sampler_factory(circuits=[qc], parameters="...") as sampler: result = sampler(circuit_indices=[0], ...)Après :
from qiskit_ibm_runtime import QiskitRuntimeService, Sampler service = QiskitRuntimeService(channel="ibm_cloud", token="...", instance="...") with Sampler( circuits=[qc], parameters="...", service=service, options={ "backend": "ibmq_qasm_simulator" }, # or IBMBackend<"ibmq_qasm_simulator"> ) as sampler: result = sampler(circuit_indices=[0], ...)
Remarques concernant la dépréciation
IBMRuntimeServiceles classesIBMEstimatoretIBMSamplersont obsolètes et seront supprimées dans une prochaine version. Utilisez plutôt les classes QiskitRuntimeService, Estimator et Sampler. Voir la section des notes de mise à niveau pour une explication détaillée et des exemples.
0.3.0
Mise à niveau
- Un nouveau paramètre
channela été ajouté à la classeqiskit_ibm_runtime.IBMRuntimeServiceainsi qu'aux méthodessave_account(),saved_accounts()etdelete_account(). Il peut être défini suribm_quantumouibm_cloudpour s'authentifier sur l'un des deux canaux différents par lesquels le service Qiskit Runtime est actuellement offert.channelremplace le paramètreauthqui est désormais obsolète.
Remarques concernant la dépréciation
- Le paramètre
authde la classeqiskit_ibm_runtime.IBMRuntimeServiceet des méthodes telles quesave_account(),saved_accounts()etdelete_account()est désormais obsolète et sera supprimé dans une prochaine version. Veuillez utiliser le nouveau paramètrechannelà la place.
Corrections des erreurs
- Correction du problème #291 où le passage d'un seul
QuantumCircuitaux primitives de l'échantillonneur ou de l'estimateur provoquait une erreur.
0.2.0
Nouvelles fonctions
qiskit_ibm_runtime.IBMEstimatoretqiskit_ibm_runtime.IBMSamplervous permettent désormais d'interagir facilement avec les programmes primitifsestimatoretsampler. Pour en savoir plus sur la manière de les utiliser, reportez-vous aux exemples figurant dans les documents relatifs aux classes respectives.
Corrections des erreurs
- Correction d'un bogue à cause duquel qiskit_ibm_runtime.RuntimeJob.wait_for_final_state() entraînait une erreur NoneType si le travail était déjà terminé et que qiskit_ibm_runtime.RuntimeJob.status() avait été appelé auparavant.
0.1.0
Prélude
qiskit-ibm-runtime est un nouveau client de l'API Python qui permet d'accéder aux programmes, systèmes et simulateurs quantiques de IBM Quantum via le service Qiskit Runtime.
Ce nouveau paquetage s'appuie sur le travail déjà effectué dans le module qiskit.providers.ibmq.runtime dans le paquetage qiskit-ibmq-provider et le remplace à l'avenir. Le module d'exécution du paquet qiskit-ibmq-provider est désormais obsolète.
qiskit-ibm-runtime n'est pas inclus dans le méta-paquet Qiskit et vous devez donc l'installer séparément en utilisant pip install qiskit-ibm-runtime.
Nouvelles fonctions
qiskit_ibm_runtime.IBMRuntimeService.least_busy()vous permettra désormais de trouver le backend le moins occupé.
Mise à niveau
-
le paquet qiskit-ibm-runtime n'utilise plus le fichier $ HOME/.qiskit/qiskitrc utilisé par qiskit-ibmq-provider pour sauvegarder les informations d'identification. Les informations d'identification sont désormais stockées au format JSON dans le fichier $ HOME/.qiskit/qiskit-ibm.json lorsque vous utilisez la méthode
qiskit_ibm_runtime.IBMRuntimeService.save_account().Vous pouvez désormais enregistrer plusieurs informations d'identification et donner un nom facultatif à chacune d'entre elles.
-
Qiskit Runtime est accessible à l'aide d'un compte IBM Quantum (legacy) ou d'un compte IBM Cloud (cloud). qiskit-ibm-runtime vous permet de vous connecter à l'un ou l'autre de ces comptes :
# Legacy from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(auth="legacy", token="abc") # Cloud from qiskit_ibm_runtime import IBMRuntimeService service = IBMRuntimeService(auth="cloud", token="abc", instance="IBM Cloud CRN or Service instance name") -
qiskit_ibm_runtime.IBMBackend implémente désormais l'interface
qiskit.providers.BackendV2et permet d'accéder plus facilement à la configuration d'un backend, par exemple :# BackendV1: backend.configuration().n_qubits # BackendV2: backend.num_qubitsLe seul changement par rapport à BackendV1 est que backend.name est désormais un attribut et non plus une méthode.
Reportez-vous à la qiskit_ibm_runtime.IBMBackend pour obtenir la liste de tous les attributs disponibles.
-
Si vous avez utilisé la méthode qiskit.providers.ibmq.AccountProvider.get_backend (par exemple,
provider.get_backend("ibmq_qasm_simulator")) dans le paquet qiskit-ibmq-provider, la méthode équivalente dans ce nouveau paquet estqiskit_ibm_runtime.IBMRuntimeService.backend():service = IBMRuntimeService() backend = service.backend("ibmq_qasm_simulator") -
Il est désormais facultatif de spécifier un hub/groupe/projet lors de la connexion à l'ancien compte IBM Quantum. Le hub/groupe/projet est sélectionné dans l'ordre suivant.
- hub/group/project s'il est transmis via le paramètre
instancelors de l'initialisationqiskit_ibm_runtime.IBMRuntimeService - le hub/groupe/projet spécifique requis par le backend spécifié lors de l'appel à
qiskit_ibm_runtime.IBMRuntimeService.run() - la valeur par défaut définie précédemment via
qiskit_ibm_runtime.IBMRuntimeService.save_account() - un hub/groupe/projet premium dans votre compte
- centre/groupe/projet de libre accès
- hub/group/project s'il est transmis via le paramètre
-
Il est désormais facultatif de spécifier le nom du backend dans les options lors de l'exécution de la méthode
qiskit_ibm_runtime.IBMRuntimeService.run()lorsque l'on utilise le cloud runtime ( IBM Cloud uniquement). Le serveur choisira automatiquement un backend et renverra son nom. -
qiskit.providers.ibmq.runtime.IBMRuntimeService la méthode.logout de qiskit-ibmq-provider qui était utilisée pour effacer le cache d'autorisation sur le serveur a été supprimée.
-
Python 3.6 a atteint sa fin de vie et ne sera plus supporté dans le nouveau paquetage qiskit-ibm-runtime.
-
qiskit.providers.ibmq.runtime.IBMRuntimeService la méthode.run_circuits de qiskit-ibmq-provider a été supprimée et sera remplacée par le programme primitif
Sampler. -
qiskit_ibm_runtime.IBMRuntimeService.run()accepte désormais les options d'exécution en tant que classeqiskit_ibm_runtime.RuntimeOptionsen plus de la classe Dict déjà prise en charge. le nom du backend, l'image et le niveau du journal sont les options actuellement disponibles. -
Le résultat final est également diffusé après les résultats intermédiaires lorsque vous spécifiez un
callbackàqiskit_ibm_runtime.IBMRuntimeService.run()ou qiskit_ibm_runtime.RuntimeJob.stream_results().
0.1.0rc2
Nouvelles fonctions
- Pour plus de commodité, vous pouvez désormais définir
IBM Cloud service namecomme valeur pour le paramètre du compteinstance. Si vous choisissez de définir le nom au lieu deCRN, le temps d'initialisation de la classeqiskit_ibm_runtime.IBMRuntimeServiceest légèrement supérieur car la valeurCRNrequise est résolue en interne via les API IBM Cloud.
Corrections des erreurs
- qiskit_ibm_runtime.utils.json.RuntimeEncoder et qiskit_ibm_runtime.utils.json.RuntimeDecoder ont été mises à jour pour gérer les instances de la classe Instruction.
- Correction d'un problème où les ndarrays numpy avec des types d'objets ne pouvaient pas être sérialisés. qiskit_ibm_runtime.utils.json.RuntimeEncoder et qiskit_ibm_runtime.utils.json.RuntimeDecoder ont été mis à jour pour gérer ces ndarrays.
0.1.0rc1
Nouvelles fonctions
- Vous pouvez désormais transmettre le paramètre
instanceau format hub/group/project àqiskit_ibm_runtime.IBMRuntimeService.jobs()pour filtrer les travaux. Actuellement, il n'est pris en charge que pour l'authentification traditionnelle. - Vous pouvez désormais utiliser la méthode qiskit_ibm_runtime.RuntimeJob.interim_results() pour récupérer les résultats intermédiaires du programme d'exécution. Notez que les résultats intermédiaires ne seront disponibles que pendant deux jours.
Mise à niveau
- Par souci de cohérence avec les autres propriétés de la classe qiskit_ibm_runtime.RuntimeJob les méthodes job_id et backend ont été converties en propriétés.
- Lors du téléchargement d'un programme avec
qiskit_ibm_runtime.IBMRuntimeService.upload_program(), la description du programme est désormais facultative. - Lors de l'impression de programmes avec
qiskit_ibm_runtime.IBMRuntimeService.pprint_programs(),backend_requirementssera désormais listé.
Corrections des erreurs
- Correction d'un problème avec l'encodage et le décodage JSON lors de l'utilisation de
ParameterExpressions en conjonction avec Qiskit Terra 0.19.1 et plus. Auparavant, les instancesParameterreconstruites à partir de la sortie JSON avaient des identifiants uniques différents, ce qui les rendait inégales par rapport à l'entrée. Ils disposeront alors des identités de soutien correctes.