תהליך הפיתוח
המונח תבנית 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 המופשטים ל-Instruction Set Architecture (ISA) Circuits. ISA Circuit הוא Circuit שמורכב אך ורק מ-Gates שהחומרה היעד מבינה (Gates בסיסיים), וכל Gate רב-Qubit צריך לציית לאילוצי קישוריות (coupling map). רק ISA Circuits ניתן להריץ על חומרת IBM באמצעות IBM Qiskit Runtime.
הרצה על חומרת היעד
שלב זה כולל הרצת ה-Circuits שלך על חומרה ומייצר את הפלטים של החישוב הקוונטי. ניתן להריץ את ה-ISA Circuits שהופקו בשלב הקודם באמצעות ה-primitive Sampler או Estimator מ-Qiskit Runtime, שמאותחל באופן מקומי על המחשב שלך או מאשכול או סביבת מחשוב הטרוגנית אחרת. ניתן להריץ אותם ב-Batch, המאפשר transpile מקבילי ליעילות חישובית קלאסית — או Session, המאפשר יישום יעיל של משימות איטרטיביות ללא עיכובי תור. במהלך שלב זה, קיימת גם אפשרות להגדיר טכניקות מסוימות לדיכוי ולצמצום שגיאות שמספקת Qiskit Runtime.
בהתאם לשאלה האם אתה משתמש ב-primitive Sampler או Estimator, התוצאה של שלב זה תהיה שונה. אם משתמשים ב-Sampler, הפלט יהיה מדידות לכל shot בצורת מחרוזות סיביות. אם משתמשים ב-Estimator, הפלט יהיה ערכי ציפייה של observables המתאימים לכמויות פיזיות או פונקציות עלות.
עיבוד לאחר התוצאות
שלב אחרון זה כולל חיבור מחדש של הפלטים משלב הקודם כדי לקבל את התוצאה הרצויה. זה יכול לכלול מגוון שלבי עיבוד נתונים קלאסיים כגון הצגה חזותית של תוצאות, טכניקות לצמצום שגיאות קריאה, שוליות של התפלגויות quasi-probability לקביעת תוצאות על קבוצות קטנות יותר של Qubits, או סינון לאחר ההרצה על בסיס תכונות מובנות של הבעיה, כגון spin כולל, parity, או שימור חלקיקים על ידי הסרת observables לא פיזיים.
ככל שהתחום עובר מבניית Circuit ייעודית לתהליכי עבודה בקנה מידה של שימושיות, הגמישות והנוחות שבהן תבניות Qiskit מאפשרות למשתמשים להרכיב את השלבים השונים של התבנית פותחות את המחשוב הקוונטי למגוון רחב של יישומים וטכניקות לשימוש קל על ידי מדעני מחשוב קוונטי.