التعليمات المعايَرة خصيصًا
افتراضيًا، تُعايَر البوابات الكمومية وعمليات القراءة على حواسيب IBM® الكمومية لتحقيق أفضل أداء في حالات الاستخدام العامة. لكن بعض أحمال العمل تستفيد من تعليمات تُضبط معاملاتها بشكل مختلف. على سبيل المثال، MidCircuitMeasure (measure_2) هي عملية قراءة مصممة للقياسات في منتصف الدائرة، ويمكن لبوابات cz الأبطأ أن تحسّن نتائج بعض سير عمل تخفيف الأخطاء.
تأتي التعليمات المعايَرة خصيصًا في شكلين، ويختلف أسلوب الوصول إليها:
-
التعليمات ذات التواقيع المختلفة تُعايَر مع التعليمات القياسية ضمن المعايرة الافتراضية، لذا تضيفها إلى دوائرك مثل أي تعليمة أخرى. وعادةً ما تُعرَّف بلاحقة، مثل
measure_2. -
المعايرات البديلة تستبدل أجزاءً من المعايرة الافتراضية بمعاملات مضبوطة بشكل مختلف. تختار واحدة منها بتمرير
calibration_idعند استرجاع الـ Backend.
لمعرفة كيف تُعايَر حواسيب IBM الكمومية، راجع راقب وعاير وقِس الأداء.
التعليمات ذات التواقيع المختلفة
تُعايَر هذه التعليمات مع مجموعة التعليمات القياسية، لذا لا تحتاج إلى فعل أي شيء خاص لاسترجاع Backend يدعمها. لاستخدام إحداها، أضف تعليمة qiskit-ibm-runtime المقابلة إلى دائرتك.
| التعليمة | الوصف | حالة الاستخدام النموذجية | الاستخدام في Qiskit | عائلة المعالج |
|---|---|---|---|---|
measure_2 | نبضة قياس أقصر | القياسات في منتصف الدائرة | MidCircuitMeasure (الإصدار v0.43.0 أو أحدث) | Heron, Nighthawk r2 |
reset_2 | نبضة إعادة ضبط شرطية أقصر تستخدم measure_2 | إعادة ضبط الكيوبت في منتصف الدائرة | MidCircuitReset (الإصدار v0.49.0 أو أحدث) | Heron |
measure_reset | قياس مثل measure يعيد ضبط الكيوبت أيضًا* | قياس الكيوبت وإعادة ضبطه | MeasureReset (الإصدار v0.50.0 أو أحدث) | Heron, Nighthawk r2 |
measure_reset_2 | قياس أقصر مثل measure_2 يعيد ضبط الكيوبت أيضًا* | قياس الكيوبت وإعادة ضبطه في منتصف الدائرة | هيّئ MeasureReset باستخدام name="measure_reset_2" (الإصدار v0.50.0 أو أحدث) | Heron, Nighthawk r2 |
xslow | بوابة قلب البت (X) بمدة ممتدة | الاختيار اللاحق (Postselection) وتخفيف الأخطاء. وهي القيمة الافتراضية للخيار x_pulse_type في تمريرات الاختيار اللاحق | الكل |
. | XSlowGate (الإصدار v0.50.0 أو أحدث) | الكل |
* في معالجات Heron، تعتمد إعادة الضبط على نتيجة القياس. أما في معالجات Nighthawk r2، فإعادة الضبط غير مشروطة.
بما أن هذه التعليمات غير مدعومة في كل Backend، تحقق من التعليمات التي يدعمها الـ Backend قبل استخدامها:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
للعثور على كل الـ Backends التي تدعم تعليمة ما، استخدم:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
استخدم instruction_signatures لمعرفة تواقيع هذه التعليمات المعايَرة خصيصًا:
print(backend.configuration().instruction_signatures)
المعايرات البديلة
تستبدل المعايرات البديلة أجزاءً من المعايرة الافتراضية بمعاملات مضبوطة بشكل مختلف. لكل معايرة بديلة معرّف معايرة، وتعتمد إتاحتها على الـ QPU.
لاستخدام معايرة بديلة، مرّر calibration_id الخاص بها عند استرجاع الـ Backend. يستخدم الهدف (target) الخاص بالـ Backend، وبالتالي المحوّل، خصائص التعليمات من تلك المعايرة، وتُنفَّذ بها مهام الـ primitives التي تشغّلها على الـ Backend.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
المعايرات البديلة غير متاحة على كل الـ QPU.
معايرات البوابات البطيئة
تضبط معايرات البوابات البطيئة بوابة cz لتكون أبطأ مما هي عليه في المعايرة الافتراضية. قد تحسّن بوابات cz الأبطأ الأداء في سير عمل تقدير القيم المرصودة واسعة النطاق مع تخفيف الأخطاء، لكنها تزيد أيضًا المدة الكلية لدائرتك، مما يسبب بعض فقدان الترابط (decoherence) الإضافي.
في معالجات Heron، تتوفر معايرات البوابات البطيئة أيضًا بوضعين للتحكم في انحياز نظام المستويين (TLS):
-
انحياز TLS من نوع DC مُحسَّن لأفضل أداء لحظي. تستخدم المعايرة الافتراضية انحياز TLS من نوع DC.
-
انحياز TLS من نوع AC يضمّن انحياز TLS لتثبيت أخطاء الجهاز عبر الزمن، مما يُبقي نموذج ضجيج الجهاز مستقرًا خلال سير العمل الطويل. راجع "Noise stabilization" في Observable Estimation in the Absence of Classical Verification للتفاصيل.
لا تستخدم معالجات Nighthawk انحياز TLS، لذا لديها معايرة واحدة للبوابات البطيئة.
| معرّف المعايرة | عائلة المعالج | انحياز TLS | موصى بها لـ |
|---|---|---|---|
| لا شيء (المعايرة الافتراضية) | الكل | DC (Heron) | الاستخدام العام. موصى بها خصوصًا لأحمال العمل التي يمكن تقطير سلاسل البتات فيها كلاسيكيًا، مثل الدوائر ذات الذروة وسير عمل SQD أو SKQD، ولأحمال العمل التي تتضمن كشف الأخطاء. |
slow_gates_dc | Heron | DC | سير عمل تقدير القيم المرصودة واسعة النطاق، خصوصًا التي تستخدم تخفيف أخطاء إرشاديًا مثل الاستقراء بضجيج صفري (ZNE). |
slow_gates_ac | Heron | AC | سير العمل التي تتطلب معدلات أخطاء مستقرة خلال جلسات طويلة. موصى بها بشدة لسير العمل التي تتضمن تعلّم الضجيج، مثل تضخيم الأخطاء الاحتمالي (PEA) وإلغاء الأخطاء الاحتمالي (PEC). |
slow_gates | Nighthawk | غير مطبّق | سير عمل تقدير القيم المرصودة التي تستخدم تخفيف الأخطاء، مثل ZNE وPEA وPEC. |
على سبيل المثال:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")
# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
عند استخدام slow_gates_ac، أرسل كل المهام في سير العمل إلى جلسة واحدة حتى تعمل بينما يظل ضجيج الجهاز مستقرًا.
تحقق من مدد البوابات
بما أن معايرات البوابات البطيئة تزيد مدد بوابة cz، قارن المدد بالمعايرة الافتراضية لفهم التأثير على دائرتك. استخدم الهدف (target) الخاص بالـ Backend لإيجاد مدة بوابة cz، بالثواني، على زوج محدد من الكيوبتات:
default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk
qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)
بما أن الهدف يعكس المعايرة المختارة، حوّل دوائرك (transpile) مقابل الـ Backend الذي يستخدم نفس calibration_id الذي تخطط للتشغيل عليه.
الخطوات التالية
- تعلّم كيف تنفّذ الدوائر الديناميكية مع القياسات في منتصف الدائرة.
- استخدم الاختيار اللاحق (postselection) لتصفية النتائج المتأثرة بالضجيج المترابط.
- اقرأ عن كيفية مراقبة حواسيب IBM الكمومية ومعايرتها وقياس أدائها.