Skip to main content
IBM Quantum Platform

Définir les options de l'échantillonneur

  • Le code présenté sur cette page a été développé en tenant compte des exigences suivantes. Nous vous recommandons d'utiliser ces versions ou des versions plus récentes.

    qiskit[all]~=2.5.1
    qiskit-ibm-runtime~=0.47.0
    

Vous pouvez utiliser les options pour personnaliser la primitive « Sampler ». Cette section explique comment définir les options de base d' IBM Quantum. Si l'interface de la méthode run() des primitives est commune à toutes les implémentations, leurs options, elles, ne le sont pas. Consultez les documentations d'API correspondantes pour plus d'informations sur les options qiskit_aer.primitives.SamplerV2 et qiskit.primitives.BackendSamplerV2 .


Définir les options de l'échantillonneur

Vous pouvez définir des options lors de l'initialisation de Sampler, après l'avoir initialisé, ou encore mettre à jour ces options une fois Sampler initialisé. Pour savoir comment utiliser ces techniques, consultez la rubrique « Introduction aux options ».

De plus, vous pouvez définir la shots valeur dans la run() méthode, comme décrit dans la section suivante.

Méthode Run()

Les seules valeurs que vous pouvez transmettre à run() sont celles définies dans l'interface. C'est-à-dire. shots Cela remplace toute valeur définie pour default_shots lors de l'exécution en cours.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()

pass_manager = generate_preset_pass_manager(
    optimization_level=3, backend=backend
)

transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)

sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)

Output:

<RuntimeJobV2('d9mq9qo8csec73fagtb0', 'sampler')>

Cas particuliers

Tentatives

La SamplerV2.run méthode accepte deux arguments : une liste de PUB, dont chacun peut spécifier une valeur propre à l' PUB e pour les « shots », et un argument clé « shots ». Ces valeurs de prise font partie de l'interface d'exécution de l'échantillonneur et sont indépendantes des options de l'échantillonneur d'exécution. Elles ont priorité sur toutes les valeurs spécifiées en tant qu'options afin de respecter l'abstraction Sampler.

Toutefois, si shots n'est spécifié ni par aucune option « PUB », ni dans l'argument «run» (ou si tous ces arguments sont vides None), alors la valeur «shots» définie dans les options est utilisée, notamment default_shots.

En résumé, voici l'ordre de priorité pour définir les prises dans le Sampler, pour toute l' PUB :

  1. Si l' PUB e des prises de vue, utilisez cette valeur.
  2. Si l'argument shots « keyword » est spécifié dans run, utilisez cette valeur.
  3. Si cette option est twirling activée, le produit de et num_randomizations shots_per_randomization, tel que spécifié par les options twirling , est utilisé.
  4. Si sampler.options.default_shots est spécifié, utilisez cette valeur.

Ainsi, si des coups sont spécifiés à tous les emplacements possibles, c'est celui qui a la priorité la plus élevée (les coups spécifiés dans l' PUB ) qui est utilisé.

Note

Bien que les priorités définies dans l' PUB et dans run aient une priorité plus élevée, la tâche échoue si twirling est activé et que le produit de num_randomizations et shots_per_randomization est inférieur à la shots valeur de. num_randomizationsDans ce scénario, SamplerV2 n'est pas en mesure de répartir les prises de vue entre les éléments spécifiés.

Exemple :

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()

pass_manager = generate_preset_pass_manager(
    optimization_level=3, backend=backend
)

transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)


# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})

# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000

# This does bulk update.  The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
    default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)

# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)

Output:

<RuntimeJobV2('d9mq9snurbec73e67ah0', 'sampler')>

Options disponibles

Le tableau suivant présente les options de la dernière version de qiskit-ibm-runtime. Pour consulter les versions antérieures de cette option, rendez-vous sur la qiskit-ibm-runtime documentation de l'API et sélectionnez une version antérieure.

  • Le nombre total de tirs à utiliser par circuit et par configuration.

    Valeurs possibles : nombre entier >= 0

    Par défaut : Aucun

    default_shots Documentation de l'API

  • Gérer les paramètres de réduction des erreurs de découplage dynamique.

    dynamical_decoupling Documentation de l'API

    • Choix : True, False

      Par défaut : False

    • Choix : middle, edges

      Par défaut : middle

    • Options : asap, alap Par défaut : alap

    • Options : XX, XpXm, XY4 Par défaut : XX

    • Options : True, False Par défaut : False

  • environment Documentation de l'API

    • Liste des balises.

      Options : Aucune

      Par défaut : Aucun

    • Options : DEBUG, INFO, WARNING, ERROR, CRITICAL

      Par défaut : AVERTISSEMENT

    • Choix : True, False

      Par défaut : False

  • execution Documentation de l'API

    • Faut-il ramener les qubits à l'état fondamental à chaque impulsion?

      Choix : True, False

      Par défaut : True

    • Le délai entre une mesure et le circuit quantique qui suit.

      Options : Valeur comprise dans la plage fournie par backend.rep_delay_range

      Par défaut : fourni par backend.default_rep_delay

    • Options : classified, kerneled, avg_kerneled

      Par défaut : classified

  • Définit la durée maximale d'exécution d'une tâche, en secondes. Pour plus de détails, consultez le guide sur la durée maximale d'exécution.

    Valeurs possibles : nombre entier exprimant le nombre de secondes[,] compris entre 1 et 10 800

    Valeur par défaut : 10800 (3 heures)

    max_execution_time Documentation de l'API

  • Options à passer lors de la simulation d'un backend

    simulator Documentation de l'API

    • Options : liste des noms de portes de base vers lesquelles effectuer le dépliage

      Par défaut : l'ensemble de toutes les portes de base prises en charge par le simulateur Qiskit Aer

    • Choix : Liste des interactions dirigées entre deux qubits

      Par défaut : Aucune, ce qui signifie qu'il n'y a aucune contrainte de connectivité (connectivité totale).

    • Options : Qiskit Aer NoiseModel ou sa représentation

      Par défaut : Aucun

    • Valeurs possibles : nombre entier

      Par défaut : Aucun

  • Options de rotation

    twirling Documentation de l'API

    • Réponses : Vrai, Faux

      Par défaut : False

    • Réponses : Vrai, Faux

      Par défaut : False

    • Valeurs possibles : auto, nombre entier >= 1

      Par défaut : auto

    • Valeurs possibles : auto, nombre entier >= 1

      Par défaut : auto

    • Choix : active, active-circuit, active-accum, all

      Par défaut : active-accum

  • Options expérimentales, lorsqu'elles sont disponibles.


Compatibilité des fonctions

Certaines fonctionnalités d'exécution ne peuvent pas être utilisées conjointement dans une même tâche. Cliquez sur l'onglet correspondant pour afficher la liste des fonctionnalités incompatibles avec celle que vous avez sélectionnée :

  • Incompatible avec :

    • Découplage dynamique

    Remarques supplémentaires :

    • La rotation des portes peut être appliquée aux circuits dynamiques, mais uniquement aux portes qui ne se trouvent pas à l'intérieur de blocs conditionnels. La rotation des mesures ne peut s'appliquer qu'aux mesures de terminaison.
    • Compatible avec les portes fractionnaires lors de l'utilisation qiskit-ibm-runtime d' v0.42.0. ou d'une version ultérieure.
  • Incompatible avec :

    • Circuits dynamiques
  • Incompatible avec :

    • Tourner la barrière

    Compatible avec les circuits dynamiques lors de l'utilisation qiskit-ibm-runtime d' v0.42.0. ou d'une version ultérieure.

  • Incompatible avec :

    • Portes fractionnaires
    • Étirements

    Remarques supplémentaires :

    • La rotation des portes peut être appliquée aux circuits dynamiques, mais uniquement aux portes qui ne se trouvent pas à l'intérieur de blocs conditionnels.
    • La rotation des mesures ne peut s'appliquer qu'aux mesures en point d'extrémité.
    • Le fait de modifier les mesures est contraire aux store instructions.
    • Ne fonctionne pas avec les entangleurs autres que Clifford.

Etapes suivantes

Recommandations
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.