Skip to main content
IBM Quantum Platform

IBM Quantum Notes de mise à jour du client Compute


0.49.0 (10 août 2026)

Mise à niveau

  • Les classes d'options du options_models paquet sont désormais basées sur celles de Pydantic BaseModel plutôt que sur dataclass. ( 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 QiskitRuntimeService est désormais disponible sous forme de IBMQuantumComputeService. ( 3070 )

Remarques concernant la dépréciation

  • L'utilisation de stdlib asdict avec les classes d'options issues du options_models paquet est désormais dépréciée, car il s'agit désormais de modèles Pydantic. Utilisez plutôt directement options.model_dump() pour les sérialiser dans un fichier dict. ( 3042 )
  • Cette option post_selection NoiseLearnerV3 est désormais obsolète et sera supprimée dans une prochaine version. ( 3160 )

Nouvelles fonctions

  • Ajout d'une instruction MidCircuitReset et d'un passage de transpileur ConvertToMidCircuitResetAndMeasure . Ce nouveau passage étend les fonctionnalités ConvertToMidCircuitMeasure existantes en remplaçant également les instructions reset non 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 persist facultatif à 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'option persist=False « passing » enregistre les données mises à jour dans un répertoire temporaire, ce qui permet à l'opération de refresh() réussir même lorsque le paquet est installé dans un emplacement en lecture seule (par exemple, un site-packages répertoire système) où le remplacement des fichiers fournis avec le paquet entraînerait sinon une erreur PermissionError. 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 )
  • IBMBackend dispose désormais d'un attribut physical_qubits qui renvoie le nombre de qubits physiques du backend (qubits programmables, qubits de réinitialisation et coupleurs confondus). Cet attribut est également disponible pour FakeBackendV2 les 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'environnement IAM_URL , selon la même convention que les variables GLOBAL_CATALOG_URL GLOBAL_SEARCH_URL et 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ésormais RuntimeDecoder un message clair recommandant de procéder à une mise à niveau vers pip install -U qiskit lorsque 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 depuis qiskit_ibm_runtime.fake_provider mais 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, et FakeStrasbourg. Auparavant, l'appel de ( FakeProviderForBackendV2().backend(name="fake_kingston") ainsi que des sept autres) provoquait une QiskitBackendNotFoundError mê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 est 0.18.0. Les utilisateurs de Executor peuvent désormais faire tourner leurs circuits grâce au "local_c1" groupe « twirling », pris en charge par Samplomatic à partir de la version 0.17.0 et 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.results package; par conséquent, les classes suivantes ont été déplacées vers le package « results » :

    • PauliLindbladError, LayerError, NoiseLearnerResult (qui faisait auparavant partie de qiskit_ibm_runtime.utils.noise_learner_result)
    • EstimatorPubResult (qui faisait auparavant partie de qiskit_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 SamplerV2 tâche avec des valeurs différentes pub.shots selon les PUB est déconseillée. De même, l'exécution d'une EstimatorV2 tâche avec des valeurs différentes pub.precision selon les PUB est déconseillée. ( 2992 )

  • La configuration MeasureNoiseLearningOptions.shots_per_randomization sur une int valeur 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 facultatif partial ( 2884 ) :

    • FalseSi l'indicateur partial est activé, la méthode renverra 0 une valeur en attente jusqu'à ce que le calcul de l'utilisation de la tâche soit terminé.
    • TrueSi l'indicateur partial est 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" dans QiskitRuntimeService et QiskitRuntimeService.save_account(). L'utilisation de passing instance="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_gates paramètre à QiskitRuntimeService.least_busy(), dont le comportement correspond à celui du même paramètre dans QiskitRuntimeService.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 RuntimeJobV2 et RuntimeJobV2.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 FoldRzzAngle passe de transpilation : Rzz les portes dont l'angle rejoignait exactement la +-pi limite (par exemple 3*pi, -3*pi, 7*pi) étaient regroupées en un circuit qui différait de l'original d'une phase globale de pi. Cette étape déduit désormais la parité d'enroulement perdue 2*pi directement 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 de EstimatorV2.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 rzz lors 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éfinir angle_bounds dans la cible du backend sur (0, pi/2) pour la rzz porte, et d'enregistrer un rzz wrapper avec le passage du WrapAngles transcompilateur. Ce mécanisme remplace l'utilisation du IBMDynamicFractionalTranslationPlugin plugin et de la FoldRzzAngle phase de transpilation. ( 2960 )

Autres remarques

  • La bibliothèque utilise désormais la version 2026-04-15 de l'API REST « Qiskit Runtime ». ( 2845 )
  • Le plugin IBMFractionalTranslationPlugin de 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 Executor et QuantumProgram, qui permettent de tirer pleinement parti de l'ensemble des fonctionnalités offertes par le package Samplomatic.

  • Ajout de la classe NoiseLearnerV3 pour 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 de QiskitRuntimeService l'instanciation, avec les noms de service, global_catalog et resource_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.visualization pour 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 pratique ChunkTiming.draw() est également disponible pour le cas d'un seul résultat via job.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__.py désormais également des fichiers et fake_<backend_name>.py pour chaque backend, et ajoute un nouvel argument /--account permettant 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, et FakeStrasbourg. ( 2736 )

Mise à niveau

  • Les RuntimeJobV2.result() méthodes et RuntimeJobV2.wait_for_final_state() acceptent désormais un paramètre facultatif poll_interval , qui permet de personnaliser l'intervalle entre les requêtes adressées au service. La valeur par défaut est désormais 0.5 de secondes pour les tâches hors session, et 0.1 de secondes pour les tâches en session. ( 2762 )

Remarques concernant la dépréciation

  • Le paquet extras « Python » a été refactorisé :

    • common et documentation sont obsolètes et seront supprimés dans v0.48.
    • performance a é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'option dev supplémentaire permettant toujours d'installer une suite de développement complète. ( 2707 )

Corrections des erreurs

  • `GlobalSearchV2Les proxies arguments et ssl_verification de QiskitRuntimeService sont désormais transmis aux requêtes sous-jacentes d' HTTP s adressées aux services, GlobalCatalogV1, et IAMAuthenticator , ce qui permet d'instancier QiskitRuntimeService correctement lors de l'utilisation d'un proxy. ( 2592 )
  • Ajout de la possibilité de spécifier calibration_id et use_fractional_gates lors de l'initialisation d'une session à partir d'un session_id. Cela corrige des bogues connus, à savoir que l'instanciation d'un Session objet via from_id ne préserve ni la valeur de calibration_id définie lors de l'instanciation initiale de l'objet d'origine Session , ni la valeur de use_fractional_gates dé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_scm avait été associé par erreur à ~=8.0 dans la version précédente. La contrainte de version a été >=6.2 ré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 rzz les 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 portes rx et rzz dans 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 QiskitRuntimeService ne é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-runtime est 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'indicateur use_fractional_gates=True vérifie la présence de portes et Rzz (l'une ou l'autre, ou les deux Rx ), alors qu'il ne devrait vérifier que Rzz les portes dans la base du backend. ( 2520 )

Autres remarques

  • La version minimale requise de Qiskit est désormais 2.0.0, car la série 1.x Qiskit 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.calibrations est déconseillée et sera supprimée dans la version qiskit-ibm-runtimev0.45. ( 2574 )

Corrections des erreurs

  • Lors de la création d'objets backend, l'.QiskitRuntimeService vérifiait auparavant uniquement rzz les 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 portes rx et rzz dans 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 QiskitRuntimeService ne é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=True dans QiskitRuntimeService.backend(), IBMInputValueError une exception sera levée. ( 2405 )

  • Le résolveur URL a été mis à jour afin que les canaux ibm_cloud``ibm_quantum_platform et 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, le ibm_cloud canal 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'argument included_channels d'entrée. ( 2492 )

  • Ajout d'un nouvel argument merge_common_instructions de paramètre qui draw_circuit_schedule_timing() , s'il est défini sur True, 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) au fake_provider module.

    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, FakeNighthawk a montré une amélioration de 600 % de la profondeur du circuit par rapport à un backend Heron. ( 2476 )

  • Le qiskit_ibm_runtime.transpiler.passes module a été enrichi d'un nouveau passage de transcompilation : ConvertMidCircMeas. Cette étape détecte les instructions non terminales Measure dans 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èle measure_[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 les proxies attributs verify et de QiskitRuntimeService dans IAMTokenManager lorsqu'il utilise l'authentification cloud (CloudAuth). ( 2344 )

Autres remarques

  • Les méthodes delete_job() obsolètes check_pending_jobs() et, ainsi que la prise en charge de Python 3.9, ont été supprimées. ( 2439 )
  • Ajouté CircuitSchedule comme 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é, le warning niveau des messages de journalisation concernant le nom du compte enregistré (ou le compte par défaut) a été abaissé au info niveau. ( 2445 )

0.43 (14 octobre 2025)

Remarques concernant la dépréciation

  • Ajout d'un nouvel target argument à 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'argument durations .

    La DynamicCircuitInstructionDurations classe, utilisée dans les cycles de planification personnalisés, est obsolète depuis la version qiskit-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 `durations dans 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'argument target . ( 2403 )

  • La classe RuntimeOptions est 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_runtime paquet a été enrichi de deux nouveaux modules : circuit et circuit.library. Ces modules sont conçus pour refléter la structure des modules SDK correspondants qiskit , 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'appellation measure_<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 argument custom_name_mapping et expose les drapeaux add_delay et filter_faulty de l'implémentation originale du noyau. (2316 )

  • QiskitRuntimeService.backends() et QiskitRuntimeService.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 sur True, comme indiqué ci-dessous. Pour l'instant, cette fonction n'est disponible que pour les emplois de type Sampler .

    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 CircuitSchedule pour 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 ConvertISAToClifford prend 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 QiskitRuntimeService est 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, et plans_preference) et les instances disponibles. Si plans_preference cette 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 le ibm_quantum nom du canal a été supprimé et que les ibm_cloud canaux et ibm_quantum_platform pointent tous deux vers la même API, le channel paramètre n'est plus nécessaire. ibm_quantum_platform C'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ètres BaseRuntimeJob , client_params et user_callback, ont été supprimés.

    La classe RuntimeJob a également été supprimée. Toutes les primitives renvoient les travaux sous la forme RuntimeJobV2. 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_times dans QasmBackendConfiguration afin 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 via to_dict(), ce qui correspond au comportement des autres paramètres de temporisation : rep_delay_range et default_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.

    IBMFractionalTranslationPlugin est 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 IBMInputValueError lors de la création d'un Session / lorsque l'instance par défaut était enregistrée ou que le nom de l'instance était transmis / Batch

    De plus, QiskitRuntimeService.least_busy() la fonction renvoie désormais correctement le backend le moins sollicité lorsque le instance paramè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 :

Mise à niveau

  • En raison de l'arrêt de IBM Quantum Platform Classic, le canal ibm_quantum n'est plus pris en charge par qiskit-ibm-runtime. Les comptes et données sauvegardés sur le canal ibm_quantum ne seront pas accessibles. Utilisez plutôt le canal ibm_quantum_platform . Voir notre guide de migration pour plus de détails. (2289 )

Nouvelles fonctions

  • Un nouveau paramètre, tags, a été ajouté à l'initialiseur QiskitRuntimeService et QiskitRuntimeService.save_account() à la méthode. tags peut ê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, ou plans_preference , une erreur sera désormais soulevée lors de l'initialisation. Assurez-vous que les noms de tags et region transmis correspondent exactement à l'instance tags ou region (insensible à la casse). Pour plans_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-runtime avec Python 3.9 est obsolète et sera supprimée dans une prochaine version.

    De plus, qiskit-ibm-runtime supporte 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_preference et tags sont 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 le instance paramètre, qui permet de filtrer les tâches. ( 2325 )

  • QiskitRuntimeService.usage() a été mis à jour pour inclure un usage_remaining_seconds champ. Ce champ indique la différence entre la valeur déclarée usage_limit_seconds ou usage_allocation_seconds (selon la configuration de l'instance) et usage_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 à True pour 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 QiskitRuntimeService a été mis à jour pour utiliser une nouvelle version de l'API. Avec cette nouvelle version, la QiskitRuntimeService.least_busy() méthode a été mise à jour pour tirer parti de la mise BackendsResponseV2 à jour, ce qui la rend nettement plus rapide. ( 2323 )

  • La classe TwirledSliceSpan dispose d'un nouveau membre data_slice_version de 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 pour TwirledSliceSpan.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 BasePrimitive où les primitives instanciées à l'intérieur d'un Session gestionnaire de contexte ou Batch sans le mode paramètre récupéraient le backend depuis le service (par son nom) au lieu d'utiliser le backend transmis à ou Session Batch. Cela pourrait poser des problèmes lorsque le Session backend ou Batch a é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'objet Session backend ou Batch est utilisé directement. ( 2282 )
  • Correction d'un problème dans IBMBackend lequel les modifications apportées aux propriétés, telles que celles concernant basis_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 ExecutionSpans objet. Dans le cadre de ce travail, nous avons également supprimé le data_slice_version champ de TwirledSliceSpan; les tranches « twirled » qui prennent en compte les « pub shots » sont désormais gérées par une nouvelle classe TwirledSliceSpanV2. ( 2347 )

Autres remarques

  • None``max_experimentsLes attributs obsolètes IBMBackend et max_shots ont été supprimés, et la IBMBackend.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() et FakeBackendV2 , désormais obsolètes IBMBackend , 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 un PUB qui n'est pas contenu dans le span. ( 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 ou QiskitRuntimeService.backends() n'était pas appelée en premier.
  • Correction d'un bogue où si use_fractional_gates est 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 rzz se situant en dehors de la plage autorisée de 0 à π/2\pi/2 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 existants ibm_quantum (désormais obsolète) et ibm_cloud . Par défaut, ibm_quantum_platform est sélectionné lorsqu'aucun canal n'est spécifié. Ce nouveau canal se connecte à la nouvelle API IBM Quantum Platform et est destiné à remplacer ibm_cloud. Entre-temps, le canal ibm_cloud sera redirigé vers la nouvelle API, mais il est déconseillé de continuer à l'utiliser.

    • La instance valeur 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_cloud les 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 et QiskitRuntimeService.backends() ont été mises à jour pour accepter un instance passé explicitement lors de la récupération des backends : service.backend(name="...", instance="...").

    • De nouveaux paramètres, region, et plans_preference, ont été ajoutés à l'initialiseur et QiskitRuntimeService.save_account() à la QiskitRuntimeService méthode. Ils permettent de donner la priorité à certaines instances sur la nouvelle plateforme (etibm_quantum_platform, à titre temporaire, ibm_cloud aux chaînes) sans avoir à indiquer explicitement l' CRN. Plus précisément :

      • region: Définit une préférence de région. us-east ou eu-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 region est enregistré sous us-east, seules les instances de us-east seront vérifiées. Si l'option plans_preference est 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 dans plans_preference doivent correspondre exactement aux noms de l'API (insensible à la casse).

    • Le instance paramètre d'entrée de QiskitRuntimeService a été étendu afin d'accepter de nouveaux types d'entrée pour les ibm_quantum_platform canaux et ibm_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 les ibm_quantum_platform canaux et ibm_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 private sous EnvironmentOptions est maintenant supportée sur les canaux ibm_cloud et ibm_quantum_platform (nouvelle plateforme Quantum IBM ). Lorsque cette option est définie sur True, 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() dans target() 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 » EstimatorV2 sont 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_new a été ajouté aux classes Batch et Session . 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 est True , car c'est le cas pour la plupart des workflows destinés aux utilisateurs. Cependant, des méthodes telles que Session.from_id() permettent de le configurer de manière False à é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 Optional pour le backend paramètre dans Session et Batch. ( 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 )
  • IBMInputValueError hérite désormais de ValueError, en plus de la classe mère existante IBMError. Certaines fonctions de validation qui soulevaient auparavant des exceptions de type ValueError soulèvent désormais des exceptions de type IBMInputValueError . (2250 )

0.38.0 (15 avril 2025)

Remarques concernant la dépréciation

  • RuntimeJob est désormais obsolète et sera supprimé au plus tôt trois mois après la publication de cette version. RuntimeJob a été remplacé par RuntimeJobV2 dans 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 que status() la première renvoie une chaîne de caractères au lieu de l'énumération de JobStatus Qiskit. ( 2170 )
  • Les portes d'impulsion n'étant plus prises en charge, les IBMBackend méthodes defaults() et FakeBackendV2 sont 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_quantum est obsolète et sera supprimée le 1er juillet. Après cette date, ibm_cloud, ibm_quantum_platform, et local seront les seuls canaux valables. Pour vous aider à migrer vers le nouveau site IBM Quantum Platform sur le canal ibm_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() et TwirledSliceSpan.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'environnement callback est obsolète, de même que les paramètres client_params et user_callback dans BaseRuntimeJob. (2143 )

0.37.0 (13 mars 2025)

Remarques concernant la dépréciation

  • Les attributs IBMBackend , max_shots et max_experiments, ainsi que la propriété max_circuits ont 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-runtime est 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 sites pulse et channel sont mis en évidence ci-dessous :

    • Channel dans IBMBackend ont été supprimées.
    • La classe de configuration du backend PulseBackendConfiguration a été supprimée, de sorte que tous les backends seront désormais renvoyés sous la forme QasmBackendConfiguration.
    • PulseDefaults (backend defaults) peuvent toujours être récupérés, mais ils ne sont plus nécessaires lors de la création d'un backend Target.

    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 dans 0.28.0, les tâches renvoyées par jobs() utiliseront désormais par défaut RuntimeJobV2. ( 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-aer provoquait une erreur d'importation. (2144 )

0.36.0 (14 février 2025)

Mise à niveau

  • La version minimale requise de qiskit est 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_model sur les simulateurs de nuages a été supprimée. Cette option fonctionnera toujours en mode de test local.
    • Les propriétés NoiseLearnerResult , generators et rates ont é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 )

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-runtime ne 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 utilise backend.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 IBMInputValueError sera é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 classe PrimitiveJob de Qiskit tout en y ajoutant les méthodes et propriétés trouvées dans BaseRuntimeJob. 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, FakeFez et FakeMarrakesh, 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_evs et draw_zne_extrapolators pour visualiser les données des expériences utilisant ZNE. Ajout de EstimatorPubResult avec les méthodes draw_zne_evs et draw_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_model est désormais transmise à BackendSamplerV2 en 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 ).

    SamplerV2 De même, l'option execution.meas_type est désormais convertie en meas_level options et meas_return sous run_options du BackendSamplerV2 si celui-ci prend en charge run_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_pubs a été ajoutée. La fonction vérifie que les paramètres rzz sont compris entre 0 et pi/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 plugin IBMFractionalTranslationPlugin de traduction pour le transpiler et d'une passe. Ce plugin est automatiquement appliqué aux backends récupérés via l'opt-in use_fractional_gates , et la passe de repliement est ajoutée lorsque la cible du backend inclut la RZZ porte.

    La nouvelle passe modifie le circuit quantique d'entrée, de sorte que toutes les portes RZZ du 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.0 ont été supprimées.

    • Le passage d'un backend sous forme de chaîne dans Session, Batch, Sampler, et Estimator n'est plus valide. Utilisez plutôt l'objet backend actuel.
    • Auparavant, le fait de passer un backend comme mode dans SamplerV2 ou EstimatorV2 exé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.
    • Service n'est plus un paramètre valide dans Session et Batch. (2027 )

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 )
  • CouplingMap a été ajouté à RuntimeEncoder afin de pouvoir désormais être transmis au NoiseLearner programme. ( 2026 )
  • Le comportement de use_fractional_gates l'argument de QiskitRuntimeService.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éfinir use_fractional_gates sur None permettra 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.10 pour éviter qu'une régression n'interrompe le processus de construction. (2049 )

Autres remarques

  • Les fichiers requirements.txt et setup.py ont été supprimés en faveur d'une nouvelle approche de gestion des dépendances utilisant pyproject. 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 )

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 plusieurs LayerError objets. Nous avons également ajouté une méthode draw_swarm() pratique permettant d'appeler la fonction de dessin sur une instance donnée. ( 1988 )
  • Ajout TwirledSliceSpand'un ExecutionSpan à 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, et FakeRueschlikon ont é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 plusieurs ExecutionSpans objets. Nous avons également ajouté une méthode draw() 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 option ExecutionSpan permettant le traitement par lots avec deux tranches. ( 1982 )

  • Chacune des SamplerV2classes, EstimatorV2, et noise_learner.NoiseLearner dispose désormais d'une backend() 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.0 ont été supprimées.

    • optimization_level n'est plus une option valable pour EstimatorV2.
    • Les méthodes de travail interim_results() et stream_results() ont été supprimées. (1965 )
  • Le paramètre channel_strategy dans QiskitRuntimeService a été supprimé. Pour continuer à utiliser Q-CTRL dans votre flux de travail, veuillez explorer les options suivantes :


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 rzz est 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_url est obsolète. Utilisez plutôt default_runtime_url_resolver . (1914 )

  • Le paramètre channel_strategy est 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 :

  • Dans une prochaine version, RuntimeJob.status() sera renvoyé sous forme de chaîne de caractères au lieu d'une instance de JobStatus. (1933)

Nouvelles fonctions

  • Ajout de nouvelles méthodes Session.usage(), Batch.usage(), et Job.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 ConvertISAToClifford pour convertir les portes d'un circuit en portes de Clifford. (1887 )

  • Ajout url_resolver d'un paramètre facultatif au QiskitRuntimeService constructeur pour permettre la génération personnalisée de l'API Qiskit Runtime URL en fonction des valeurs fournies urlpour, instance et private_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_gates pour QiskitRuntimeService.backend() et QiskitRuntimeService.backends() peut maintenant être None. 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.0 ont é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 Session a été remplacée par mode
    • La spécification d'options sans la structure complète du dictionnaire n'est plus prise en charge
    • Job.program_id() a été remplacé par Job.primitive_id()
    • Service.run() et Session.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 par backend() (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_model est désormais obsolète pour les travaux exécutés sur des appareils réels. noise_model reste une option acceptable lorsque l'on utilise le mode de test local. (1892 )

Nouvelles fonctions

  • Nous avons ajouté de nouvelles classes, ExecutionSpan et ExecutionSpanSet. 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 private sous EnvironmentOptions. (1888 )
  • Ajout de l'option fallback aux extrapolateurs ZNE. (1902 )

Corrections des erreurs

  • Portage de la méthode Noise_model.from_dict() à partir de qiskit-aer car elle a été supprimée dans 0.15.0. (1890 )
  • Revenir sur une modification précédente de backend.target où 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

  • ResilienceOptionsV2 a un nouveau champ layer_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 sur layer_noise_model. (1858 )

Mise à niveau

  • Les primitives « V1 » et SamplerV1 EstimatorV1 ont été entièrement supprimées. Consultez l' introduction aux primitives pour découvrir comment utiliser les primitives « V2 ». ( 1857 )
  • Le paramètre service est désormais requis dans Session.from_id(). (1868 )

0.27.1 (12 août 2024)

Nouvelles fonctions

  • Ajout d'une logique pour encoder et décoder PauliLindbladError et LayerError. (1853 )

0.27.0 (08/08/2024)

Nouvelles fonctions

  • Ajout des classes PauliLindbladError et LayerError pour 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, et SamplerV2 a été déprécié. Utilisez plutôt l'objet backend actuel. (1804 )
  • Le fait de passer un backend comme mode dans SamplerV2 et EstimatorV2 exécute actuellement un travail en mode travail même s'il se trouve à l'intérieur d'un gestionnaire de contexte Session ou Batch . Ce comportement est obsolète et, dans une prochaine version, la session/le lot aura la priorité. (1816 )
  • L'introduction de service dans Session, Batch a été supprimée. Le paramètre service n'est plus nécessaire car le service peut être extrait du backend. (1826 )
  • Comme les modules backend de qiskit.providers.models , y compris BackendProperties et BackendConfiguration , sont obsolètes dans Qiskit 1.2, ils ont été copiés dans qiskit-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, et check_faulty ont é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 )

  • QiskitRuntimeLocalService a é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 valide QiskitRuntimeService .

    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 NoiseLearner et des fonctionnalités connexes, telles que NoiseLearnerOptions et NoiseLearnerResults. (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_mitigation ou pec_mitigation sont définis sur True lors 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_level dans EstimatorV2 est 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(), et qiskit_ibm_runtime.RuntimeJob.stream_results() sont désormais tous obsolètes. (1776 )

Nouvelles fonctions

  • Ajout des méthodes backend, backends, et least_busy à QiskitRuntimeLocalService. (1764 )
  • Ajout d'une propriété instance à BaseRuntimeJob qui renvoie l'instance où le travail a été exécuté. (1771 )
  • default_shots sont désormais une option prise en charge lors de l'utilisation de EstimatorV2 en 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

  • name sera désormais un paramètre obligatoire dans la fonction backend(). backend() ne renverra plus le premier backend parmi tous les backends si name n'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ée qiskit_ibm_runtime.QiskitRuntimeService._run().

    qiskit_ibm_runtime.Session.run() est obsolète et sera remplacée par une méthode privée qiskit_ibm_runtime.Session._run().

    qiskit_ibm_runtime.RuntimeJob.program_id() est obsolète et sera remplacé par qiskit_ibm_runtime.RuntimeJob.primitive_id(). (1238 )

  • backend L'argument de Sampler et Estimator est désormais obsolète. Veuillez utiliser mode à la place. session L'argument de Sampler et Estimator est également obsolète. Veuillez utiliser mode à la place. ( 1556 )

  • qiskit_ibm_runtime.QiskitRuntimeService.get_backend() est obsolète. Veuillez qiskit_ibm_runtime.QiskitRuntimeService.backend() utiliser ceci à la place. FakeBackendLes backends fictifs « V1 », ainsi que, FakeProvider sont également en voie d'être abandonnés au profit des backends fictifs « V2 » et FakeProviderForBackendV2. ( 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ètre mode peut ê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 sur True, 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 fichier QiskitRuntimeService.

    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.EstimatorOptions pour activer la méthode d'atténuation des erreurs dite « Probabilistic Error Amplification » (PEA) pour vos tâches d'estimation. ( 1728 )

  • La version 1.1 de Qiskit est maintenant supportée et requise. (1700 )

Mise à niveau

  • QiskitRuntimeService.backends() La fonction « now » renvoie désormais toujours une nouvelle IBMBackend instance, 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'instances RuntimeJobV2 . (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_cycles options et coupling_map dans PadDynamicalDecoupling. 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 par sequence_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_target a é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

Nouvelles fonctions

  • Les impressions Options et OptionsV2 seront désormais formatées sous forme de tableau. (1490 )
  • Ajouter block_ordering_callable l'argument à BlockBasePadder, PadDynamicalDecoupling, PadDelay, et BaseDynamicCircuitAnalysis. 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 le block_ordering_callable programme. Cet argument s'explique par le fait que, pour certaines familles de circuits, la fonction block_order_op_nodes existante 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 )
  • SamplerV2 prend 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

  • RuntimeJobV2 ne 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_qubits l'indicateur facultatif du constructeur pour PadDynamicalDecoupling. 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_provider ou 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=0 dans EstimatorV2 é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 à RuntimeDecoder d'importer des classes arbitraires. (1527 )

0.21.1

Corrections des erreurs

  • Correction d'un problème où SamplerV1 et EstimatorV1 ne 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, backend sera un paramètre obligatoire pour qiskit_ibm_runtime.Sampler et qiskit_ibm_runtime.Estimator si session n'est pas spécifié, même en cas d'utilisation du canal ibm_cloud .

    Il s'agira également d'un paramètre obligatoire pour qiskit_ibm_runtime.Session et qiskit_ibm_runtime.Batch.

Corrections des erreurs

  • Correction d'un problème avec IBMBackend.target qui 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_barrier au 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 /sessions qui permet différents modes d'exécution. Le mode Batch est désormais pris en charge par Batch, 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 Session et Batch créés à partir de qiskit-ibm-runtime avant cette version ne seront plus pris en charge après le 31 mars 2024. Veuillez mettre à jour votre version de qiskit-ibm-runtime dè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 de qiskit-ibm-runtime dè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 InstructionDurations est désormais également requise pour le constructeur de PadDelay.

0.19.1

Mise à niveau

  • Étendre DynamicCircuitInstructions.from_backend() pour extraire et patcher les durées des objets BackendV1 et BackendV2 . Ajoutez également DynamicCircuitInstructions.from_target() pour utiliser un objet Target à la place.

Corrections des erreurs

  • Corriger le correctif de DynamicCircuitInstructions pour les instructions dont la durée n'est pas exprimée en unités de dt.
  • Correction d'un problème avec la fonction qpy.dump() , lorsque l'indicateur use_symengine était défini sur un objet véridique évalué à True mais qui n'était pas en réalité le booléen True , 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 de qiskit_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 champ params par 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 error

    si 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-ctrl est utilisée alors que q-ctrl n'est pas transmis en tant que channel_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 de qiskit-ibm-provider.

  • Une erreur sera soulevée lors de l'initialisation si q-ctrl est transmis en tant que channel_strategy et 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éthode results() est appelée.

Remarques concernant la dépréciation

  • L'utilisation du fichier ~/.qiskit/qiskitrc.json pour 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 backend de la fonction from_id() est obsolète car les sessions ne prennent pas en charge plusieurs backends. En outre, le paramètre service n'est plus facultatif.
  • Les entrées circuit_indices et observable_indices pour l' Estimateur et l' Échantillonneur ont été complètement supprimées.

Autres remarques

  • Ajout du code de migration pour exécuter backend.run dans 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 instance sé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 Session n'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ù shots passé 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 ce channel_strategy seront 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=True dans QiskitRuntimeService.save_account().
  • Ajout d'une nouvelle méthode Session.from_id qui 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 default au paramètre channel_strategy de 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 par default.
  • 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 datetime pour récupérer les propriétés à partir d'une date passée.
  • Les options noise_factors et extrapolator de qiskit_ibm_runtime.options.ResilienceOptions sont désormais définies par défaut sur None , à moins que resilience_level ne soit défini sur 2. Seules les options relatives au niveau de résilience seront définies. Ainsi, lorsque vous utilisez resilience_level 2, noise_factors sera toujours défini par défaut comme (1, 3, 5) et extrapolator comme LinearExtrapolator. En outre, les options dont la valeur est None ne 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_quantum puisque le canal ibm_cloud n'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(). Si channel_strategy est 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_amplifier sont 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_tags d'un travail.
  • Si instance est fourni comme paramètre à qiskit_ibm_runtime.QiskitRuntimeService, il est utilisé comme filtre dans QiskitRuntimeService.backends(). Si instance n'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


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'adresse params . 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 CouplingMap lorsqu'elles sont fournies en tant qu'option du simulateur. Auparavant, nous avons soutenu, par exemple

    options.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 backend pour transmettre un nom ou une instance de backend au lieu du paramètre session (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 backend au lieu de session.

Remarques concernant la dépréciation

  • Le passage d'un nom ou d'une instance de backend au paramètre session lors 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ètre backend à la place. Vous pouvez continuer à transmettre une session en utilisant le paramètre session .

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 transpilation et environment .

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, et skip_transpilation ont été supprimés de l' échantillonneur.

    De même, les arguments obsolètes circuits, observables, parameters, service, et skip_transpilation ont été supprimés de l' Estimateur.

    Dans QiskitRuntimeService, le paramètre auth a été supprimé. En outre, les paramètres instance, job_tags et max_execution_time ont été supprimés de qiskit_ibm_runtime.QiskitRuntimeService.run(). Ils peuvent être transmis par l'intermédiaire de RuntimeOptions .

    Le site RuntimeOptions backend_name n'est plus pris en charge. Veuillez utiliser backend à la place.

Corrections des erreurs

  • Correction d'un bogue où la récupération d'un travail depuis un backend sans les options noise_model ou seed_simulator entraî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'environnement QISKIT_RUNTIME_SKIP_OPTIONS_VALIDATION est 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 dans resilience_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 et qiskit_ibm_runtime.RuntimeOptions. Les valeurs saisies par l'utilisateur pour la session max_time seront envoyées au serveur en tant que session_time. Cela permet aux utilisateurs de spécifier des valeurs différentes pour les sessions max_time et max_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é comme options = {"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_id et backend, 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_level et resilience_level n'étaient pas définies correctement.
  • Correction d'un problème qui faisait que si aucun backend n'était sélectionné, optimization_level et resilience_level étaient remplacés par défaut par None, 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_name qui 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

Corrections des erreurs

  • ECRGate et CZGate ont été ajoutés au constructeur Target pour 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 Traceback du message.

0.9.0

Mise à niveau

  • Modification des valeurs par défaut de optimization_level et de resilience_level dans qiskit_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, alors optimization_level est défini à 1 et resilience_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. Voir qiskit_ibm_runtime.options.ResilienceOptions pour toutes les options disponibles.
  • Vous pouvez désormais spécifier une paire de décodeurs de résultats pour le paramètre result_decoder de 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_level a été modifiée de 0 à 1. En outre, l'option par défaut optimization_level a été modifiée de 1 à 3.

Remarques concernant la dépréciation

  • Les options de transpilation translation_method et timing_constraints sont obsolètes.

Corrections des erreurs


0.7.0

Nouvelles fonctions

  • qiskit_ibm_runtime.Options accepte 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 à jour qiskit_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.Options accepte désormais max_execution_time comme option de premier niveau et job_tags comme option sous environment. qiskit_ibm_runtime.RuntimeOptions a é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.txt a été mis à jour en conséquence.

Remarques concernant la dépréciation

  • Qiskit Runtime les programmes torch-train, torch-infer, sample-expval, sample-program, et quantum_kernal_alignment ont é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ètre instance à l'intérieur du paramètre options .
  • Le fait de passer job_tags et max_execution_time comme paramètres à qiskit_ibm_runtime.QiskitRuntimeService a été supprimé. Veuillez les faire passer à l'intérieur de options.

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 SamplerResult avec SamplerResult.quasi_dists en tant que liste de QuasiDistrbution. Il avait l'habitude de définir une liste de dict comme SamplerResult.quasi_dists, mais il ne suivait pas la conception de SamplerResult.
  • La classe RuntimeJob est maintenant une sous-classe de qiskit.providers.Job.

Remarques concernant la dépréciation


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.Options est 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 channel peut 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 RuntimeJobMaxTimeoutError lorsqu'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, et max_time des constructeurs :class:` qiskit_ibm_runtime.Sampler et qiskit_ibm_runtime.Estimator ont été supprimés. Vous pouvez utiliser la classe qiskit_ibm_runtime.Options pour spécifier les paramètres, et max_time peut ê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 valeur limit indiqué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, et parameter_values, ainsi que service aux constructeurs de Sampler et Estimator a également été déprécié. Les entrées peuvent maintenant être transmises à la méthode run() des classes primitives, et service peut être transmis à qiskit_ibm_runtime.Session lors du démarrage d'une nouvelle session.

  • Le passage de skip_transpilation aux constructeurs :class:` qiskit_ibm_runtime.Sampler et qiskit_ibm_runtime.Estimator a été déprécié. Vous pouvez utiliser la classe qiskit_ibm_runtime.Options pour 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 de qiskit-ibm-runtime n'est pas compatible avec 0.20.0 ou une version antérieure de qiskit-terra.

0.6.0

Mise à niveau

  • Lors de la migration depuis qiskit-ibmq-provider , les informations d'identification du canal ibm_quantum seront 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éfaut ibm_quantum .

    Ex. :

    from qiskit_ibm_runtime import QiskitRuntimeService
    service = QiskitRuntimeService()
  • IBMEstimator qui était dépréciée auparavant est maintenant supprimée. Utiliser la classe des estimateurs à l'avenir.

  • IBMRuntimeService qui é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_after et created_before. Ils peuvent être utilisés pour filtrer les travaux par date de création en heure locale.

  • Les paramètres circuit_indices et observable_indices lors de l'appel à estimator sont 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ètres circuits et observables .

    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_indices et observable_indices lors de l'appel à estimator sont 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ètres circuits et observables .

    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ètre session_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 est True, ce qui signifie que les emplois seront renvoyés par ordre décroissant en fonction de la date de création.

  • RuntimeJobTimeoutError est désormais déclenchée lorsque l'adresse timeout définie dans result() ou wait_for_final_state() expire.

  • Lors de l'initialisation de QiskitRuntimeService et qu'un jeton invalide est utilisé, IBMNotAuthorizedError sera levé au lieu de RequestsApiError.

  • IBMSampler qui é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 QubitProperties appelée IBMQubitProperties et exposera l'anharmonicité en plus de t1, t2 et la fréquence déjà exposée par la classe QubitProperties .


0.4.0

Mise à niveau

  • IBMRuntimeService a été renommée QiskitRuntimeSerice. La classe IBMRuntimeService est 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="...")
  • IBMEstimator est 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], ...)
  • IBMSampler est 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 classes IBMEstimator et IBMSampler sont 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 channel a été ajouté à la classe qiskit_ibm_runtime.IBMRuntimeService ainsi qu'aux méthodes save_account(), saved_accounts() et delete_account(). Il peut être défini sur ibm_quantum ou ibm_cloud pour s'authentifier sur l'un des deux canaux différents par lesquels le service Qiskit Runtime est actuellement offert. channel remplace le paramètre auth qui est désormais obsolète.

Remarques concernant la dépréciation

  • Le paramètre auth de la classe qiskit_ibm_runtime.IBMRuntimeService et des méthodes telles que save_account(), saved_accounts() et delete_account() est désormais obsolète et sera supprimé dans une prochaine version. Veuillez utiliser le nouveau paramètre channel à la place.

Corrections des erreurs

  • Correction du problème #291 où le passage d'un seul QuantumCircuit aux primitives de l'échantillonneur ou de l'estimateur provoquait une erreur.

0.2.0

Nouvelles fonctions

  • qiskit_ibm_runtime.IBMEstimator et qiskit_ibm_runtime.IBMSampler vous permettent désormais d'interagir facilement avec les programmes primitifs estimator et sampler . 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


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.BackendV2 et permet d'accéder plus facilement à la configuration d'un backend, par exemple :

    # BackendV1:
    backend.configuration().n_qubits
    
    # BackendV2:
    backend.num_qubits

    Le 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 est qiskit_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 instance lors de l'initialisation qiskit_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
  • 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 classe qiskit_ibm_runtime.RuntimeOptions en 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 name comme valeur pour le paramètre du compte instance . Si vous choisissez de définir le nom au lieu de CRN, le temps d'initialisation de la classe qiskit_ibm_runtime.IBMRuntimeService est légèrement supérieur car la valeur CRN requise est résolue en interne via les API IBM Cloud.

Corrections des erreurs


0.1.0rc1

Nouvelles fonctions

  • Vous pouvez désormais transmettre le paramètre instance au 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_requirements sera 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 instances Parameter reconstruites à 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.
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.