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

מבוא לאפשרויות

ניתן להשתמש באפשרויות כדי להתאים את ה-primitives של Qiskit Runtime לצרכים שלך.

מבנה

בעת קריאה ל-primitives, ניתן להעביר אפשרויות באמצעות מחלקת אפשרויות או מילון. אפשרויות נפוצות, כגון resilience_level, נמצאות ברמה הראשונה. אפשרויות אחרות מקובצות לקטגוריות, כגון execution. ציין את האפשרויות בפורמט הזה: options.option.sub-option.sub-sub-option = choice. לדוגמה: options.dynamical_decoupling.enable = True.

ברירות מחדל

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

הטבלאות בסעיף "סיכום מחלקות האפשרויות" בכל מדריך "options" של ה-primitive מפרטות את ערכי ברירת המחדל.

הגדרת אפשרויות

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

בנוסף, ניתן לשנות את האפשרויות לאחר שה-primitive נבנה. השתמש בזרימת העבודה המתאימה ביותר לאפליקציה שלך.

הערות לגבי ציון אפשרויות primitive
  • ניתן לראות את האפשרויות הזמינות במהלך אתחול ה-primitive או לאחריו.
  • אם לא תציין ערך לאפשרות, היא תקבל ערך מיוחד של Unset וייעשה שימוש בברירות המחדל של השרת.
  • המאפיין options הוא מסוג dataclass של Python. ניתן להשתמש במתודה המובנית asdict כדי להמיר אותו למילון.

מחלקת options

בעת יצירת מופע של מחלקת ה-primitive, ניתן להעביר מופע של מחלקת options. אפשרויות אלה יוחלו בעת שימוש ב-run() לביצוע החישוב. ציין את האפשרויות בפורמט הזה: options.option.sub-option.sub-sub-option = choice. לדוגמה: options.dynamical_decoupling.enable = True.

ראה SamplerOptions או EstimatorOptions לפרטים מלאים על המחלקה.

הדוגמה הבאה משתמשת ב-primitive של Estimator, אך התחביר עבור primitives אחרים דומה.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions

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

options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)

# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]

estimator = Estimator(mode=backend, options=options)

מילון

ניתן לציין אפשרויות כמילון בעת אתחול primitive.

הדוגמה הבאה משתמשת ב-primitive של Estimator, אך התחביר עבור primitives אחרים דומה.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator

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

# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)

עדכון אפשרויות לאחר אתחול

ניתן לציין אפשרויות בפורמט הזה: _primitive_.options.option.sub-option.sub-sub-option = choice כדי לנצל את ההשלמה האוטומטית, או להשתמש במתודה update() לביצוע עדכונים בכמות גדולה.

מחלקת האפשרויות של ה-primitive (EstimatorOptions או SamplerOptions) אינה צריכה להיות מאותחלת אם מגדירים אפשרויות לאחר אתחול ה-primitive.

הדוגמה הבאה משתמשת ב-primitive של Estimator, אך התחביר עבור primitives אחרים דומה.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator

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

estimator = Estimator(mode=backend)

# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)

השלבים הבאים

המלצות