תהליך הפיתוח
המונח תבנית Qiskit מתאר את תהליך הפיתוח לפירוק בעיות מתחום מסוים והצבת היכולות הנדרשות בשלבים. כך ניתן לשלב בצורה חלקה יכולות חדשות שפותחו על ידי חוקרי IBM Quantum® (ואחרים), ומאפשר עתיד שבו משימות מחשוב קוונטי מבוצעות על ידי תשתית מחשוב עוצמתית והטרוגנית (CPU/GPU/QPU). בלוקים או קבוצות של בלוקים מבצעים את שלבי התבנית, כאשר ה-Qiskit SDK מספק שכבת יסוד חשובה, הנתמכת על ידי כלים או שירותים אחרים שפותחו על ידי IBM Quantum או קהילת הקוד הפתוח הקוונטי. תבניות Qiskit מאפשרות למומחי תחום לפרט בעיה ולהרכיב את הכלים (הבלוקים) המשיגים תבנית Qiskit. ניתן לאחר מכן להריץ את התבנית באופן מקומי, דרך שירותי ענן, או לפרוס אותה עם Qiskit Serverless.
ארבעת שלבי תבנית Qiskit הם כדלקמן:
-
מיפוי הבעיה ל-Circuits ולאופרטורים קוונטיים
-
אופטימיזציה לחומרת היעד
-
הרצה על חומרת היעד
-
עיבוד לאחר ההרצה של התוצאות
כל שלב מפורט בסעיפים להלן.
מיפוי הבעיה ל-Circuits ולאופרטורים קוונטיים
שלב זה מתאר כיצד משתמש מתחיל עם בעיה קלאסית ומגלה כיצד למפות אותה למחשב קוונטי. לדוגמה, ביישומים כמו כימיה וסימולציה קוונטית, שלב זה כולל בדרך כלל בניית Circuit קוונטי המייצג את ה-Hamiltonian שאתה מנסה לפתור. במהלך שלב זה, עבור בעיות מסוימות, עשוי להיות רצוי גם לציין את המיפוי של הבעיה על qubits ברשת heavy-hex (או gross) של חומרת IBM® מלכתחילה, אם מבנה הבעיה מתאים לאופטימיזציה מוקדמת יותר. כדאי גם לשקול בשלב זה מה תהיה התוצאה של האלגוריתם המסוים בהכנה לשלב ההרצה המאוחר יותר — לדוגמה, אם התוצאה הרצויה כוללת הסקת פונקציות קורלציה באמצעות בדיקות Hadamard, אתה עשוי להתכונן להשתמש ב-Sampler, בעוד שציון observables ישתמש ב-Estimator ועשוי לספק אפשרויות רבות לצמצום שגיאות.
הפלט של שלב זה הוא בדרך כלל אוסף של Circuits או אופרטורים קוונטיים שניתן לייעל לחומרה בשלב הבא.
אופטימיזציה לחומרת היעד
בשלב זה אתה לוקח את ה-Circuits (או האופרטורים) המופשטים שהופקו משלב המיפוי ומבצע עליהם סדרה של אופטימיזציות. זה יכול לכלול מיפוי המסלול והפריסה של ה-Circuit לחומרת qubit פיזית, המרה ל-Gates בסיסיים של החומרה, וצמצום מספר הפעולות — כולם מיועדים לייעל את סיכויי ההצלחה בשלב ההרצה המאוחר יותר. בשלב זה אתה עשוי גם לרצות לבדוק את ה-Circuits שלך עם סימולטור לפני ההרצה על חומרה אמיתית בשלב הבא.
במהלך שלב זה, יש לבצע transpile ל-Circuits המופשטים ולהמיר אותם ל-ISA Circuits (Instruction Set Architecture). ISA Circuit הוא Circuit שמורכב אך ורק מ-Gates שחומרת היעד מבינה (Gates בסיסיים), וכל Gate רב-Qubit צריך לציית לאילוצי קישוריות (coupling map). רק ISA Circuits ניתן להריץ על חומרת IBM באמצעות IBM Quantum Compute Service.
הרצה על חומרת היעד
שלב זה כולל הרצת ה-Circuits שלך על חומרה ומייצר את הפלטים של החישוב הקוונטי. ניתן להריץ את ה-ISA Circuits שהופקו בשלב הקודם באמצעות Sampler או Estimator primitive מחבילת qiskit-ibm-runtime, מאותחל באופן מקומי על המחשב שלך או מאשכול או סביבת מחשוב הטרוגנית אחרת. ניתן להריץ אותם ב-Batch, המאפשר Transpile מקבילי ליעילות חישובית קלאסית — או Session, המאפשר יישום יעיל של משימות איטרטיביות ללא עיכובי תור. במהלך שלב זה, קיימת גם אפשרות להגדיר טכניקות מסוימות לדיכוי ולצמצום שגיאות שמספקת ה-qiskit-ibm-runtime.
בהתאם לשאלה האם אתה משתמש ב-primitive Sampler או Estimator, התוצאה של שלב זה תהיה שונה. אם משתמשים ב-Sampler, הפלט יהיה מדידות לכל shot בצורת מחרוזות סיביות. אם משתמשים ב-Estimator, הפלט יהיה ערכי תוחלת של observables המתאימים לכמויות פיזיות או לפונקציות עלות.
עיבוד התוצאות לאחר ההרצה
שלב אחרון זה כולל חיבור מחדש של הפלטים מהשלב הקודם כדי לקבל את התוצאה הרצויה. זה יכול לכלול מגוון שלבי עיבוד נתונים קלאסיים כגון הצגה חזותית של תוצאות, טכניקות לצמצום שגיאות קריאה, חישוב ההתפלגות השולית של התפלגויות quasi-probability לקביעת תוצאות על קבוצות קטנות יותר של qubits, או סינון לאחר ההרצה על בסיס תכונות מובנות של הבעיה, כגון spin כולל, parity, או שימור חלקיקים על ידי הסרת observables לא פיזיים.
ככל שהתחום עובר מבניית Circuit ייעודית לתהליכי עבודה בקנה מידה של תועלת קוונטית (utility-scale), הגמישות והנוחות שבהן תבניות Qiskit מאפשרות למשתמשים להרכיב את השלבים השונים של התבנית פותחות את המחשוב הקוונטי למגוון רחב של יישומים וטכניקות לשימוש קל על ידי מדעני מחשוב קוונטי.