انتقل إلى المحتوى الرئيسي

مقدمة إلى الخيارات

يمكنك استخدام الخيارات لتخصيص أدوات Qiskit Runtime البدائية وفق احتياجاتك.

البنية

عند استدعاء الأدوات البدائية، يمكنك تمرير الخيارات إما عبر فئة خيارات أو قاموس (dictionary). الخيارات الأكثر استخداماً، مثل resilience_level، تكون في المستوى الأول. أما الخيارات الأخرى فتُجمَّع في فئات، كفئة execution. حدّد الخيارات بهذا التنسيق: options.option.sub-option.sub-sub-option = choice. على سبيل المثال: options.dynamical_decoupling.enable = True.

القيم الافتراضية

إن لم تحدّد قيمةً لأحد الخيارات، يُعطى قيمة خاصة هي Unset وتُستخدم القيمة الافتراضية للخادم. وبهذا تظل القيمة الافتراضية ثابتة بصرف النظر عن إصدار الكود الذي تستخدمه.

تسرد الجداول في قسم "ملخص فئات الخيارات" الموجود في دليل "الخيارات" الخاص بكل أداة بدائية القيم الافتراضية.

تعيين الخيارات

يمكن تعريف الخيارات قبل إنشاء الأداة البدائية وتمريرها إليها كنسخة من فئة الخيارات أو كقاموس. تنشئ الأداة نسخةً منها، مما يعني أن تغيير القاموس الأصلي أو نسخة الخيارات لن يؤثر في الخيارات التي تمتلكها الأداة البدائية.

علاوةً على ذلك، يمكنك تغيير الخيارات بعد إنشاء الأداة البدائية. استخدم الأسلوب الأنسب لتطبيقك.

ملاحظات حول تحديد خيارات الأداة البدائية
  • يمكنك الاطلاع على الخيارات المتاحة أثناء تهيئة الأداة البدائية أو بعدها.
  • إن لم تحدّد قيمةً لأحد الخيارات، يُعطى قيمة خاصة هي Unset وتُستخدم الافتراضيات الخاصة بالخادم.
  • الخاصية options من نوع Python dataclass. يمكنك استخدام الطريقة المضمّنة asdict لتحويلها إلى قاموس.

فئة options

عند إنشاء نسخة من فئة الأداة البدائية، يمكنك تمرير نسخة من فئة options. تُطبَّق تلك الخيارات عند استخدام run()‎ لتنفيذ الحساب. حدّد الخيارات بهذا التنسيق: options.option.sub-option.sub-sub-option = choice. على سبيل المثال: options.dynamical_decoupling.enable = True.

راجع SamplerOptions أو EstimatorOptions للاطلاع على التفاصيل الكاملة للفئة.

يستخدم المثال التالي أداة Estimator البدائية، إلا أن الصياغة مشابهة للأدوات البدائية الأخرى.

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)

القاموس

يمكنك تحديد الخيارات كقاموس عند تهيئة الأداة البدائية.

يستخدم المثال التالي أداة Estimator البدائية، إلا أن الصياغة مشابهة للأدوات البدائية الأخرى.

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()‎ لإجراء تحديثات جماعية.

لا تحتاج إلى إنشاء نسخة من فئة خيارات الأداة البدائية (EstimatorOptions أو SamplerOptions) إن كنت تضبط الخيارات بعد تهيئة الأداة البدائية.

يستخدم المثال التالي أداة Estimator البدائية، إلا أن الصياغة مشابهة للأدوات البدائية الأخرى.

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}
)

الخطوات التالية

توصيات