انتقل إلى المحتوى الرئيسي
هذا المشروع في مرحلة تجريبية. وجدت خطأ؟ افتح مشكلة على GitHub. لديك سؤال أو فكرة؟ اسأل في Discussions — نحب سماع ملاحظاتك!
كيف جودة الترجمة في هذه الصفحة؟

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

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

البنية​

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

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

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

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

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

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

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

ملاحظات حول تحديد خيارات الأداة البدائية
  • يمكنك الاطلاع على الخيارات المتاحة أثناء تهيئة الأداة البدائية أو بعدها.
  • إن لم تحدّد قيمةً لأحد الخيارات، يُعطى قيمة خاصة هي Unset وتُستخدم الافتراضيات الخاصة بالخادم.
  • الخاصية options من نوع Python dataclass. يمكنك استخدام الطريقة المضمّنة 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}
)

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

توصيات