مقدمة إلى سير العمل المُدار
Qiskit Functions وسير العمل المُدار ميزتان تجريبيتان (beta) متاحتان فقط لمستخدمي خطط Premium وFlex وOn-Prem (عبر واجهة IBM Quantum® Platform API).
يشغّل سير العمل المُدار كود Python المخصص لك على حوسبة كلاسيكية تديرها IBM Quantum Platform نيابةً عنك. استخدم سير العمل المُدار لتشغيل سير عمل كمومي-كلاسيكي هجين، وتقطير المصفوفات (diagonalization) واسع النطاق، والمهام المتوازية طويلة الأمد دون إدارة البنية التحتية للحوسبة أو التخزين.
متى تستخدم سير عمل مُدار
استخدم سير عمل مُدار عندما لا توجد Catalog Function جاهزة تغطي مهمتك، أو عندما تريد تغليف طريقتك الخاصة كدالة قابلة لإعادة الاستخدام. يناسبك سير العمل المُدار عندما تريد القيام بما يلي:
-
تشغيل مهام طويلة في السحابة. يواصل سير العمل المُدار العمل حتى لو أغلقت حاسوبك المحمول، ويمكنك إعادة الاتصال بالمهمة لاحقاً.
-
استخدام عُقد ذات ذاكرة كبيرة وعُقد GPU. اختر موارد الذاكرة وCPU وGPU التي يحتاجها حملك.
-
تشغيل المهام بالتوازي. ابدأ الكثير من المهام ذات العقدة الواحدة في الوقت نفسه.
أنت توفّر كود سير العمل واعتمادياته وأحجام الحوسبة التي يدعمها. يشغّل سير العمل المُدار سير العمل على حوسبة تديرها IBM® في بيئة جاهزة مثبّتة فيها حزمك، ويوفر تخزيناً سحابياً للملفات التي يقرؤها سير العمل ويكتبها.
كيف يعمل سير العمل المُدار
ترفع سير العمل مرة واحدة وتشغّل أي عدد تحتاجه من المهام. تعمل كل مهمة بالطرق التالية:
-
تبدأ المهمة في بيئة جديدة بقرص محلي فارغ. يُغلق سير العمل المُدار البيئة بعد انتهاء المهمة.
-
تعمل المهمة على أحد أحجام الحوسبة التي تحددها عند رفع سير العمل. يمكنك اختيار حجم مختلف لكل تشغيل.
-
يمكن للمهمة قراءة تخزين ملفات سير العمل والكتابة فيه. تبقى الملفات في تخزين الملفات بعد انتهاء المهمة.
لأن كل مهمة تبدأ بقرص محلي فارغ، لا يمكن لمهمة لاحقة أن تجد سوى الملفات التي حفظتها مهمة سابقة في تخزين الملفات.
دورة حياة التشغيل
تعمل كل مهمة بشكل غير متزامن لمدة تصل إلى 24 ساعة. يمكنك امتلاك ما يصل إلى 50 مهمة نشطة في الوقت نفسه إذا كان لدى نسختك (instance) تخصيص كافٍ.
يصف الجدول التالي كل مرحلة في المخطط وحالة المهمة التي تراها خلال تلك المرحلة:
| المرحلة | ما يحدث | حالة المهمة |
|---|---|---|
| الرفع | ترفع كود سير العمل واعتمادياته وأحجامه. يرفض سير العمل أي رفع غير صالح قبل تشغيل أي مهمة. | لا شيء (لا توجد مهمة بعد) |
| الانتظار في الطابور | تستدعي run(). يتحقق سير العمل مما إذا كان لدى نسختك تخصيص كافٍ، ويجدول المهمة عندما تتوفر الحوسبة. | QUEUED |
| البدء | ينشئ سير العمل بيئة بملف الحوسبة الذي اخترته. | INITIALIZING |
| التشغيل | تعمل نقطة دخول سير عملك. يمكن لنقطة الدخول الإبلاغ عن تقدمها باستخدام update_status()، ويمكنك قراءة سجلاتها باستخدام logs() أثناء عملها. | RUNNING، أو مرحلة تحددها أنت، مثل RUNNING: WAITING_FOR_QPU |
| النتيجة | تنتهي المهمة، ويُغلق سير العمل بيئته مع الاحتفاظ بالنتيجة والسجلات. | DONE أو ERROR أو CANCELED |
ما الذي يمكن للمهمة الجارية الوصول إليه
تعمل كل مهمة في بيئة معزولة. يعرض المخطط والجدول التاليان الموارد التي يمكن للمهمة الجارية استخدامها.
| المورد | ما يمكن للمهمة استخدامه |
|---|---|
| الحوسبة | CPU والذاكرة وGPU الخاصة بـملف الحوسبة الذي اخترته للمهمة. |
| الكود والحزم | الملفات التي رفعتها مع سير العمل، والحزم المدعومة المثبّتة في البيئة. |
| المعاملات (Arguments) | المعاملات التي مررتها إلى run(). اقرأها باستخدام get_arguments(). |
| الوصول إلى QPU | بيانات الاعتماد والنسخة (instance) اللتان استخدمتهما لاستدعاء run(). تعمل مهام QPU التي يرسلها سير العمل على نسختك وتُحتسب ضمن استخدامك. |
| المخرجات | نتيجة تحفظها المهمة باستخدام save_result()، والسجلات التي تطبعها المهمة، وتحديثات الحالة التي تضبطها المهمة باستخدام update_status(). |
| تخزين الملفات | الملفات التي تشترك فيها جميع تشغيلاتك لسير العمل. تبقى الملفات في التخزين بعد انتهاء المهمة. |
| الإنترنت | لا يوجد وصول. لا يمكن للمهمة إجراء اتصالات صادرة. صرّح بالحزم عند رفع سير العمل، ووفّر البيانات كمعاملات أو ملفات. |
الأمان والعزل
يعزل سير العمل المُدار كل مهمة عن المهام الأخرى ويحدّ من صلاحيات الكود الذي يعمل فيها. حدود الوصول في الجدول السابق جزء من هذا العزل. كما يطبّق سير العمل المُدار الحمايات التالية:
-
عزل المهام. لا تعمل أي مهمة أخرى في بيئة مهمتك. ويشمل ذلك مهام المستخدمين الآخرين ومهامك الخاصة التي تعمل في الوقت نفسه.
-
النتائج والسجلات والتخزين. يمكن فقط للمستخدم الذي شغّل المهمة قراءة نتائجها وسجلاتها.
-
بيانات الاعتماد. يشفّر سير العمل المُدار بيانات الاعتماد التي تستخدمها المهمة، بما في ذلك مفتاح API الخاص بك، عند تخزينها. يمكن لكود سير عملك قراءة بيانات الاعتماد هذه أثناء تشغيل المهمة.
-
الصلاحيات. يزيل سير العمل المُدار الصلاحيات على مستوى المسؤول من البيئة قبل أن تبدأ نقطة الدخول.
المقارنة مع HPC المحلي
يختلف سير العمل المُدار عن عنقود HPC محلي في طريقة الحصول على وقت الحوسبة وإعداد البرمجيات وإرسال المهام. يقارن الجدول التالي المهام الشائعة.
| المهمة | عنقود HPC المحلي | سير العمل المُدار |
|---|---|---|
| الحصول على وقت الحوسبة | اطلب تخصيصاً أو حجزاً من مسؤول العنقود. | استخدم تخصيص نسخة IBM Quantum الخاصة بك. يضع سير العمل كل مهمة في الطابور عند استدعاء run(). |
| الوصول إلى النظام | اتصل بعقدة تسجيل الدخول عبر SSH. | استخدم عميل Python على حاسوبك المحلي. لا يوفر سير العمل المُدار عقدة تسجيل دخول. |
| تثبيت البرمجيات | ابنِ البرمجيات، أو حمّل الوحدات (modules)، أو اطلب من المسؤول تثبيت الحزم. | استخدم الحزم المدعومة المثبّتة في كل بيئة، أو ارفع ملفات wheel للحزم الأخرى. |
| إرسال مهمة | اكتب سكربت دفعي (batch script) وأرسله إلى المجدول. | استدعِ run() مع معاملات المهمة. |
| طلب الموارد | اطلب العُقد وCPU والذاكرة وGPU. | اختر أحد أحجام الحوسبة المعرّفة لسير العمل. تعمل كل مهمة على عقدة واحدة. |
| تشغيل مسح للمعاملات | أرسل مصفوفة مهام (job array). | استدعِ run() مرة واحدة لكل مجموعة معاملات. |
| تخزين الملفات المشتركة | اكتب في نظام ملفات scratch مشترك. | اكتب في تخزين الملفات الخاص بسير العمل. |
| تحديد وقت التشغيل | اضبط حداً للوقت الفعلي (wall-time). | يلغي سير العمل المهمة بعد 24 ساعة. |
| نقاط التحقق للمهام الطويلة | اكتب نقاط التحقق في تخزين scratch. | احفظ النتائج الوسيطة في تخزين الملفات. |
| إعادة تشغيل مهمة فاشلة | أعد إرسال المهمة. | استدعِ run() مرة أخرى. لا يعيد سير العمل محاولة المهام الفاشلة تلقائياً. |
| مراقبة المهام | تحقق من الطابور وملفات السجل من عقدة تسجيل الدخول. | تحقق من حالة كل مهمة وسجلاتها ونتيجتها من جلسة Python المحلية الخاصة بك. |
الخطوات التالية
- ثبّت حزم العميل وقم بالمصادقة.
- انشر أول سير عمل مُدار لك لرفع سير عمل وتشغيله والحصول على نتيجته.