דלג לתוכן הראשי

QESEM: פונקציית Qiskit מאת Qedma

ראה את ה-API reference

הערה

פונקציות Qiskit הן תכונה ניסיונית הזמינה רק למשתמשי IBM Quantum® Premium Plan, Flex Plan ו-On-Prem (דרך IBM Quantum Platform API) Plan. הן נמצאות בשלב טרום-הוצאה לשוק וכפופות לשינויים.

סקירה כללית

בעוד שיחידות עיבוד קוונטיות השתפרו מאוד בשנים האחרונות, שגיאות הנובעות מרעש ופגמים בחומרה הקיימת נותרות אתגר מרכזי עבור מפתחי אלגוריתמים קוונטיים. ככל שהתחום מתקרב לחישובים קוונטיים בקנה מידה של תועלת שלא ניתן לאמת קלאסית, פתרונות לביטול רעש בדיוק מובטח הופכים חשובים יותר ויותר. כדי להתגבר על אתגר זה, Qedma פיתחה את Quantum Error Mitigation (QESEM), המשולב בצורה חלקה ב-IBM Quantum Platform כ-פונקציית Qiskit.

עם QESEM, משתמשים יכולים להריץ את ה-Circuits הקוונטיים שלהם על QPUs רועשים ולקבל תוצאות מדויקות ללא שגיאות עם תקורות זמן QPU יעילות ביותר, קרוב לגבולות היסודיים. כדי להשיג זאת, QESEM מנצל חבילה של שיטות קנייניות שפותחו על ידי Qedma לאפיון והפחתת שגיאות. טכניקות הפחתת שגיאות כוללות אופטימיזציית Gate, Transpilation מודע לרעש, דיכוי שגיאות (ES) ומיתון שגיאות לא מוטה (EM). עם שילוב שיטות מבוססות-אפיון אלו, משתמשים יכולים להשיג תוצאות אמינות ללא שגיאות עבור Circuits קוונטיים גדולים וגנריים, ולפתוח יישומים שלא ניתן להשיגם אחרת.

לתיאור מלא של הרכיבים הבסיסיים, כמו גם הדגמה בקנה מידה של תועלת, ראה במאמר Reliable high-accuracy error mitigation for utility-scale quantum circuits.

תיאור

תוכל להשתמש בפונקציית QESEM של Qedma כדי להעריך ולבצע בקלות את ה-Circuits שלך עם דיכוי ומיתון שגיאות, תוך השגת נפחי Circuit גדולים יותר ודיוק גבוה יותר. לשימוש ב-QESEM, עליך לספק Circuit קוונטי, קבוצה של אוברווביילים למדידה, דיוק סטטיסטי יעד לכל אוברוובייל, ו-QPU שנבחר. לפני הרצת ה-Circuit לדיוק היעד, תוכל להעריך את זמן ה-QPU הנדרש בהתבסס על חישוב אנליטי שאינו מחייב ביצוע Circuit. לאחר שתהיה מרוצה מהערכת זמן ה-QPU, תוכל להריץ את ה-Circuit עם QESEM.

כאשר אתה מריץ Circuit, QESEM מבצע פרוטוקול אפיון מכשיר המותאם ל-Circuit שלך, ומניב מודל רעש אמין עבור השגיאות המתרחשות ב-Circuit. בהתבסס על האפיון, QESEM מיישם תחילה Transpilation מודע לרעש כדי למפות את ה-Circuit הקלט על קבוצת qubits ו-Gates פיזיים, אשר ממזערת את הרעש המשפיע על האוברוובייל היעד. אלה כוללים את ה-Gates הזמינים ילידים (CX/CZ על מכשירי IBM®), כמו גם Gates נוספות שאופטמו על ידי QESEM, ויוצרים את מערך ה-Gate המורחב של QESEM. לאחר מכן QESEM מריץ קבוצה של Circuits ES ו-EM מבוססי-אפיון על ה-QPU ואוסף את תוצאות המדידה שלהם. אלה עוברים לאחר מכן עיבוד קלאסי כדי לספק ערך ציפייה לא מוטה ופס שגיאה לכל אוברוובייל, המתאים לדיוק המבוקש.

סקירת Qedma QESEM QESEM הוכח כמספק תוצאות בדיוק גבוה עבור מגוון יישומים קוונטיים ובנפחי Circuit הגדולים ביותר הניתנים להשגה כיום. QESEM מציע את התכונות הבאות הפונות למשתמש, המוצגות בסעיף הבנצ'מרקים להלן:

  • דיוק מובטח: QESEM מפיק הערכות לא מוטות לערכי ציפייה של אוברווביילים. שיטת ה-EM שלו מצוידת בערבויות תיאורטיות, אשר - יחד עם אפיון החתכים של Qedma - מבטיחות שהמיתון מתכנס לפלט Circuit ללא רעש עד לדיוק המוגדר על ידי המשתמש. בניגוד לשיטות EM היוריסטיות רבות הנוטות לשגיאות שיטתיות או הטיות, הדיוק המובטח של QESEM חיוני להבטחת תוצאות אמינות ב-Circuits ואוברווביילים גנריים.
  • מדרגיות ל-QPUs גדולים: זמן ה-QPU של QESEM תלוי בנפחי Circuit, אך אינו תלוי במספר ה-Qubits. Qedma הדגים את QESEM על המכשירים הקוונטיים הגדולים ביותר הזמינים כיום, כולל IBM Quantum Eagle בן 127 Qubit ומכשירי Heron בני 133 Qubit.
  • אגנוסטי ליישום: QESEM הוכח על מגוון יישומים, כולל סימולציית Hamiltonian, VQE, QAOA ואמידת משרעת. משתמשים יכולים להזין כל Circuit קוונטי ואוברוובייל למדידה, ולקבל תוצאות מדויקות ללא שגיאות. המגבלות היחידות נקבעות על ידי מפרטי החומרה וזמן ה-QPU המוקצה, הקובעים את נפחי ה-Circuit הנגישים ואת דיוק הפלט. בניגוד לכך, פתרונות הפחתת שגיאות רבים ספציפיים ליישום או כוללים היוריסטיקה בלתי נשלטת, מה שהופך אותם לבלתי ישימים ל-Circuits ויישומים קוונטיים גנריים.
  • מערך Gate מורחב: QESEM תומך ב-Gates עם זוויות שבריות, ומספק Gates Rzz(θ)Rzz(\theta) אופטמיזציה על ידי Qedma על מכשירי IBM Quantum Heron ו-Eagle. מערך Gate מורחב זה מאפשר קומפילציה יעילה יותר ופותח נפחי Circuit גדולים יותר פי 2 בהשוואה לקומפילציית CX/CZ ברירת מחדל.
  • אוברווביילים מרובי בסיסים: QESEM תומך באוברווביילי קלט המורכבים ממחרוזות Pauli רבות שאינן מתחלפות, כגון Hamiltonians גנריים. בחירת בסיסי המדידה ואופטימיזציית הקצאת משאבי ה-QPU (shots ו-Circuits) מבוצעת אז באופן אוטומטי על ידי QESEM כדי למזער את זמן ה-QPU הנדרש לדיוק המבוקש. אופטימיזציה זו, המתחשבת בנאמנויות חומרה וקצבי ביצוע, מאפשרת לך להריץ Circuits עמוקים יותר ולהשיג דיוק גבוה יותר.

בנצ'מרקים

QESEM נבדק על מגוון רחב של מקרי שימוש ויישומים. הדוגמאות הבאות יכולות לסייע לך להעריך אילו סוגי עומסי עבודה ניתן להריץ עם QESEM.

מדד ביצועים מרכזי לכימות קושי מיתון השגיאות וסימולציה קלאסית עבור Circuit ואוברוובייל נתונים הוא נפח פעיל: מספר ה-Gate CNOT המשפיעים על האוברוובייל ב-Circuit. הנפח הפעיל תלוי בעומק ורוחב ה-Circuit, במשקל האוברוובייל ובמבנה ה-Circuit, הקובע את חרוט האור של האוברוובייל. לפרטים נוספים, ראה את ההרצאה מ-IBM Quantum Summit 2024. QESEM מספק ערך גדול במיוחד במשטר הנפח הגבוה, ומספק תוצאות אמינות ל-Circuits ואוברווביילים גנריים.

נפח פעיל

יישוםמספר Qubitsמכשירתיאור Circuitדיוקזמן כוללשימוש Runtime
VQE circuit8Eagle (r3)21 שכבות סה"כ, 9 בסיסי מדידה, שרשרת 1D98%35 דקות14 דקות
Kicked Ising28Eagle (r3)3 שכבות ייחודיות x 3 צעדים, טופולוגיית heavy-hex דו-ממדית97%22 דקות4 דקות
Kicked Ising28Eagle (r3)3 שכבות ייחודיות x 8 צעדים, טופולוגיית heavy-hex דו-ממדית97%116 דקות23 דקות
סימולציית Hamiltonian Trotterized40Eagle (r3)2 שכבות ייחודיות x 10 צעדי Trotter, שרשרת 1D97%3 שעות25 דקות
סימולציית Hamiltonian Trotterized119Eagle (r3)3 שכבות ייחודיות x 9 צעדי Trotter, טופולוגיית heavy-hex דו-ממדית95%6.5 שעות45 דקות
Kicked Ising136Heron (r2)3 שכבות ייחודיות x 15 צעדים, טופולוגיית heavy-hex דו-ממדית99%52 דקות9 דקות

הדיוק נמדד כאן ביחס לערך האידיאלי של האוברוובייל: OidealϵOideal\frac{\langle O \rangle_{ideal} - \epsilon}{\langle O \rangle_{ideal}}, כאשר 'ϵ\epsilon' הוא הדיוק האבסולוטי של המיתון (שנקבע על ידי קלט המשתמש), ו-Oideal\langle O \rangle_{ideal} הוא האוברוובייל ב-Circuit ללא רעש. 'שימוש Runtime' מודד את השימוש של הבנצ'מרק במצב batch (סכום על שימוש של עבודות בודדות), ואילו 'זמן כולל' מודד שימוש במצב session (זמן קיר הניסוי), הכולל זמני חישוב ותקשורת קלאסיים נוספים. QESEM זמין לביצוע בשני המצבים, כך שמשתמשים יכולים לעשות את השימוש הטוב ביותר במשאביהם הזמינים.

ה-Circuits של Kicked Ising בן 28 Qubit מדמים את Discrete Time Quasicrystal שנחקר על ידי Shinjo et al. (ראה arXiv 2403.16718 ו-Q2B24 Tokyo) על שלושה לולאות מחוברות של ibm_kawasaki. פרמטרי ה-Circuit שנלקחו כאן הם (θx,θz)=(0.9π,0)(\theta_x, \theta_z) = (0.9 \pi, 0), עם מצב ראשוני פרומגנטי ψ0=0n| \psi_0 \rangle = | 0 \rangle ^{\otimes n}. האוברוובייל הנמדד הוא הערך המוחלט של המגנטיזציה M=128i=027ZiM = |\frac{1}{28} \sum_{i=0}^{27} \langle Z_i \rangle|. ניסוי Kicked Ising בקנה מידה של תועלת הופעל על 136 ה-Qubits הטובים ביותר של ibm_fez; בנצ'מרק ספציפי זה הופעל בזווית Clifford (θx,θz)=(π,0)(\theta_x, \theta_z) = (\pi, 0), שבה הנפח הפעיל גדל לאט עם עומק ה-Circuit, מה שמאפשר - יחד עם נאמנויות מכשיר גבוהות - דיוק גבוה בזמן ריצה קצר.

ה-Circuits של סימולציית Hamiltonian Trotterized הם עבור מודל Transverse-Field Ising בזוויות שבריות: (θzz,θx)=(π/4,π/8)(\theta_{zz}, \theta_x) = (\pi / 4, \pi /8) ו-(θzz,θx)=(π/6,π/8)(\theta_{zz}, \theta_x) = (\pi / 6, \pi / 8) בהתאמה (ראה Q2B24 Tokyo). ה-Circuit בקנה מידה של תועלת הופעל על 119 ה-Qubits הטובים ביותר של ibm_brisbane, ואילו ניסוי ה-40 Qubit הופעל על השרשרת הטובה הזמינה. הדיוק מדווח עבור המגנטיזציה; תוצאות בדיוק גבוה הושגו גם עבור אוברווביילים במשקל גבוה יותר.

ה-Circuit של VQE פותח יחד עם חוקרים ממרכז לטכנולוגיה וישומים קוונטיים ב-Deutsches Elektronen-Synchrotron (DESY). האוברוובייל היעד כאן היה Hamiltonian המורכב ממספר רב של מחרוזות Pauli שאינן מתחלפות, המדגיש את הביצועים האופטימיזציים של QESEM עבור אוברווביילים מרובי בסיסים. המיתון הוחל על ansatz שעבר אופטימיזציה קלאסית; למרות שתוצאות אלה עדיין לא פורסמו, תוצאות באותה איכות יתקבלו עבור Circuits שונים עם מאפיינים מבניים דומים.

תחילת עבודה

אמת את זהותך באמצעות מפתח ה-API של IBM Quantum Platform, ובחר את פונקציית Qiskit של QESEM כדלקמן. (קטע קוד זה מניח שכבר שמרת את החשבון שלך בסביבה המקומית שלך.)

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-catalog qiskit-ibm-runtime
import qiskit

from qiskit_ibm_catalog import QiskitFunctionsCatalog

catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")

qesem_function = catalog.load("qedma/qesem")

דוגמאות

כדי להתחיל, נסה דוגמה בסיסית זו להערכת זמן ה-QPU הנדרש להרצת QESEM עבור pub נתון:

# This cell is hidden from users
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend_name = service.least_busy().name
circ = qiskit.QuantumCircuit(5)
circ.cx(0, 1)
circ.cx(2, 3)
circ.cx(1, 2)
circ.cx(3, 4)

avg_magnetization = qiskit.quantum_info.SparsePauliOp.from_sparse_list(
[("Z", [q], 1 / 5) for q in range(5)], num_qubits=5
)
other_observable = qiskit.quantum_info.SparsePauliOp.from_sparse_list(
[("ZZ", [0, 1], 1.0), ("XZ", [1, 4], 0.5)], num_qubits=5
)

time_estimation_job = qesem_function.run(
pubs=[(circ, [avg_magnetization, other_observable])],
options={
"estimate_time_only": "analytical",
},
backend_name=backend_name, # E.g. "ibm_fez"
)

time_estimate_result = time_estimation_job.result()

הדוגמה הבאה מבצעת עבודת QESEM:

sample_job = qesem_function.run(
pubs=[(circ, [avg_magnetization, other_observable])],
backend_name=backend_name, # E.g. "ibm_fez"
)

תוכל להשתמש בממשקי ה-API המוכרים של Qiskit Serverless כדי לבדוק את סטטוס עומס העבודה של פונקציית Qiskit שלך או להחזיר תוצאות:

print(sample_job.status())
result = sample_job.result()

קטע הקוד הבא מתאר כיצד לאחזר את הערכת זמן ה-QPU (כאשר estimate_time_only מוגדר):

print(
f"The estimated QPU time for this PUB is: \n{time_estimate_result[0].metadata}"
)

קטע הקוד הבא מדגים כיצד לאחזר את תוצאות המיתון (כאשר estimate_time_only אינו מוגדר) ומדדי ביצוע. אלה מכילים נתונים חיוניים המאפשרים הבנה עמוקה יותר של כיצד פרמטרים שונים משפיעים על ביצוע QESEM. זה עשוי להיות רלוונטי גם בעת כתיבת מאמר המבוסס על המחקר שלך.

results = result[0]
print(f"Mitigated expectation values: \n{results.data.evs}")
print(f"Mitigated error-bar: \n{results.data.stds}")
noisy_results = results.metadata["noisy_results"]
print(f"Noisy expectation values: \n{noisy_results.evs}")
print(f"Noisy error-bar: \n{noisy_results.stds}")
print(f"Total QPU time: \n {results.metadata['total_qpu_time']}")
print(
f"Gates fidelity measured during the experiment: \n {results.metadata['gate_fidelities']}"
)
print(
f"Total shots / mitigation shots: \n {results.metadata['total_shots']} / {results.metadata['mitigation_shots']}"
)
print("Transpiled circuits:")
for i, circuit in enumerate(results.metadata["transpiled_circs"]):
print(f"Circuit {i}:")
print(f" Circuit: \n {circuit['circuit']}")
print(f" Qubit mapping: \n {circuit['qubit_map']}")
print(f" Measurement bases: \n {circuit['num_measurement_bases']}")

אחזור הודעות שגיאה

אם סטטוס עומס העבודה שלך הוא ERROR, השתמש ב-job.result() כדי לאחזר את הודעת השגיאה כדלקמן:

print(sample_job.result())
PrimitiveResult([PubResult(data=DataBin(), metadata={'time_estimation_sec': 12600})], metadata={})

קבלת תמיכה

צוות התמיכה של Qedma כאן לעזור! אם נתקלת בבעיות כלשהן או יש לך שאלות לגבי שימוש בפונקציית QESEM של Qiskit, אל תהסס לפנות. צוות התמיכה הידידותי והמיומן שלנו מוכן לסייע לך בכל דאגה טכנית או פנייה שיש לך.

תוכל לשלוח אלינו אימייל לכתובת support@qedma.com לקבלת סיוע. כלול כמה שיותר פרטים על הבעיה שאתה חווה כדי לעזור לנו לספק תגובה מהירה ומדויקת. תוכל גם ליצור קשר עם נציג ה-POC הייעודי שלך ב-Qedma באמצעות אימייל או טלפון.

כדי לסייע לנו לטפל בך ביעילות רבה יותר, ספק את המידע הבא כאשר אתה יוצר קשר:

  • תיאור מפורט של הבעיה
  • מזהה העבודה
  • הודעות שגיאה או קודים רלוונטיים

אנחנו מחויבים לספק לך תמיכה מהירה ויעילה כדי להבטיח שתהיה לך החוויה הטובה ביותר עם פונקציית Qiskit שלנו.

אנחנו תמיד שואפים לשפר את המוצר שלנו ומברכים על ההצעות שלך! אם יש לך רעיונות כיצד נוכל לשפר את השירותים או תכונות שתרצה לראות, שלח לנו את מחשבותיך לכתובת support@qedma.com.

הצעדים הבאים