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 :
- Si l' PUB e des prises de vue, utilisez cette valeur.
- Si l'argument
shots« keyword » est spécifié dansrun, utilisez cette valeur. - Si cette option est
twirlingactivée, le produit de etnum_randomizationsshots_per_randomization, tel que spécifié par les optionstwirling, est utilisé. - Si
sampler.options.default_shotsest 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é.
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
Gérer les paramètres de réduction des erreurs de découplage dynamique.
dynamical_decouplingDocumentation de l'APIChoix :
True,FalsePar défaut :
FalseChoix :
middle,edgesPar défaut :
middleOptions :
asap,alapPar défaut :alapOptions :
XX,XpXm,XY4Par défaut :XXOptions :
True,FalsePar défaut :False
environmentDocumentation de l'APIListe des balises.
Options : Aucune
Par défaut : Aucun
Options : DEBUG, INFO, WARNING, ERROR, CRITICAL
Par défaut : AVERTISSEMENT
Choix :
True,FalsePar défaut :
False
executionDocumentation de l'APIFaut-il ramener les qubits à l'état fondamental à chaque impulsion?
Choix :
True,FalsePar défaut :
TrueLe délai entre une mesure et le circuit quantique qui suit.
Options : Valeur comprise dans la plage fournie par
backend.rep_delay_rangePar défaut : fourni par
backend.default_rep_delayOptions :
classified,kerneled,avg_kerneledPar 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)
Options à passer lors de la simulation d'un backend
simulatorDocumentation de l'APIOptions : 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
twirlingDocumentation de l'APIRéponses : Vrai, Faux
Par défaut : False
Réponses : Vrai, Faux
Par défaut : False
Valeurs possibles :
auto, nombre entier >= 1Par défaut :
autoValeurs possibles :
auto, nombre entier >= 1Par défaut :
autoChoix :
active,active-circuit,active-accum,allPar 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-runtimed' 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-runtimed' 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
storeinstructions. - Ne fonctionne pas avec les entangleurs autres que Clifford.
Etapes suivantes
- Consultez le guide « Introduction aux options ».
- Pour plus d'informations sur ces
SamplerV2méthodes, consultez la documentation de l'API Sampler. - Choisissez le mode d'exécution dans lequel vous souhaitez exécuter votre tâche.
- Découvrez la gestion du bruit avec Sampler.