انتقل إلى المحتوى الرئيسي

مقدمة إلى عملية التحويل (Transpilation)

نظرة عامة على عملية التحويل والأدوات ذات الصلة، سواء محليًا أو في السحابة.

التحويل (Transpilation) هو عملية إعادة كتابة دائرة مُدخَلة لتتوافق مع هيكلية جهاز كمومي محدد، وتحسين تعليمات الدائرة لتنفيذها على أجهزة الحوسبة الكمومية الصاخبة. تغطي هذه الوثائق الأدوات وسير العمل للتحويل المحلي المتاح لجميع مستخدمي Qiskit، وكذلك خدمة Qiskit Transpiler السحابية المتاحة لمستخدمي الخطة المميزة (Premium Plan) وخطة Flex وخطة On-Prem (عبر IBM Quantum Platform API). إذا كنت تستخدم الـ primitives وتهتم فقط بخيارات التحويل الافتراضية التي تقدمها خدمة Qiskit Runtime، فاقرأ موضوع Configure runtime compilation for Qiskit Runtime.

تأخذ عملية التحويل دائرة تحتوي على تعليماتك:

دائرة كمومية بقبيتين تحتوي على بوابة Hadamard وبوابتَي CNOT.

ثم تحوّلها بحيث تُستخدم فقط التعليمات المتاحة على Backend مختار، وتُحسَّن تلك التعليمات لتقليل تأثيرات الضوضاء:

نفس الدائرة الكمومية بقبيتين بعد التحويل. تحتوي على بوابات RZ وX وSX وECR.


يُعدّ الـ Transpiler مكونًا محوريًا في Qiskit SDK، وقد صُمِّم ليكون معياريًا وقابلًا للتوسعة. يتمثل استخدامه الرئيسي في كتابة تحويلات دوائر جديدة (تُعرف بـ passes الـ Transpiler)، ودمجها مع الـ passes الموجودة مسبقًا، مما يُقلل كثيرًا من عمق الدوائر الكمومية وتعقيدها. ترتيب الـ passes وتسلسلها يؤثر تأثيرًا كبيرًا على النتيجة النهائية. يُحدَّد هذا المسار بواسطة كائنَي PassManager وStagedPassManager. يُنسّق StagedPassManager تنفيذ PassManager واحد أو أكثر ويحدد ترتيب تنفيذها، في حين يمثل كائن PassManager مجرد مجموعة من pass واحد أو أكثر. فكّر في StagedPassManager على أنه المايسترو في الأوركسترا، وPassManagers كأقسام الآلات الموسيقية المختلفة، وكائنات Pass كالعازفين الأفراد. وبهذه الطريقة، يمكنك بناء دوائر كمومية فعّالة على مستوى الأجهزة تتيح لك تنفيذ أعمال على نطاق واسع مع إبقاء الضوضاء في حدود مقبولة.

يمكنك الاطلاع على مزيد من المعلومات حول مراحل مدير الـ Pass في موضوع مراحل الـ Transpiler.

معمارية مجموعة التعليمات

إضافةً إلى تقليل عمق الدوائر الكمومية وتعقيدها، صُمِّم الـ Transpiler لتحويل التعليمات الموجودة في QuantumCircuit معطى لتتوافق مع معمارية مجموعة التعليمات (ISA) لـ Backend معين. تتكون الدوائر المتوافقة مع ISA فقط من التعليمات التي يدعمها Target الخاص بالـ Backend، كبوابات الأساس المتاحة للأجهزة، والقياسات، وعمليات إعادة الضبط، وعمليات التحكم في التدفق، وتمتثل للقيود التي تحددها قابلية الاتصال بالأجهزة، أي CouplingMap الخاصة بالـ Target. عند إرسال مهمة إلى Backend من IBM Quantum®، يجب أن تلتزم الدوائر بـ ISA الخاص بذلك الـ Backend.

مراحل الـ Transpiler

تتكون خط أنابيب الـ Transpiler المُعدّ مسبقًا في Qiskit من ست مراحل أساسية:

  1. init - تُشغّل هذه المرحلة أي passes أولية مطلوبة قبل أن تتم تضمين الدائرة. يتضمن ذلك عادةً فك تسجيل التعليمات المخصصة وتحويل الدائرة إلى بوابات أحادية وثنائية القبيت. بشكل افتراضي، تتحقق هذه المرحلة من صحة تعليمات الدائرة وتُترجم بوابات القبيت المتعددة إلى بوابات أحادية وثنائية القبيت.
  2. layout - يُطبّق هذا الـ Pass تخطيطًا (layout)، يُعيّن فيه Qubits الافتراضية في دائرتك إلى Qubits الفيزيائية في وحدة المعالجة الكمومية (QPU).
  3. routing - يعمل هذا الـ Pass بعد تطبيق التخطيط، ويحقن بوابات (أي SWAPs) في الدائرة الأصلية لجعلها متوافقة مع قابلية الاتصال في QPU (خريطة الاقتران).
  4. translation - تُترجم هذه المرحلة البوابات في الدائرة إلى مجموعة التعليمات الأساسية للـ QPU.
  5. optimization - تُشغّل هذه المرحلة حلقة تحسين لإيجاد تحليلات أكثر كفاءة للدائرة الكمومية حتى تُستوفى شرط معين (كعمق ثابت).
  6. scheduling - هذه المرحلة مخصصة لأي passes جدولة تراعي متطلبات الأجهزة. إذا حدد المستخدم طريقة جدولة، فإن هذه المرحلة تأخذ في الحسبان جميع أوقات الخمول في الدائرة.

إذا كنت تُخصص سير عمل التحويل، فاستخدم هذه المراحل كمرجع أثناء التطوير.

التحويل باستخدام مديري الـ Pass

الطريقة الموصى بها لتحويل دائرة هي إنشاء مدير pass مُدرَّج (staged pass manager) ثم تنفيذ الـ method الخاصة بـ run مع دائرتك كمُدخَل. يمكنك استخدام دالة generate_preset_pass_manager لتوليد مدير pass مُدرَّج بإعدادات افتراضية معقولة.

يمكن للمستخدمين الأكثر تقدمًا تخصيص مجموعة من كائنات PassManager وStagedPassManager وتحديد ترتيب تنفيذ كل مرحلة. يمكن لهذا أن يُغير بشكل جذري الدائرة النهائية الناتجة. في الواقع، غالبًا ما يُنتج النهج المخصص لتحويل الخوارزميات الكمومية كبت أخطاء أكثر كفاءة مقارنةً بالنهج الافتراضي. يتضمن النهج المخصص إعادة كتابة الدوائر الكمومية لتتوافق مع قيود الأجهزة وتقليل تأثيرات الضوضاء. يمكن تخصيص منطق تدفق هذه السلسلة من الأدوات، ولا يلزم أن يكون خطيًا. يمكن لعملية التحويل أن تُعدّ حلقات تكرارية وفروع شرطية وسلوكيات معقدة أخرى. نقطة انطلاق جيدة عند تطوير مجموعة من الـ passes المخصصة هي فحص التسلسل الافتراضي للتحويلات.

للاطلاع على نظرة عامة حول التحويل باستخدام مديري الـ Pass، راجع التحويل باستخدام مديري الـ Pass.

التحويل الافتراضي

للحصول على طريقة أبسط لاستخدام الـ Transpiler "جاهزة للاستخدام"، وإن كانت أقل قابلية للتخصيص، استخدم دالة qiskit.compiler.transpile. تُولّد هذه الدالة وتُشغّل أحد كائنات StagedPassManager المُعدّة مسبقًا بناءً على خيارات عدة، من بينها علَم optimization_level الذي يمكن ضبطه على 0 أو 1 أو 2 أو 3. تُنتج المستويات الأعلى دوائر أكثر تحسينًا على حساب وقت تحويل أطول.

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

توصيات