قطع الدوائر
قطع الدوائر هو أسلوب يُتيح تشغيل دوائر أكبر حجمًا على العتاد الكمومي، وذلك على حساب زيادة في عبء أخذ العينات. تُنفّذ هذه الإضافة هذا الأسلوب، إذ يُقطَع عدد محدود من البوابات أو الأسلاك أو كليهما، مما يُفضي إلى دوائر أصغر حجمًا تكون أكثر ملاءمةً للتشغيل على العتاد. تُنفَّذ هذه الدوائر الأصغر بعد ذلك، وتُعاد بناء نتائج الدائرة الأصلية عبر معالجة كلاسيكية لاحقة. غير أن المقايضة هنا هي أن العدد الإجمالي للقياسات (shots) يجب أن يزيد بعامل يعتمد على عدد القطوع ونوعها (يُعرف بعبء أخذ العينات). يمكن أيضًا استخدام قطع الدوائر لبناء بوابات بين كيوبتات متباعدة، بدلًا من تحمّل عبء كبير ناجم عن عمليات SWAP.
المصطلحات الأساسية
-
الدوائر الفرعية (Subcircuits): مجموعة الدوائر الناتجة عن قطع البوابات في
QuantumCircuitثم فصل مجموعات الكيوبتات غير المتصلة إلى دوائر أصغر. تحتوي هذه الدوائر على كائناتSingleQubitQPDGateوتُستخدم لإنشاء كل تجربة فرعية. -
التجربة الفرعية (Subexperiment): مصطلح يُشير إلى العينات الفريدة من الدوائر المرتبطة بدائرة فرعية، والتي تُرسَل إلى وحدة معالجة الكم (QPU) للتنفيذ.
تثبيت حزمة قطع الدوائر
ثمة ثلاث طرق لتثبيت حزمة قطع الدوائر: عبر PyPI، أو بالبناء من المصدر، أو التشغيل داخل بيئة حاويات. يُنصح بتثبيت هذه الحزم في بيئة افتراضية لضمان الفصل بين تبعيات الحزم.
التثبيت من PyPI
أبسط طريقة لتثبيت حزمة qiskit-addon-cutting هي عبر PyPI:
pip install qiskit-addon-cutting
التثبيت من المصدر
انقر هنا لمعرفة كيفية تثبيت هذه الحزمة يدويًا.
للمساهمة في هذه الحزمة أو تثبيتها يدويًا، ابدأ بنسخ المستودع:
git clone git@github.com:Qiskit/qiskit-addon-cutting.git
ثم ثبّت الحزمة باستخدام pip. لتشغيل الدروس التعليمية الموجودة في مستودع الحزمة، ثبّت تبعيات دفاتر الملاحظات أيضًا. ثبّت تبعيات dev إذا كنت تعتزم التطوير داخل المستودع.
pip install tox notebook -e '.[notebook-dependencies,dev]'
الاستخدام مع Docker
يمكن استخدام ملف Dockerfile المضمّن في مستودع الإضافة لبناء صورة Docker. يُتيح لك ملف compose.yaml المضمّن استخدام صورة Docker بالأوامر التالية.
انقر هنا لمعرفة كيفية استخدام هذه الحزمة مع Docker.
git clone git@github.com:Qiskit/qiskit-addon-cutting.git
cd qiskit-addon-cutting
docker compose build
docker compose up
If you are using podman and podman-compose instead of docker, the commands are:
podman machine start
podman-compose --podman-pull-args short-name-mode="permissive" build
podman-compose up
بمجرد تشغيل الحاوية، ستظهر لك رسالة مشابهة لما يلي:
notebook_1 | To access the server, open this file in a browser:
notebook_1 | file:///home/$USERNAME/.local/share/jupyter/runtime/jpserver-7-open.html
notebook_1 | Or copy and paste one of these URLs:
notebook_1 | http://e4a04564eb39:8888/lab?token=00ed70b5342f79f0a970ee9821c271eeffaf760a7dcd36ec
notebook_1 | or http://127.0.0.1:8888/lab?token=00ed70b5342f79f0a970ee9821c271eeffaf760a7dcd36ec
الرابط الأخير في هذه الرسالة سيُتيح لك الوصول إلى واجهة دفتر ملاحظات Jupyter.
علاوة على ذلك، يحتوي الدليل الرئيسي على مجلد فرعي باسم persistent-volume. يجب وضع جميع الأعمال التي تريد حفظها في هذا المجلد، لأنه المجلد الوحيد الذي سيُحفظ عبر تشغيلات الحاويات المختلفة.
الخلفية النظرية
في عملية قطع الدوائر، يوجد نوعان من القطوع: قطع البوابة أو القطع "المكاني"، حيث يمر القطع عبر بوابة تعمل على كيوبتين أو أكثر، وقطع السلك أو القطع "الزمني"، الذي يمر مباشرةً عبر سلك الكيوبت (وهو في جوهره بوابة هوية أحادية الكيوبت مقطوعة إلى قطعتين).
يوضّح الرسم البياني أدناه مثالًا على قطع البوابات بحيث يمكن تقسيم الدائرة إلى قطعتين أصغر بعدد أقل من الكيوبتات.

ثمة ثلاثة سيناريوهات يجب مراعاتها عند تحضير سير عمل قطع الدوائر، وتتمحور حول مدى توافر التواصل الكلاسيكي بين عمليات تنفيذ الدوائر. الأول هو حالة توافر العمليات المحلية (LO) فقط، بينما يُدخل الآخران تواصلًا كلاسيكيًا بين عمليات التنفيذ، يُعرف بالعمليات المحلية والتواصل الكلاسيكي (LOCC). تُقسَّم سيناريوهات LOCC إلى إما تواصل أحادي الاتجاه شبه فوري بين عمليات تنفيذ الدوائر، أو تواصل ثنائي الاتجاه في الوقت الفعلي (كما قد تراه في بيئة متعددة وحدات QPU).
رغم إمكانية استخدام قطع الدوائر لتشغيل دوائر كمومية أكبر مما هو ممكن على العتاد الحالي، إلا أن ذلك يأتي بتكلفة. لأن هذا الأسلوب يمكن صياغته على أنه مسألة تحليل شبه احتمالي (QPD)، فإنه يستلزم عبء أخذ عينات أسيًا لإعادة بناء النتائج. هذا العبء هو العامل الذي يجب بموجبه زيادة العدد الإجمالي للقياسات حتى يُفضي التحليل شبه الاحتمالي إلى نفس مقدار الخطأ، ، الذي ستحصل عليه بتنفيذ الدائرة الأصلية. كل بوابة مقطوعة تُضيف إلى هذا العبء، ومقدار العبء المُضاف يعتمد على نوع البوابة المقطوعة (مزيد من التفاصيل حول عبء أخذ العينات موجود في الملحق الأخير من [1]).
على سبيل المثال، قطع بوابة CNOT واحدة يُحدث عبء أخذ عينات بمقدار 9 [2,6]، ودائرة بها قطوع في الأسلاك تُحدث عبء أخذ عينات بمقدار عندما ل ا يتوافر التواصل الكلاسيكي (سيناريو LO). ينخفض هذا إلى عندما يصبح التواصل الكلاسيكي متاحًا (سيناريو LOCC) [4]. غير أن قطع الأسلاك مع التواصل الكلاسيكي (LOCC) غير مدعوم في هذه الحزمة.
رسميًا، يمكن التعبير عن مسألة QPD لقطع الدوائر كما يلي:
حيث هي القناة الكمومية التي تُنفّذ العملية المطلوبة، وكل معامل حقيقي يقابل قناة قابلة للتنفيذ على العتاد.
تُحصَّل النتائج المكافئة للقناة المطلوبة بأن نُولّد أولًا المعاملات ، ثم ننفّذ التجارب الفرعية للحصول على نتائج القنوات المختلفة من أجل إعادة بناء قيم التوقع المقابلة لـ .