مقدمة إلى الخيارات
يمكنك استخدام الخيارات لتخصيص أدوات IBM Quantum البدائية وفق احتياجاتك.
البنية
عند استدعاء الأدوات البدائية، يمكنك تمرير الخيارات إما عبر فئة خيارات أو قاموس (dictionary). الخيارات الأكثر استخداماً، مثل resilience_level، تكون في المستوى الأول. أما الخيارات الأخرى فتُجمَّع في فئات، كفئة execution. حدّد الخيارات بهذا التنسيق: options.option.sub-option.sub-sub-option = choice. على سبيل المثال: options.dynamical_decoupling.enable = True.
القيم الافتراضية
إن لم تحدّد قيمةً لأحد الخيارات، يُعطى قيمة خاصة هي Unset وتُستخدم القيمة الافتراضية للخادم. وبهذا تظل القيمة الافتراضية ثابتة بصرف النظر عن إصدار الكود الذي تستخدمه.
تسرد الجداول في قسم "ملخص فئات الخيارات" الموجود في دليل "الخيارات" الخاص بكل أداة بدائية القيم الافتراضية.
تعيين الخيارات
يمكن تعريف الخيارات قبل إنشاء الأداة البدائية وتمريرها إليها ككائن (instance) من فئة الخيارات أو كقاموس. تنشئ الأداة نسخةً منها، مما يعني أن تغيير القاموس الأصلي أو كائن الخيارات الأصلي لن يؤثر في الخيارات التي تمتلكها الأداة البدائية.
علاوةً على ذلك، يمكنك تغيير الخيارات بعد إنشاء الأداة البدائية. استخدم الأسلوب الأنسب لتطبيقك.
- يمكنك الاطلاع على الخيارات المتاحة أثناء تهيئة الأداة البدائية أو بعدها.
- إن لم تحدّد قيمةً لأحد الخيارات، يُعطى قيمة خاصة هي
Unsetوتُستخدم الافتراضيات الخاصة بالخادم. - الخاصية
optionsمن نوع Pythondataclass. يمكنك استخدام الطريقة المضمّنةasdictلتحويلها إلى قاموس.
فئة options
عند إنشاء كائن (instance) من فئة الأداة البدائية، يمكنك تمرير كائن من فئة options. تُطبَّق هذه الخيارات بعد ذلك عند استخدام run() لإجراء الحساب. حدّد الخيارات بهذا الشكل: options.option.sub-option.sub-sub-option = choice. على سبيل المثال: options.dynamical_decoupling.enable = True.
راجع SamplerOptions أو EstimatorOptions للاطلاع على التفاصيل الكاملة للفئة.
يستخدم المثال التالي أداة Estimator البدائية، إلا أن الصياغة مشابهة للأدوات البدائية الأخرى.
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# from qiskit_ibm_runtime.options import EstimatorOptions
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
from qiskit_ibm_runtime.options_models 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
# 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 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
# 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(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}
)
الخطوات التالية
- اطلع على تفاصيل كيفية تهيئة كبت الأخطاء وتخفيف الأخطاء.
- تعرف على المزيد حول خيارات Estimator.
- تعرف على المزيد حول خيارات Sampler.
- تعرف على المزيد حول خيارات Executor.