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

הגדרת ניהול רעש עם Estimator

Package versions

הקוד בעמוד זה פותח באמצעות הדרישות הבאות. אנחנו ממליצים להשתמש בגרסאות אלה או חדשות יותר.

qiskit-ibm-runtime~=0.47.0

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

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

Dynamical decoupling

איך מפעילים: options.dynamical_decoupling.enable = True

מסמך עזר ל-API: DynamicalDecouplingOptions

אפשרויות בולטות: sequence_type

Pauli twirling

איך מפעילים: options.twirling.enable_gates = True

מסמך עזר ל-API: TwirlingOptions

אפשרויות בולטות: num_randomizations, shots_per_randomization

TREX

איך מפעילים: options.resilience.measure_mitigation = True

מסמך עזר ל-API: MeasureNoiseLearningOptions

אפשרויות בולטות:

ZNE

איך מפעילים: options.resilience.zne_mitigation = True

מסמך עזר ל-API: ZneOptions

אפשרויות בולטות: noise_factors, extrapolator

PEA

איך מפעילים: (חובה להפעיל גם ZNE) options.resilience.zne_mitigation = True ו-options.resilience.zne.amplifier = "pea"

מסמך עזר ל-API: ZneOptions

אפשרויות בולטות: noise_factors, extrapolator

PEC

איך מפעילים: options.resilience.pec_mitigation = True

מסמך עזר ל-API: PecOptions

אפשרויות בולטות: max_overhead

רמת חוסן​

ה-resilience_level מציין כמה חוסן לבנות כנגד שגיאות. רמות גבוהות יותר מייצרות תוצאות מדויקות יותר, במחיר של זמני עיבוד ארוכים יותר. אפשר להשתמש ברמות חוסן כדי להגדיר את הפשרה בין עלות לדיוק בעת יישום ניהול רעש לשאילתת ה-primitive שלכם. ניהול רעש מפחית שגיאות (הטיה) בתוצאות על ידי עיבוד הפלטים מאוסף, או ensemble, של מעגלים קשורים. מידת הפחתת השגיאה תלויה בשיטה המיושמת. רמת החוסן מפשטת את הבחירה המפורטת של שיטת ניהול הרעש כדי לאפשר למשתמשים לחשוב על הפשרה בין עלות לדיוק שמתאימה לאפליקציה שלהם.

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

רמת חוסןתיאורטכניקה
0ללא הפחתהללא
1 [ברירת מחדל]עלויות הפחתה מינימליות: הפחתת שגיאות הקשורות לשגיאות קריאהTwirled Readout Error eXtinction (TREX) – twirling של מדידות
2עלויות הפחתה בינוניות. בדרך כלל מפחית הטיה ב-estimators, אבל לא מובטח שתהיה אפס הטיה.רמה 1 + Zero Noise Extrapolation (ZNE) ו-gate twirling
שימו לב

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

הגדרת Estimator עם רמות חוסן​

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

חשוב

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

לדוגמה, הגדרת רמת החוסן ל-0 מכבה את zne_mitigation, אך estimator.options.resilience.zne_mitigation = True דורס ערך זה.

דוגמה​

הקוד הבא מפעיל ZNE, TREX ו-gate twirling על ידי הגדרת resilience_level 2.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})

הגדרות ניהול רעש מותאמות אישית​

אפשר להפעיל ולכבות שיטות ניהול רעש בודדות על ידי שימוש באפשרויות Estimator.

הערות

דוגמה מלאה עם מספר אפשרויות​

from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True

print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True

כיבוי כל הפחתת השגיאות​

להוראות לכיבוי כל הפחתת השגיאות ראו את החלק כיבוי כל דיכוי והפחתת שגיאות במדריך אפשרויות Estimator.

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

המלצות