מבוא ל-managed workflows
Qiskit Functions ו-managed workflows הם תכונות בטא הזמינות רק למשתמשים בתוכניות Premium, Flex ו-On-Prem (דרך ה-API של IBM Quantum® Platform).
Managed workflows מריצים את קוד ה-Python המותאם שלך על מחשוב קלאסי ש-IBM Quantum Platform מנהלת עבורך. השתמש ב-managed workflows כדי להריץ תהליכי עבודה היברידיים קוונטיים-קלאסיים, לכסון בקנה מידה גדול ומשימות מקבילות ארוכות טווח, בלי לנהל תשתית מחשוב או אחסון.
מתי להשתמש ב-managed workflow
השתמש ב-managed workflow כשאף Catalog Function מוכנה לא מכסה את המשימה שלך, או כשאתה רוצה לארוז את השיטה שלך כפונקציה לשימוש חוזר. Managed workflows מתאימים כשאתה רוצה לעשות את הדברים הבאים:
-
להריץ jobs ארוכים בענן. managed workflow ממשיך לרוץ גם כשאתה סוגר את המחשב הנייד, ואפשר להתחבר מחדש ל-job מאוחר יותר.
-
להשתמש בצמתים עם זיכרון גדול וב-GPU. בחר את משאבי הזיכרון, ה-CPU וה-GPU שעומס העבודה צריך.
-
להריץ משימות במקביל. התחל הרבה jobs של צומת יחיד באותו זמן.
אתה מספק את קוד ה-workflow, את התלויות שלו ואת גדלי המחשוב שהוא תומך בהם. Managed workflows מריצים את ה-workflow על מחשוב בניהול IBM® בסביבה מוכנה מראש עם החבילות שלך מותקנות, ומספקים אחסון בענן לקבצים שה-workflow קורא וכותב.
איך managed workflows עובדים
אתה מעלה workflow פעם אחת ומריץ כמה jobs שתצטרך. כל job פועל בדרכים הבאות:
-
ה-job מתחיל בסביבה חדשה עם דיסק מקומי ריק. Managed workflows סוגרים את הסביבה אחרי שה-job מסתיים.
-
ה-job רץ באחד מגדלי המחשוב שאתה מגדיר כשאתה מעלה את ה-workflow. אפשר לבחור גודל אחר לכל הרצה.
-
ה-job יכול לקרוא ולכתוב באחסון הקבצים של ה-workflow. קבצים באחסון הקבצים נשארים אחרי שה-job מסתיים.
מכיוון שכל job מתחיל עם דיסק מקומי ריק, job מאוחר יותר יכול למצוא רק את הקבצים ש-job קודם שמר באחסון הקבצים.
מחזור החיים של הרצה
כל job רץ באופן אסינכרוני עד 24 שעות. אפשר להחזיק עד 50 jobs פעילים באותו זמן אם ל-instance שלך יש מספיק הקצאה.
הטבלה הבאה מתארת כל שלב בתרשים ואת סטטוס ה-job שאתה רואה במהלכו:
| שלב | מה קורה | סטטוס ה-job |
|---|---|---|
| העלאה | אתה מעלה את הקוד, התלויות והגדלים של ה-workflow. ה-workflow דוחה העלאה לא תקינה לפני שרץ job כלשהו. | אין (עדיין אין job) |
| תור | אתה קורא ל-run(). ה-workflow בודק אם ל-instance שלך יש מספיק הקצאה, ומתזמן את ה-job כשהמחשוב זמין. | QUEUED |
| התחלה | ה-workflow יוצר סביבה עם פרופיל המחשוב שבחרת. | INITIALIZING |
| הרצה | נקודת הכניסה של ה-workflow שלך רצה. נקודת הכניסה יכולה לדווח על ההתקדמות שלה באמצעות update_status(), ואפשר לקרוא את הלוגים שלה באמצעות logs() בזמן שהיא רצה. | RUNNING, או שלב שהגדרת, כמו RUNNING: WAITING_FOR_QPU |
| תוצאה | ה-job מסתיים, וה-workflow סוגר את הסביבה שלו ושומר את התוצאה והלוגים. | DONE, ERROR או CANCELED |
למה job רץ יכול לגשת
כל job רץ בסביבה מבודדת. התרשים והטבלה הבאים מראים את המשאבים ש-job רץ יכול להשתמש בהם.
| משאב | במה ה-job יכול להשתמש |
|---|---|
| מחשוב | ה-CPU, הזיכרון וה-GPU של פרופיל המחשוב שבחרת ל-job. |
| קוד וחבילות | הקבצים שהעלית עם ה-workflow, והחבילות הנתמכות שמותקנות בסביבה. |
| ארגומנטים | הארגומנטים שהעברת ל-run(). קרא אותם באמצעות get_arguments(). |
| גישה ל-QPU | האישורים וה-instance שבהם השתמשת כדי לקרוא ל-run(). jobs של QPU שה-workflow שולח רצים על ה-instance שלך ונספרים בשימוש שלך. |
| פלטים | תוצאה ש-job שומר באמצעות save_result(), לוגים ש-job מדפיס, ועדכוני סטטוס ש-job מגדיר באמצעות update_status(). |
| אחסון קבצים | קבצים שכל ההרצות שלך של ה-workflow חולקות. קבצים נשארים באחסון אחרי שה-job מסתיים. |
| אינטרנט | אין גישה. job לא יכול ליצור חיבורים יוצאים. הצהר על חבילות כשאתה מעלה את ה-workflow, וספק נתונים כארגומנטים או כקבצים. |
אבטחה ובידוד
Managed workflows מבודדים כל job מ-jobs אחרים ומגבילים את ההרשאות של הקוד שרץ בו. גבולות הגישה בטבלה הקודמת הם חלק מהבידוד הזה. Managed workflows מחילים גם את ההגנות הבאות:
-
בידוד jobs. אף job אחר לא רץ בסביבה של ה-job שלך. זה כולל jobs של משתמשים אחרים ו-jobs שלך שרצים באותו זמן.
-
תוצאות, לוגים ואחסון. רק המשתמש שהריץ job יכול לקרוא את התוצאות והלוגים שלו.
-
אישורים. Managed workflows מצפינים את האישורים ש-job משתמש בהם, כולל ה-API token שלך, כשהם שומרים אותם. קוד ה-workflow שלך יכול לקרוא את האישורים האלה בזמן שה-job רץ.
-
הרשאות. Managed workflows מסירים הרשאות ברמת מנהל מהסביבה לפני שנקודת הכניסה שלך מתחילה.
השוואה ל-HPC מקומי
Managed workflows שונים מאשכול HPC מקומי באופן שבו משיגים זמן מחשוב, מגדירים תוכנה ושולחים jobs. הטבלה הבאה משווה משימות נפוצות.
| משימה | אשכול HPC מקומי | Managed workflows |
|---|---|---|
| השגת זמן מחשוב | בקש הקצאה או הזמנה ממנהל האשכול. | השתמש בהקצאה של ה-instance של IBM Quantum שלך. ה-workflow מכניס כל job לתור כשאתה קורא ל-run(). |
| גישה למערכת | התחבר לצומת כניסה באמצעות SSH. | השתמש בלקוח ה-Python במחשב המקומי שלך. Managed workflows לא מספקים צומת כניסה. |
| התקנת תוכנה | בנה תוכנה, טען modules, או בקש ממנהל להתקין חבילות. | השתמש בחבילות הנתמכות שמותקנות בכל סביבה, או העלה wheels לחבילות אחרות. |
| שליחת job | כתוב סקריפט batch ושלח אותו ל-scheduler. | קרא ל-run() עם ארגומנטי ה-job. |
| בקשת משאבים | בקש צמתים, CPU, זיכרון ו-GPU. | בחר אחד מגדלי המחשוב שהוגדרו ל-workflow. כל job רץ על צומת יחיד. |
| הרצת parameter sweep | שלח מערך jobs. | קרא ל-run() פעם אחת לכל קבוצת ארגומנטים. |
| אחסון קבצים משותפים | כתוב למערכת קבצים משותפת מסוג scratch. | כתוב לאחסון הקבצים של ה-workflow. |
| הגבלת זמן ריצה | הגדר מגבלת wall-time. | ה-workflow מבטל job אחרי 24 שעות. |
| Checkpoint ל-jobs ארוכים | כתוב checkpoints לאחסון scratch. | שמור תוצאות ביניים באחסון הקבצים. |
| הרצה חוזרת של job שנכשל | שלח את ה-job מחדש. | קרא שוב ל-run(). ה-workflow לא מנסה שוב jobs שנכשלו באופן אוטומטי. |
| ניטור jobs | בדוק את התור וקובצי הלוג מצומת הכניסה. | בדוק את הסטטוס, הלוגים והתוצאה של כל job מסשן ה-Python המקומי שלך. |
השלבים הבאים
- התקן את חבילות הלקוח והתחבר.
- פרוס את ה-managed workflow הראשון שלך כדי להעלות workflow, להריץ אותו ולקבל את התוצאה שלו.