דלג לתוכן הראשי
פרויקט זה בשלב בטא. מצאת באג? פתח issue ב-GitHub. יש שאלה או רעיון? שאל ב-Discussions — נשמח לשמוע ממך!
מה איכות התרגום בדף זה?

הוראות מכוילות במיוחד

כברירת מחדל, השערים הקוונטיים ופעולות הקריאה במחשבי הקוונטים של IBM® מכוילים לביצועים מיטביים במגוון רחב של שימושים. עם זאת, יש עומסי עבודה שמרוויחים מהוראות שהפרמטרים שלהן מכוונים אחרת. לדוגמה, MidCircuitMeasure (measure_2) היא פעולת קריאה שמותאמת למדידות באמצע המעגל, ושערי cz איטיים יותר יכולים לשפר את התוצאות של חלק מתהליכי העבודה לצמצום שגיאות.

הוראות מכוילות במיוחד מגיעות בשתי צורות, וניגשים אליהן בדרכים שונות:

  • הוראות עם חתימות שונות מכוילות יחד עם ההוראות הסטנדרטיות בכיול ברירת המחדל, ולכן מוסיפים אותן למעגלים שלך כמו כל הוראה אחרת. בדרך כלל מזהים אותן לפי סיומת, כמו measure_2.

  • כיולים חלופיים מחליפים חלקים מכיול ברירת המחדל בפרמטרים שכוונו אחרת. בוחרים כיול כזה על ידי העברת calibration_id בעת אחזור ה-Backend.

כדי ללמוד איך מחשבי הקוונטים של IBM מכוילים, ראה ניטור, כיול ובנצ'מארק.

הוראות עם חתימות שונות​

הוראות אלה מכוילות יחד עם סט ההוראות הסטנדרטי, ולכן אין צורך לעשות שום דבר מיוחד כדי לאחזר Backend שתומך בהן. כדי להשתמש באחת מהן, הוסף את ההוראה המתאימה מ-qiskit-ibm-runtime למעגל שלך.

הוראהתיאורשימוש אופיינישימוש ב-Qiskitמשפחת מעבדים
measure_2פולס מדידה קצר יותרמדידות באמצע המעגלMidCircuitMeasure (גרסה v0.43.0 ואילך)Heron, Nighthawk r2
reset_2פולס איפוס מותנה קצר יותר שמשתמש ב-measure_2איפוס Qubit באמצע המעגלMidCircuitReset (גרסה v0.49.0 ואילך)Heron
measure_resetמדידה כמו measure שגם מאפסת את ה-Qubit*מדידה ואיפוס של QubitMeasureReset (גרסה v0.50.0 ואילך)Heron, Nighthawk r2
measure_reset_2מדידה קצרה יותר כמו measure_2 שגם מאפסת את ה-Qubit*מדידה ואיפוס של Qubit באמצע המעגלאתחל את MeasureReset עם name="measure_reset_2" (גרסה v0.50.0 ואילך)Heron, Nighthawk r2
xslowשער היפוך סיביות (X) עם משך ממושךPostselection וצמצום שגיאות. זהו ערך ברירת המחדל של האפשרות x_pulse_type ב-מעברי postselectionהכול

. | XSlowGate (גרסה v0.50.0 ואילך) | הכול |

* במעבדי Heron, האיפוס מותנה בתוצאת המדידה. במעבדי Nighthawk r2, האיפוס אינו מותנה.

מכיוון שההוראות האלה לא נתמכות בכל Backend, בדוק מהן ההוראות הנתמכות ב-Backend לפני שאתה משתמש בהן:

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>")

print(backend.supported_instructions)

כדי למצוא את כל ה-Backends שתומכים בהוראה מסוימת, השתמש ב:

service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)

השתמש ב-instruction_signatures כדי לראות את החתימות של ההוראות המכוילות במיוחד האלה:

print(backend.configuration().instruction_signatures)

כיולים חלופיים​

כיולים חלופיים מחליפים חלקים מכיול ברירת המחדל בפרמטרים שכוונו אחרת. לכל כיול חלופי יש מזהה כיול, והזמינות שלו תלויה ב-QPU.

כדי להשתמש בכיול חלופי, העבר את ה-calibration_id שלו בעת אחזור ה-Backend. ה-target של ה-Backend, ולכן גם ה-Transpiler, משתמש בתכונות ההוראות מאותו כיול, ועבודות primitive שאתה מריץ על ה-Backend מתבצעות איתו.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")

print(backend.calibration_id)
הערה

כיולים חלופיים אינם זמינים בכל ה-QPUs.

כיולי שערים איטיים​

כיולי שערים איטיים מכוונים את שער ה-cz להיות איטי יותר מאשר בכיול ברירת המחדל. שערי cz איטיים יותר עשויים לשפר את הביצועים בתהליכי עבודה בקנה מידה גדול להערכת observables עם צמצום שגיאות, אבל הם גם מגדילים את משך הזמן הכולל של המעגל שלכם, מה שגורם למעט דקוהרנטיות נוספת.

במעבדי Heron, כיולי שערים איטיים זמינים גם עם שני מצבים של בקרת הטיית מערכת דו-רמתית (TLS):

  • הטיית DC TLS מותאמת לביצועים הטובים ביותר ברגע נתון. כיול ברירת המחדל משתמש בהטיית DC TLS.

  • הטיית AC TLS מאפנת את הטיית ה-TLS כדי לייצב את שגיאות ההתקן לאורך זמן, וכך שומרת על מודל הרעש של ההתקן יציב במהלך תהליכי עבודה ארוכים. לפרטים, ראה "Noise stabilization" ב-Observable Estimation in the Absence of Classical Verification.

מעבדי Nighthawk אינם משתמשים בהטיית TLS, ולכן יש להם כיול שער איטי יחיד.

מזהה כיולמשפחת מעבדיםהטיית TLSמומלץ עבור
None (כיול ברירת מחדל)הכולDC (Heron)שימוש כללי. מומלץ במיוחד לעומסי עבודה שאפשר לזקק בצורה קלאסית את מחרוזות הביטים שלהם, כמו מעגלים מרוכזים (peaked) ותהליכי עבודה של SQD או SKQD, ולעומסי עבודה עם זיהוי שגיאות.
slow_gates_dcHeronDCתהליכי עבודה בקנה מידה גדול להערכת observables, במיוחד כאלה שמשתמשים בצמצום שגיאות היוריסטי כמו אקסטרפולציה לרעש אפס (ZNE).
slow_gates_acHeronACתהליכי עבודה שדורשים שיעורי שגיאה יציבים לאורך Sessions ארוכים. מומלץ בחום לתהליכי עבודה הכוללים למידת רעש, כמו הגברת שגיאות הסתברותית (PEA) וביטול שגיאות הסתברותי (PEC).
slow_gatesNighthawkלא רלוונטיתהליכי עבודה להערכת observables שמשתמשים בצמצום שגיאות, כמו ZNE, PEA ו-PEC.

לדוגמה:

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")
טיפ

כשאתה משתמש ב-slow_gates_ac, שלח את כל העבודות בתהליך העבודה ל-Session אחד, כדי שירוצו בזמן שהרעש של ההתקן נשאר יציב.

בדיקת משכי שערים​

מכיוון שכיולי שערים איטיים מגדילים את משכי שער ה-cz, השווה את המשכים לכיול ברירת המחדל כדי להבין את ההשפעה על המעגל שלך. השתמש ב-target של ה-Backend כדי למצוא את משך שער ה-cz, בשניות, על זוג Qubits מסוים:

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)

מכיוון שה-target משקף את הכיול שנבחר, בצע Transpile למעגלים שלך מול ה-Backend שמשתמש באותו calibration_id שבו אתה מתכנן להריץ.

השלבים הבאים​

המלצות