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

تحويل الدوائر عن بُعد باستخدام خدمة Qiskit Transpiler

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
Transpiler Service migration

اعتبارًا من 18 يوليو 2025، تجري عملية نقل الخدمة لدعم منصة IBM Quantum® الجديدة وهي غير متاحة حاليًا. للتمريرات المعتمدة على الذكاء الاصطناعي، يمكنك استخدام الوضع المحلي.

الخدمة في إصدار تجريبي (beta) وقابلة للتغيير. إذا كان لديك ملاحظات أو تريد التواصل مع فريق التطوير، استخدم قناة Qiskit Slack Workspace.

توفر خدمة Qiskit Transpiler إمكانيات تحويل الدوائر الكمومية (transpilation) على السحابة. بالإضافة إلى إمكانيات محوّل Qiskit المحلي، يمكن لمهام التحويل الخاصة بك الاستفادة من موارد IBM Quantum السحابية وتمريرات المحوّل المدعومة بالذكاء الاصطناعي.

تقدم خدمة Qiskit Transpiler مكتبة Python لدمج هذه الخدمة وإمكاناتها بسلاسة في أنماط وسير عمل Qiskit الحالية. هذه الخدمة متاحة فقط لمستخدمي خطة IBM Quantum Premium Plan وFlex Plan وOn-Prem (عبر IBM Quantum Platform API).

تثبيت حزمة qiskit-ibm-transpiler

لاستخدام خدمة Qiskit Transpiler، ثبّت حزمة qiskit-ibm-transpiler:

pip install qiskit-ibm-transpiler

تتم المصادقة تلقائيًا باستخدام بيانات اعتماد IBM Quantum Platform الخاصة بك، بنفس الطريقة التي يديرها Qiskit Runtime:

  • متغير البيئة: QISKIT_IBM_TOKEN
  • ملف الإعدادات ~/.qiskit/qiskit-ibm.json (تحت القسم default-ibm-quantum).

ملاحظة: تتطلب هذه الحزمة Qiskit SDK الإصدار v1.X.

خيارات transpile في qiskit-ibm-transpiler

  • backend_name (اختياري، str) - اسم الجهاز الخلفي (backend) كما هو متوقع من قِبَل QiskitRuntimeService (مثلًا، ibm_torino). إذا تم تعيين هذا الخيار، تستخدم طريقة transpile التخطيط من الجهاز المحدد لعملية التحويل. إذا تم تعيين أي خيار آخر يؤثر على هذه الإعدادات، مثل coupling_map، يتم تجاوز إعدادات backend_name.
  • coupling_map (اختياري، List[List[int]]) - قائمة coupling map صالحة (مثلًا، [[0,1],[1,2]]). إذا تم تعيينه، تستخدم طريقة transpile هذه الخريطة لعملية التحويل. إذا تم تعريفه، فإنه يتجاوز أي قيمة محددة لـ target.
  • optimization_level (int) - مستوى التحسين المحتمل الذي يُطبَّق خلال عملية التحويل. القيم الصحيحة هي [1,2,3]، حيث 1 هو أقل تحسين (والأسرع)، و3 هو أعلى تحسين (والأكثر استهلاكًا للوقت).
  • ai ("true", "false", "auto") - ما إذا كان سيتم استخدام الإمكانيات المدعومة بالذكاء الاصطناعي خلال عملية التحويل. الإمكانيات المتاحة تشمل تمريرات AIRouting أو طرق التوليف الأخرى المدعومة بالذكاء الاصطناعي. إذا كانت هذه القيمة "true"، تطبق الخدمة تمريرات تحويل مختلفة مدعومة بالذكاء الاصطناعي وفقًا لـ optimization_level المطلوب. إذا كانت "false"، تستخدم أحدث ميزات تحويل Qiskit بدون ذكاء اصطناعي. وإذا كانت "auto"، تقرر الخدمة ما إذا كانت ستطبق تمريرات Qiskit الاستدلالية القياسية أو التمريرات المدعومة بالذكاء الاصطناعي بناءً على دائرتك.
  • qiskit_transpile_options (dict) - كائن قاموس Python يمكن أن يتضمن أي خيار آخر صالح في طريقة transpile() في Qiskit. إذا تضمّن qiskit_transpile_options الخيار optimization_level، يتم تجاهله لصالح optimization_level المحدد كمعامل إدخال. إذا تضمّن qiskit_transpile_options أي خيار غير معروف لطريقة transpile() في Qiskit، ترفع المكتبة خطأً.

لمزيد من المعلومات حول طرق qiskit-ibm-transpiler المتاحة، راجع مرجع qiskit-ibm-transpiler API. لمعرفة المزيد عن خدمة API، راجع توثيق Qiskit Transpiler Service REST API.

أمثلة

توضح الأمثلة التالية كيفية تحويل الدوائر باستخدام خدمة Qiskit Transpiler بمعاملات مختلفة.

  1. أنشئ دائرة واستدعِ خدمة Qiskit Transpiler لتحويلها باستخدام ibm_torino كـ backend_name، و3 كـ optimization_level، وبدون استخدام الذكاء الاصطناعي خلال التحويل.
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService

circuit = efficient_su2(101, entanglement="circular", reps=1)

cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="false",
optimization_level=3,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)

ملاحظة: يمكنك فقط استخدام أجهزة backend_name التي لديك وصول إليها عبر حساب IBM Quantum الخاص بك. بالإضافة إلى backend_name، يتيح TranspilerService أيضًا استخدام coupling_map كمعامل.

  1. أنشئ دائرة مماثلة وحوّلها مع طلب إمكانيات التحويل بالذكاء الاصطناعي عبر تعيين الراية ai إلى True:
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService

circuit = efficient_su2(101, entanglement="circular", reps=1)

cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="true",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
  1. أنشئ دائرة مماثلة وحوّلها مع السماح للخدمة بالقرار حول استخدام تمريرات التحويل المدعومة بالذكاء الاصطناعي.
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService

circuit = efficient_su2(101, entanglement="circular", reps=1)

cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="auto",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)

حدود خدمة Qiskit Transpiler

فيما يلي أهم القيود الخاصة بالخدمة:

  • الحد الأقصى لعدد البوابات ثنائية الكيوبت لكل دائرة في مهمة تحويل في أي وضع ai هو مليون بوابة.
  • الحد الأقصى للوقت المسموح به لتشغيل عملية التحويل هو 30 دقيقة لكل مهمة.
  • يجب استرداد نتيجة التحويل من الخدمة خلال 20 دقيقة بعد انتهاء عملية التحويل. بعد 20 دقيقة، يتم تجاهل نتيجة المهمة.
  • الحد الأقصى للوقت الذي يمكن أن تبقى فيه مجموعة من الدوائر في قائمة الانتظار الداخلية في انتظار التحويل هو 120 دقيقة. بعد ذلك الوقت، إذا لم تُحوَّل المهمة، يتم تجاهلها.
  • لم يتم تحديد الحد الأقصى لعدد الكيوبتات. تم اختبار الخدمة على 900+ كيوبت.

الاستشهاد

إذا استخدمت أي ميزة مدعومة بالذكاء الاصطناعي من خدمة Qiskit Transpiler في أبحاثك، استخدم الاستشهاد الموصى به التالي:

@misc{2405.13196,
Author = {David Kremer and Victor Villar and Hanhee Paik and Ivan Duran and Ismael Faro and Juan Cruz-Benito},
Title = {Practical and efficient quantum circuit synthesis and transpiling with Reinforcement Learning},
Year = {2024},
Eprint = {arXiv:2405.13196},
}

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

Recommendations