דלג לתוכן הראשי
פרויקט זה בשלב בטא. מצאת באג? פתח issue ב-GitHub. יש שאלה או רעיון? שאל ב-Discussions — נשמח לשמוע ממך!
מה איכות התרגום בדף זה?

בחירת compute profile

managed workflows רצים על compute profiles. compute profile הוא שילוב קבוע של vCPUs, זיכרון ו-GPUs, בדומה למשאבים שמבקשים ממתזמן HPC. כשמעלים workflow, ממפים את הגדלים שלו, כמו S ו-M, ל-profiles, וכל הרצה בוחרת אחד מהגדלים האלה. אז ה-job רץ על node משלו עם ה-profile הזה, ושומר עליו עד שה-job מסתיים.

ProfilevCPUsזיכרון (GB)GPUs
8x32832אין
16x12816128אין
48x76848768אין
128x15001281500אין
24x120x1l40s241201 L40S
20x320x2a100203202 A100
80x1200x8a1008012008 A100
160x1792x8h10016017928 H100

מזהה profile הוא מהצורה {cpu}x{memory}, כשהזיכרון ב-GB, או {cpu}x{memory}x{count}{gpu} ל-profile עם GPUs. לדוגמה, ל-24x120x1l40s יש 24 vCPUs, 120 GB זיכרון ו-GPU אחד מסוג NVIDIA L40S.

בדיקת profiles זמינים​

כדי לראות אילו profiles זמינים, קראו ל-compute_profiles():

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflowClient

client = ManagedWorkflowClient()
print(client.compute_profiles())
8x32 (8 vCPU / 32 GB)
16x128 (16 vCPU / 128 GB)
48x768 (48 vCPU / 768 GB)
128x1500 (128 vCPU / 1500 GB)
24x120x1l40s (24 vCPU / 120 GB / 1l40s)
20x320x2a100 (20 vCPU / 320 GB / 2a100)
80x1200x8a100 (80 vCPU / 1200 GB / 8a100)
160x1792x8h100 (160 vCPU / 1792 GB / 8h100)

חיפוש profile לפי המשאבים שלו​

במקום להקליד מזהה profile, אפשר לתאר את המשאבים שה-workflow שלכם צריך באמצעות compute_profile(), ולהשתמש בתוצאה כערך ב-sizes_map. העבירו את cpu ואת memory ב-GB, והעבירו gpu ל-profile עם GPU:

run_workflow_remotely.ipynb

profile = client.compute_profile(cpu=24, memory=120, gpu="1l40s")
print(profile) # 24x120x1l40s

sizes_map = {"S": "8x32", "L": profile}

sizes_map מקבל מזהי profile ואת ה-profiles ש-compute_profile() מחזירה, ואפשר לשלב את שניהם במפה אחת. כדי לבדוק מזהה profile לפני ההעלאה, העבירו אותו ל-compute_profile(), למשל client.compute_profile("16x128"). אם אף profile לא מתאים, השגיאה מציגה את ה-profiles הזמינים.

compute_profiles() מחזירה רשימה, ולכן אפשר גם לסנן אותה בעצמכם. לדוגמה, הקוד הבא מוצא את ה-profiles עם GPU:

run_workflow_remotely.ipynb

gpu_profiles = [p for p in client.compute_profiles() if p.gpu]

הגדרת compute profile ברירת מחדל ל-workflow שלכם​

רוב ה-workflows מתחילים עם גודל אחד. מפו אותו ל-profile באמצעות sizes_map, והפכו אותו לברירת המחדל באמצעות default_size, כשאתם מעלים את ה-workflow:

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflow, ManagedWorkflowClient

client = ManagedWorkflowClient()

my_workflow = client.upload(
ManagedWorkflow(
title="my-workflow",
entrypoint="my_workflow.py",
working_dir="./source_files/",
sizes_map={"M": "16x128"},
default_size="M",
)
)

כל הרצה של ה-workflow משתמשת ב-profile הזה, ולכן אין צורך להעביר גודל כשמריצים אותו:

run_workflow_remotely.ipynb

job = my_workflow.run(circuits=circuits) # Runs on 16x128

שיטה מומלצת: התאימו את הגדלים לגדלי הבעיה​

workflow פותר בעיות ספציפיות, והוא עשוי לדרוש compute profiles שונים ככל שהבעיות גדלות במסה ובמורכבות. עם sizes_map לכל workflow, אפשר לעשות את הדברים הבאים:

  • לתת לבעיות גדולות מספיק משאבי חישוב כדי לרוץ עד הסוף.

  • למנוע מבעיות קטנות להשתמש ב-node גדול יותר ממה שהן צריכות.

אפשר לבסס את הגדלים על הגורמים שקובעים את השימוש בזיכרון וב-CPU של ה-workflow שלכם, כמו גודל ה-subspace, מספר ה-batches או מספר ה-qubits.

הגדרת הגדלים​

אפשר למפות עד ארבעה גדלים, לבעיות קטנות (S), בינוניות (M), גדולות (L) וגדולות מאוד (XL). לדוגמה, הקוד הבא מגדיר workflow עם שלושה גדלים:

run_workflow_remotely.ipynb

sizes_map = {"S": "8x32", "M": "16x128", "L": "128x1500"}

my_workflow = client.upload(
ManagedWorkflow(
title="my-workflow",
entrypoint="my_workflow.py",
working_dir="./source_files/",
sizes_map=sizes_map,
default_size="M",
)
)

כללי גדלים​

תוויות הגודל חייבות להיות S, M, L או XL, ולכן workflow יכול להגדיר עד ארבעה גדלים. managed workflow מתאים תוויות באותיות גדולות או קטנות, ושומר אותן באותיות גדולות. שני גדלים יכולים להצביע על אותו profile.

workflow דוחה את ההעלאה הראשונה במקרים הבאים:

  • תווית אינה S, M, L או XL.

  • הגדרתם sizes_map בלי default_size, או default_size בלי sizes_map.

  • default_size אינו אחת מהתוויות ב-sizes_map.

  • ערך ב-sizes_map אינו compute profile זמין.

שינוי גדלים בהעלאה מחדש​

כשמעלים את ה-workflow שוב עם אותו title, ה-managed workflow מטפל בגדלים כך:

  • אם הגדרתם sizes_map, הגדלים החדשים מחליפים את כל הגדלים השמורים.

  • אם השמטתם את sizes_map, ה-workflow שומר את הגדלים השמורים ואת ברירת המחדל.

  • כדי לשנות רק את ברירת המחדל, הגדירו default_size בלי sizes_map. הערך של default_size חייב להיות אחד מהגדלים השמורים.

הגדירו default_size בכל פעם שאתם מגדירים sizes_map. העלאה מחדש לא דורשת default_size. אם הגדלים החדשים לא כוללים את ברירת המחדל הישנה, ל-workflow אין ברירת מחדל, וכל הרצה בלי function_size נכשלת.

בחירת גודל לכל הרצה​

העבירו function_size ל-run() כדי לבחור אחד מהגדלים של ה-workflow ל-job הזה. אם משמיטים אותו, ה-job משתמש בגודל ברירת המחדל של ה-workflow:

run_workflow_remotely.ipynb

print(my_workflow.sizes()) # {'S': '8x32', 'M': '16x128', 'L': '128x1500'}
print(my_workflow.get_default_size()) # 'M'

job = my_workflow.run(function_size="L", circuits=circuits) # Runs on 128x1500
job = my_workflow.run(circuits=circuits) # Runs on the default size, M

sizes() ו-get_default_size() מחזירות את הגדלים ששמורים מהרגע שטענתם את ה-workflow. כדי לראות גדלים שהשתנו אחרי שטענתם את ה-workflow, טענו אותו שוב.

כדי לקרוא את הגודל ואת ה-compute profile של ה-job, קראו ל-get_function_size() ול-get_compute_profile() בקוד ה-workflow שלכם:

source_files/my_workflow.py

from qiskit_serverless import get_compute_profile, get_function_size

print(get_function_size()) # 'L'
print(get_compute_profile()) # '128x1500'

פתרון בעיות בגדלים​

בעיהסיבה
ההעלאה נכשלת עם Invalid size '...'. Valid sizes are: S, M, L, XL.תווית ב-sizes_map אינה אחת מארבע התוויות הנתמכות.
ההעלאה נכשלת עם Unknown compute profile '...' for size '...'.ערך ב-sizes_map אינו profile זמין. בדקו את המזהה באמצעות compute_profiles(), או השתמשו ב-compute_profile() כדי לחפש אותו.
compute_profile() נכשלת עם No compute profile matches ...אין profile עם בדיוק המשאבים האלה. ל-profile עם GPU, העבירו גם gpu. בחרו profile מהרשימה בשגיאה.
ההעלאה נכשלת עם 'default_size' is required when 'sizes' is provided.ההעלאה הראשונה מגדירה sizes_map בלי default_size.
run() נכשלת עם Unknown function size '...' for this function. Available sizes: ...ה-workflow לא מגדיר את הגודל שהעברתם ל-function_size.
run() נכשלת עם This function has no size.העלאה מחדש החליפה את הגדלים והסירה את ברירת המחדל. העלו שוב עם default_size, או העבירו function_size.