מדידת ביצועים בזמן אמת לבחירת Qubit
הערכת זמן שימוש: 4 דקות על מעבד Eagle r2 (הערה: זוהי הערכה בלבד. זמן הריצה שלך עשוי להשתנות.)
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-experiments qiskit-ibm-runtime rustworkx
# This cell is hidden from users – it disables some lint rules
# ruff: noqa: E722
רקע
מדריך זה מראה כיצד להריץ ניסויי אפיון בזמן אמת ולעדכן מאפייני Backend לשיפור בחירת Qubit בעת מיפוי מעגל ל-Qubit הפיזיים במעבד קוונטי. תלמדו על ניסויי האפיון הבסיסיים המשמשים לקביעת מאפייני המעבד הקוונטי, כיצד לבצע אותם ב-Qiskit, וכיצד לעדכן את המאפיינים השמורים באובייקט ה-Backend המייצג את המעבד הקוונטי על בסיס ניסויים אלה.
המאפיינים המדווחים על ידי המעבד הקוונטי מתעדכנים פעם ביום, אך המערכת עשויה לסטות מהר יותר מהזמן שבין העדכונים. זה יכול להשפיע על אמינות שגרות בחירת ה-Qubit בשלב ה-Layout של מנהל ה-Pass, כיוון שהן ישתמשו במאפיינים מדווחים שאינם מייצגים את המצב הנוכחי של המעבד הקוונטי. מסיבה זו, ייתכן שכדאי להקדיש זמן מעבד קוונטי לניסויי אפיון, שניתן להשתמש בהם לאחר מכן לע דכון מאפייני המעבד הקוונטי המשמשים את שגרת ה-Layout.
דרישות
לפני תחילת מדריך זה, וודאו שיש לכם את הדברים הבאים מותקנים:
- Qiskit SDK v2.0 או גרסה מאוחרת יותר, עם תמיכה ב-visualization
- Qiskit Runtime v0.40 או גרסה מאוחרת יותר (
pip install qiskit-ibm-runtime) - Qiskit Experiments v0.12 או גרסה מאוחרת יותר (
pip install qiskit-experiments) - ספריית גרפים Rustworkx (
pip install rustworkx)
הגדרה
from qiskit_ibm_runtime import SamplerV2
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.quantum_info import hellinger_fidelity
from qiskit.transpiler import InstructionProperties
from qiskit_experiments.library import (
T1,
T2Hahn,
LocalReadoutError,
StandardRB,
)
from qiskit_experiments.framework import BatchExperiment, ParallelExperiment
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import Session
from datetime import datetime
from collections import defaultdict
import numpy as np
import rustworkx
import matplotlib.pyplot as plt
import copy
שלב 1: מיפוי קלט קלאסי לבעיה קוונטית
כדי לבדוק את ההבדל בביצועים, אנחנו בוחנים מעגל שמכין מצב Bell לאורך שרשרת ליניארית באורך משתנה. נמדדת הנאמנות של מצב ה-Bell בקצוות השרשרת.
from qiskit import QuantumCircuit
ideal_dist = {"00": 0.5, "11": 0.5}
num_qubits_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 127]
circuits = []
for num_qubits in num_qubits_list:
circuit = QuantumCircuit(num_qubits, 2)
circuit.h(0)
for i in range(num_qubits - 1):
circuit.cx(i, i + 1)
circuit.barrier()
circuit.measure(0, 0)
circuit.measure(num_qubits - 1, 1)
circuits.append(circuit)
circuits[-1].draw(output="mpl", style="clifford", fold=-1)


הגדרת Backend ומפת צימוד
תחילה, בחרו Backend
# To run on hardware, select the backend with the fewest number of jobs in the queue
service = QiskitRuntimeService()
backend = service.least_busy(
operational=True, simulator=False, min_num_qubits=127
)
qubits = list(range(backend.num_qubits))
לאחר מכן השיגו את מפת הצימוד שלו
coupling_graph = backend.coupling_map.graph.to_undirected(multigraph=False)
# Get unidirectional coupling map
one_dir_coupling_map = coupling_graph.edge_list()
כדי לבדוק כמה שיותר שערים דו-qubit בו-זמנית, אנחנו מפרידים את מפת הצימוד ל-layered_coupling_map. אובייקט זה מכיל רשימה של שכבות שבהן כל שכבה היא רשימה של קשתות שעליהן ניתן להפעיל שערים דו-qubit באותו זמן. זה נקרא גם צביעת קשתות של מפת הצימוד.
# Get layered coupling map
edge_coloring = rustworkx.graph_bipartite_edge_color(coupling_graph)
layered_coupling_map = defaultdict(list)
for edge_idx, color in edge_coloring.items():
layered_coupling_map[color].append(
coupling_graph.get_edge_endpoints_by_index(edge_idx)
)
layered_coupling_map = [
sorted(layered_coupling_map[i])
for i in sorted(layered_coupling_map.keys())
]
ניסויי אפיון
סדרת ניסויים משמשת לאפיון המאפיינים העיקריים של ה-Qubit במעבד קוונטי. אלה הם , , שגיאת קריאה, ושגיאת שער חד-qubit ודו-qubit. נסכם בקצרה מהם מאפיינים אלה ונפנה לניסויים בחבילת qiskit-experiments המשמשים לאפיון שלהם.
T1
הוא הזמן האופייני שלוקח ל-qubit מעורר ליפול למצב הקרקע עקב תהליכי דה-קוהרנטיות של דעיכת אמפליטודה. בניסוי , אנחנו מודדים qubit מעורר לאחר השהיה. ככל שזמן ההשהיה גדול יותר, כך הסבירות גבוהה יותר שה-qubit ייפול למצב הקרקע. מטרת הניסוי היא לאפיין את קצב הדעיכה של ה-qubit לעבר מצב הקרקע.