اختر وضع التنفيذ المناسب
يمكن أن تستغرق أعباء العمل على نطاق المنفعة (Utility-scale) ساعات طويلة لإكمالها، لذا من الضروري جدولة الموارد الكلاسيكية والكمومية بكفاءة لتبسيط عملية التنفيذ. توفّر أوضاع التنفيذ مرونة في الموازنة بين التكلفة والوقت لاستخدام الموارد بشكل أمثل لأعباء عملك. هناك عدة جوانب يجب مراعاتها عند اختيار وضع التنفيذ المناسب، مثل إجمالي وقت التنفيذ (الحد الأقصى لمدة البقاء، أو TTL) والوقت بين المهام (TTL التفاعلي).
فيما يلي ملخص لفوائد كل وضع:
-
الدُّفعة (Batch)
-
يتم جدولة كامل مجموعة المهام معاً ولا يوجد وقت انتظار إضافي لكل مهمة على حدة.
-
تُشغَّل الحسابات الكلاسيكية للوظائف، كالترجمة البرمجية (التصريف)، بالتوازي. وبالتالي، فإن تشغيل وظائف متعددة في دُفعة واحدة أسرع بكثير من تشغيلها بالتسلسل.
-
عادةً ما يكون التأخير بين المهام في حده الأدنى، مما يساعد على تجنب الانجراف.
-
إذا قسّمت عبء عملك إلى مهام متعددة وشغّلتها في batch mode، يمكنك الحصول على نتائج المهام الفردية، مما يجعلها أكثر مرونة في التعامل. على سبيل المثال، إذا لم تكن نتائج مهمة ما بمستوى توقعاتك، يمكنك إلغاء المهام المتبقية. كذلك، إذا فشلت مهمة ما، يمكنك إعادة إرسالها بدلاً من إعادة تشغيل عبء العمل بالكامل.
-
أقل تكلفة بشكل عام مقارنة بالجلسات.
-
-
الجلسة (Session)
-
جميع مزايا batch mode (مع الحاجة إلى استخدام أعلى؛ انظر استخدام عبء العمل لمزيد من التفاصيل حول طريقة احتساب الاستخدام).
-
وصول حصري ومخصص إلى وحدة المعالجة الكمومية (QPU) خلال نافذة الجلسة النشطة.
-
مفيدة لأعباء العمل التي لا تتوفر جميع مدخلاتها من البداية، وللأعباء التكرارية التي تتطلب معالجة كلاسيكية لاحقة قبل تشغيل التالية، وللتجارب التي تحتاج إلى التشغيل بأقصى قدر من التقارب الزمني.
-
-
الوظيفة (Job)
-
الأسهل استخداماً عند تشغيل تجربة صغيرة.
-
قد تُشغَّل في وقت أقرب من batch mode.
-
التوصيات وأفضل الممارسات
بوجه عام، استخدم batch mode إلا إذا كانت لديك أعباء عمل لا تتوفر جميع مدخلاتها من البداية.
-
استخدم وضع الدُّفعة لإرسال وظائف بدائية متعددة في آنٍ واحد لتقليص وقت المعالجة.
-
استخدم وضع الجلسة لأعباء العمل التكرارية، أو إذا كنت بحاجة إلى وصول حصري لوحدة المعالجة الكمومية.
-
استخدم وضع الوظيفة دائماً لإرسال طلب بدائي فردي.
-
لأن الجلسات أغلى تكلفةً بشكل عام، يُنصح باستخدام الدُّفعة في كل مرة لا تحتاج فيها إلى المزايا الإضافية للجلسات.
-
لا يستطيع مستخدمو الخطة المفتوحة (Open Plan) إرسال وظائف الجلسة.
لضمان الاستخدام الأكثر كفاءة لأوضاع التنفيذ، يُوصى بالممارسات التالية:
-
هناك تكلفة ثابتة مرتبطة بتشغيل أي وظيفة. بوجه عام، إذا كانت كل وظيفة من وظائفك تستهلك أقل من دقيقة من وقت QPU، فكّر في دمج عدة وظائف في وظيفة واحدة أكبر (هذا ينطبق على جميع أوضاع التنفيذ). يقصد بـ"وقت QPU" الوقت الذي تقضيه منظومة QPU في معالجة وظيفتك.
-
إذا كانت كل مهمة من مهامك تستهلك أكثر من دقيقة من وقت QPU، أو إذا كان دمج المهام غير عملي، يمكنك مع ذلك تشغيل مهام متعددة بالتوازي. تمر كل مهمة بمعالجة كلاسيكية وكمومية على حد سواء. في حين أن وحدة QPU لا تستطيع معالجة سوى مهمة واحدة في الوقت ذاته، يمكن معالجة ما يصل إلى خمس مهام كلاسيكية بالتوازي. يمكنك الاستفادة من ذلك بإرسال مهام متعددة في وضع الدُّفعة أو الجلسة.
ما سبق مجرد إرشادات عامة، وينبغي عليك ضبط عبء عملك للعثور على النسبة المثلى، خاصةً عند استخدام الجلسات. على سبيل المثال، إذا كنت تستخدم جلسة للحصول على وصول حصري إلى Backend، فكّر في تقسيم المهام الكبيرة إلى مهام أصغر وتشغيلها بالتوازي. قد يكون هذا أكثر فعالية من حيث التكلفة لأنه يمكن أن يقلل وقت الساعة الفعلي.
أمثلة
تشغيل خوارزمية كمومية تغايرية
يتبع تشغيل خوارزمية كمومية تغايرية عادةً هذا المسار:
-
إعداد الـ ansatz.
-
تقييم دالة التكلفة على وحدة QPU.
-
أخذ نتيجة الخطوة السابقة وتشغيلها عبر محسِّن كلاسيكي.
-
ضبط المعاملات وفق مخرجات الخطوة (3)، ثم العودة إلى الخطوة (2).
في هذه الحالة، إذا كنت تستخدم job mode أو batch mode، تحتاج كل وظيفة تنشأ عن الخطوة (2) إلى العودة إلى قائمة الانتظار. هذا يزيد بشكل كبير من مدة التجربة (الوقت الفعلي) بسبب وقت الانتظار. كما قد يستغرق التقارب وقتاً أطول بسبب انجراف الجهاز؛ أي أن كل تكرار يُفترض أن يعطيك نتيجة أفضل، لكن انجراف الجهاز قد يجعل النتائج اللاحقة أسوأ.
علاوة على ذلك، إذا كنت تستخدم PEA أو PEC، يمكنك تعلم نموذج الضوضاء مرة واحدة وتطبيقه على المهام اللاحقة عند التشغيل في جلسة مخصصة. هذا لا يعمل عادةً مع batch mode أو job mode لأن نموذج الضوضاء قد يصبح قديماً بحلول وقت خروج المهمة التالية من قائمة الانتظار.
مقارنة إعدادات تخفيف الأخطاء
لمقارنة تأثيرات أساليب تخفيف الأخطاء المتاحة، قد تتبع هذا المسار:
-
بناء Circuit و observable.
-
إرسال وظائف بدائية تستخدم مجموعات مختلفة من إعدادات تخفيف الأخطاء.
-
رسم النتائج لمراقبة تأثيرات الإعدادات المختلفة.
في هذه الحالة، جميع المهام (التي ترتبط ببعضها لكنها مستقلة) متاحة من البداية. إذا استخدمت batch mode، تُجدوَل بشكل جماعي فلا تحتاج إلى الانتظار في قائمة الانتظار سوى مرة واحدة. بالإضافة إلى ذلك، لأن الهدف هو مقارنة تأثيرات أساليب تخفيف الأخطاء المختلفة، يُستحسن أن تعمل في أقرب وقت ممكن من بعضها. وبالتالي، يُعد batch mode خياراً جيداً. يمكنك تشغيل هذه المهام في جلسة، لكن لأن الجلسات أغلى تكلفةً بشكل عام، يُنصح باستخدام batch في كل مرة لا تحتاج فيها إلى المزايا الإضافية التي توفرها الجلسات.