تخفيف الأخطاء باستخدام شبكات الموترات (TEM): دالة Qiskit من Algorithmiq
راجع مرجع API
Qiskit Functions ميزة تجريبية متاحة فقط لمستخدمي IBM Quantum® Premium Plan وFlex Plan وOn-Prem (عبر IBM Quantum Platform API). وهي في مرحلة إصدار معاينة وقابلة للتغيير.
إصدارات الحزم
تم تطوير الكود في هذه الصفحة باستخدام المتطلبات التالية. نوصي باستخدام هذه الإصدارات أو أحدث منها.
qiskit[all]~=2.5.1
نظرة عامة
طريقة تخفيف الأخطاء باستخدام شبكات الموترات (TEM) من Algorithmiq هي خوارزمية هجينة كمّية-كلاسيكية مصمَّمة لتنفيذ تخفيف الضوضاء بالكامل في مرحلة المعالجة اللاحقة الكلاسيكية. باستخدام TEM، يمكن للمستخدم حساب القيم التوقعية للمراقِبات مع تخفيف الأخطاء الناجمة عن الضوضاء التي لا مفر منها على الأجهزة الكمّية، وذلك بدقة أعلى وكفاءة أكبر في التكلفة، مما يجعله خياراً بالغ الجاذبية لباحثي الكم وممارسي الصناعة على حدٍّ سواء.
تقوم الطريقة على بناء شبكة موترات تمثّل معكوس قناة الضوضاء الكلية المؤثرة على حالة المعالج الكمّي، ثم تطبيق الخريطة على نتائج القياسات الكاملة معلوماتياً المأخوذة من الحالة المشوّشة للحصول على مقدِّرات غير متحيزة للمراقِبات.
ومن مزايا TEM أنها تستفيد من القياسات الكاملة معلوماتياً لإتاحة الوصول إلى مجموعة واسعة من القيم التوقعية المخففة للمراقِبات، وتتمتع بتكاليف أخذ عينات مثلى على الأجهزة الكمّية، كما هو موضَّح في Filippov et al. (2023)، arXiv:2307.11740، وFilippov et al. (2024)، arXiv:2403.13542. تشير تكلفة القياس إلى عدد القياسات الإضافية المطلوبة لإجراء تخفيف فعّال للأخطاء، وهو عامل حاسم في جدوى الحوسبة الكمّية. لذا، قد تُسهم TEM في تمكين الميزة الكمّية في سيناريوهات معقدة، كالتطبيقات في مجالات الفوضى الكمّية، وفيزياء الأجسام الكثيرة، وديناميكيات هوبارد، ومحاكاة كيمياء الجزيئات الصغيرة.
يمكن تلخيص الميزات والفوائد الرئيسية لـ TEM على النحو التالي:
- تكلفة قياس مثلى: TEM مثالية بالنسبة إلى الحدود النظرية، بمعنى أنه لا توجد طريقة يمكنها تحقيق تكلفة قياس أصغر. بعبارة أخرى، تتطلب TEM الحد الأدنى من القياسات الإضافية لإجراء تخفيف الأخطاء. وهذا بدوره يعني أن TEM تستخدم الحد الأدنى من وقت التشغيل الكمّي.
- فعالية التكلفة: بما أن TEM تتعامل مع تخفيف الضوضاء بالكامل في مرحلة المعالجة اللاحقة، لا حاجة لإضافة دوائر إضافية على الحاسوب الكمّي، مما لا يجعل الحوسبة أرخص فحسب، بل يقلل أيضاً من خطر إدخال أخطاء إضافية بسبب عيوب الأجهزة الكمّية.
- تقدير مراقِبات متعددة: بفضل القياسات الكاملة معلوماتياً، تقدّر TEM مراقِبات متعددة بكفاءة باستخدام بيانات القياس ذاتها من الحاسوب الكمّي.
- تخفيف أخطاء القياس: تتضمن دالة Qiskit TEM أيضاً طريقة خاصة لتخفيف أخطاء القراءة قادرة على تقليص أخطاء القراءة بشكل ملحوظ بعد تشغيل معايرة قصير.
- الدقة: تُحسّن TEM بشكل ملحوظ دقة وموثوقية المحاكاة الكمّية الرقمية، مما يجعل خوارزميات الكم أكثر دقة وموثوقية.
الوصف
تتيح دالة TEM الحصول على قيم توقعية مخففة للأخطاء لمراقِبات متعددة على دائرة كمّية بالحد الأدنى من تكلفة أخذ العينات. تُقاس الدائرة باستخدام قياسٍ ذي قيمٍ مؤثِّرية موجبة وكاملٍ معلوماتياً (IC-POVM)، وتُعالَج نتائج القياسات المجمّعة على حاسوب كلاسيكي. يُستخدم هذا القياس لتطبيق طرق شبكة الموترات وبناء خريطة عكس الضوضاء. تطبّق الدالة خريطة تعكس الدائرة المشوّشة بالكامل باستخدام شبكات الموترات لتمثيل الطبقات المشوّشة.
بمجرد إرسال الدوائر إلى الدالة، تُحوَّل وتُحسَّن لتقليل عدد الطبقات بأبواب ثنائية Qubit (الأبواب الأكثر ضوضاءً في الأجهزة الكمّية). تُتعلَّم الضوضاء المؤثرة على الطبقات من خلال Qiskit Runtime باستخدام نموذج ضوضاء Pauli-Lindblad متفرق كما هو موضَّح في E. van den Berg, Z. Minev, A. Kandala, K. Temme, Nat. Phys. (2023). arXiv:2201.09866.
نموذج الضوضاء وصف دقيق للضوضاء على الجهاز يلتقط الميزات الدقيقة، بما فيها التداخل بين Qubits. غير أن الضوضاء على الأجهزة قد تتذبذب وتتغير، وقد لا تكون الضوضاء المتعلَّمة دقيقة في نقطة إجراء التقدير، مما قد يؤدي إلى نتائج غير دقيقة.
البدء
قم بالمصادقة باستخدام مفتاح IBM Quantum Platform API، وحدد دالة TEM على النحو التالي. (يفترض هذا المقتطف أنك قد حفظت حسابك في بيئتك المحلية مسبقاً.)
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit": "qiskit", "qiskit_ibm_catalog": "qiskit-ibm-catalog"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_catalog import QiskitFunctionsCatalog
tem_function_name = "algorithmiq/tem"
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# verify that you have access to the function
catalog.list()
[QiskitFunction(qunova/hivqe-chemistry),
QiskitFunction(global-data-quantum/quantum-portfolio-optimizer),
QiskitFunction(algorithmiq/tem),
QiskitFunction(qedma/qesem),
QiskitFunction(multiverse/singularity),
QiskitFunction(ibm/circuit-function),
QiskitFunction(q-ctrl/optimization-solver),
QiskitFunction(colibritd/quick-pde),
QiskitFunction(q-ctrl/performance-management),
QiskitFunction(kipu-quantum/iskay-quantum-optimizer)]
# Load your function
tem = catalog.load(tem_function_name)
مثال
يوضح المقتطف التالي مثالاً يُستخدم فيه TEM لحساب القيم التوقعية لمراقِب ما في دائرة كمّية بسيطة.
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
# Create a quantum circuit
qc = QuantumCircuit(3)
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)
for _ in range(2):
qc.barrier()
qc.cx(0, 1)
qc.cx(2, 1)
qc.barrier()
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)
# Define the observables
observable = SparsePauliOp("IYX", 1.0)
# Define the execution options
pub = (qc, [observable])
options = {"default_precision": 0.02}
# Define backend to use. TEM will choose the least-busy device
# reported by IBM if not specified
backend_name = "ibm_marrakesh"
# Run the TEM function (uses around three minutes of QPU time)
job = tem.run(pubs=[pub], backend_name=backend_name, options=options)
استخدم واجهات برمجة تطبيقات Qiskit Serverless للتحقق من حالة حِمل عمل دالة Qiskit:
# Print the ID so you can use it later, if necessary
print(job.job_id)
print(job.status())
ea1d7802-b067-4cc9-af39-3c2402d22413
QUEUED
يمكنك استرجاع النتائج على النحو التالي:
result = job.result()
evs = result[0].data.evs
print(evs[0])
-0.10628832892063486
القيمة التوقعية للدائرة الخالية من الضوضاء للعامل المعطى يجب أن تكون حوالي 0.18409094298943401.
الحصول على الدعم
تواصل مع qiskit_ibm@algorithmiq.fi
تأكد من تضمين المعلومات التالية:
- معرّف وظيفة دالة Qiskit (
qiskit-ibm-catalog)،job.job_id - وصف تفصيلي للمشكلة
- أي رسائل أخطاء أو رموز ذات صلة
- خطوات إعادة إنتاج المشكلة
الخطوات التالية
-
طلب الوصول إلى تخفيف الأخطاء باستخدام شبكات الموترات من Algorithmiq.
-
تفضّل بزيارة مرجع API لهذه الدالة من Qiskit.