Instructions à calibration spécifique
Par défaut, les portes quantiques et les opérations de lecture des ordinateurs quantiques IBM® sont calibrées pour offrir des performances optimales dans les cas d'usage généraux. Certaines charges de travail bénéficient toutefois d'instructions dont les paramètres sont réglés différemment. Par exemple, MidCircuitMeasure (measure_2) est une opération de lecture conçue pour les mesures en milieu de circuit, et des portes cz plus lentes peuvent améliorer les résultats de certains workflows d'atténuation des erreurs.
Les instructions à calibration spécifique se présentent sous deux formes, auxquelles tu accèdes de manières différentes :
-
Instructions avec des signatures différentes : elles sont calibrées en même temps que les instructions standard dans la calibration par défaut, donc tu les ajoutes à tes circuits comme n'importe quelle autre instruction. Elles sont généralement identifiées par un suffixe, comme
measure_2. -
Calibrations alternatives : elles remplacent certaines parties de la calibration par défaut par des paramètres réglés différemment. Tu en sélectionnes une en passant un
calibration_idlorsque tu récupères le backend.
Pour savoir comment les ordinateurs quantiques IBM sont calibrés, consulte Surveiller, calibrer et évaluer les performances.
Instructions avec des signatures différentes
Ces instructions sont calibrées avec le jeu d'instructions standard, donc tu n'as rien de particulier à faire pour récupérer un backend qui les prend en charge. Pour en utiliser une, ajoute l'instruction qiskit-ibm-runtime correspondante à ton circuit.
| Instruction | Description | Cas d'usage typique | Utilisation dans Qiskit | Famille de processeurs |
|---|---|---|---|---|
measure_2 | Impulsion de mesure plus courte | Mesures en milieu de circuit | MidCircuitMeasure (v0.43.0 ou ultérieure) | Heron, Nighthawk r2 |
reset_2 | Impulsion de réinitialisation conditionnelle plus courte qui utilise measure_2 | Réinitialisation de qubit en milieu de circuit | MidCircuitReset (v0.49.0 ou ultérieure) | Heron |
measure_reset | Mesure comme measure qui réinitialise aussi le qubit* | Mesurer et réinitialiser un qubit | MeasureReset (v0.50.0 ou ultérieure) | Heron, Nighthawk r2 |
measure_reset_2 | Mesure plus courte comme measure_2 qui réinitialise aussi le qubit* | Mesurer et réinitialiser un qubit en milieu de circuit | Initialise MeasureReset avec name="measure_reset_2" (v0.50.0 ou ultérieure) | Heron, Nighthawk r2 |
xslow | Porte de basculement de bit (X) de durée prolongée | Post-sélection et atténuation des erreurs. C'est la valeur par défaut de l'option x_pulse_type dans les passes de post-sélection | Toutes |
. | XSlowGate (v0.50.0 ou ultérieure) | Toutes |
* Sur les processeurs Heron, la réinitialisation dépend du résultat de la mesure. Sur les processeurs Nighthawk r2, la réinitialisation est inconditionnelle.
Comme ces instructions ne sont pas prises en charge sur tous les backends, vérifie les instructions prises en charge par le backend avant de les utiliser :
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
Pour trouver tous les backends qui prennent en charge une instruction, utilise :
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Utilise instruction_signatures pour voir les signatures de ces instructions à calibration spécifique :
print(backend.configuration().instruction_signatures)
Calibrations alternatives
Les calibrations alternatives remplacent certaines parties de la calibration par défaut par des paramètres réglés différemment. Chaque calibration alternative possède un identifiant de calibration, et sa disponibilité dépend du QPU.
Pour utiliser une calibration alternative, passe son calibration_id lorsque tu récupères le backend. La cible (target) du backend, et donc le transpileur, utilise les propriétés d'instruction de cette calibration, et les jobs de primitives que tu exécutes sur le backend s'exécutent avec elle.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
Les calibrations alternatives ne sont pas disponibles sur tous les QPU.
Calibrations de portes lentes
Les calibrations de portes lentes règlent la porte cz pour qu'elle soit plus lente que dans la calibration par défaut. Des portes cz plus lentes peuvent améliorer les performances des workflows d'estimation d'observables à grande échelle avec atténuation des erreurs, mais elles augmentent aussi la durée totale de ton circuit, ce qui provoque un peu de décohérence supplémentaire.
Sur les processeurs Heron, les calibrations de portes lentes sont aussi disponibles avec deux modes de contrôle du biais des systèmes à deux niveaux (TLS) :
-
Le biais TLS DC est optimisé pour obtenir les meilleures performances instantanées. La calibration par défaut utilise le biais TLS DC.
-
Le biais TLS AC module le biais TLS pour stabiliser les erreurs de l'appareil dans le temps, ce qui maintient stable le modèle de bruit de l'appareil pendant les workflows longs. Consulte « Noise stabilization » dans Observable Estimation in the Absence of Classical Verification pour plus de détails.
Les processeurs Nighthawk n'utilisent pas de biais TLS, ils disposent donc d'une seule calibration de portes lentes.
| ID de calibration | Famille de processeurs | Biais TLS | Recommandé pour |
|---|---|---|---|
| Aucun (calibration par défaut) | Toutes | DC (Heron) | Usage général. Particulièrement recommandé pour les charges de travail dont les chaînes de bits peuvent être distillées classiquement, comme les circuits piqués et les workflows SQD ou SKQD, et pour les charges de travail avec détection d'erreurs. |
slow_gates_dc | Heron | DC | Workflows d'estimation d'observables à grande échelle, en particulier ceux qui utilisent une atténuation heuristique des erreurs comme l'extrapolation à bruit nul (ZNE). |
slow_gates_ac | Heron | AC | Workflows qui exigent des taux d'erreur stables sur de longues sessions. Fortement recommandé pour les workflows impliquant un apprentissage du bruit, comme l'amplification probabiliste des erreurs (PEA) et l'annulation probabiliste des erreurs (PEC). |
slow_gates | Nighthawk | Sans objet | Workflows d'estimation d'observables qui utilisent l'atténuation des erreurs, comme ZNE, PEA et PEC. |
Par exemple :
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")
# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
Lorsque tu utilises slow_gates_ac, soumets tous les jobs du workflow à une seule session afin qu'ils s'exécutent tant que le bruit de l'appareil reste stable.
Vérifier les durées des portes
Comme les calibrations de portes lentes augmentent les durées de la porte cz, compare ces durées à celles de la calibration par défaut pour comprendre l'effet sur ton circuit. Utilise la cible (target) du backend pour trouver la durée, en secondes, de la porte cz sur une paire de qubits donnée :
default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk
qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)
Comme la cible (target) reflète la calibration sélectionnée, transpile tes circuits pour le backend qui utilise le même calibration_id que celui sur lequel tu prévois d'exécuter.
Étapes suivantes
- Découvre comment exécuter des circuits dynamiques avec des mesures en milieu de circuit.
- Utilise la post-sélection pour filtrer les résultats affectés par un bruit corrélé.
- Découvre comment les ordinateurs quantiques IBM sont surveillés, calibrés et évalués.