או: איפה מחברים את החתול הזה לחשמל?
זה ההייפ של הרגע. זו הבהלה לזהב של שנות ה20 של המאה ה-21. כתבות מחמיאות על חברות פורצות דרך, גיוסי כסף גדול ע"י צוותים קטנים שמתגבשים להם בחללי עבודה ברחבי הארץ והעולם ואפילו כמה הנפקות. הטכנולוגיה היא אינפורמציה קוונטית. זו עשויה להיות המהפכה הטכנולוגית הגדולה ביותר מאז מהפיכת האינפורמציה הקודמת, זו שהולידה מחשבים אישיים, טלפונים ניידים ואת האינטרנט. בקיצור: בהחלט יש פה סיפור שיכול להיות ביג דיל.
את הסיפורים על איך מחשוב קוונטי עובד אפשר לקרוא באין ספור כתבות מדע פופולרי בכל שפה שנוח לכם לחשוב בה: עברית, אנגלית, ערבית או Python. זרקו שפה, מישהו בטוח כתב הסבר כללי לעקרונות שמאפשרים לקיוביט, הגרסה הקוונטית לביט של המחשב הקלאסי, לבצע חישובים בצורה מהירה. הרבה פעמים ההסברים האלה מסתכמים ב "המחשב הקוונטי בודק את כל האפשרויות בו זמנית ומגיע לתוצאה". זה לא ההסבר הנכון והאמת שזו שטות גדולה. אבל כן יש הסברים לגיטימיים שמסבירים את העוצמה של החישוב בעזרת מערכות קוונטיות ואת העקרונות המתמטיים-פיזיקליים שמוכיחים את זה הסבירו מדענים רבים ובינם לא מעט ישראלים, למשל מדענית המחשב פרופ' דורית אהרונוב מהאוניברסיטה העברית.
אז לא ניתן כאן עוד הסבר אינטואיטיבי-למחצה לעוצמת החישוב של מערכות קוונטיות. כאמור, את זה תוכלו לקרוא במקומות אחרים. במקום זה אם נניח שכולנו מקבלים על עצמנו ללא מידה בריאה של ציניות את בואם של המחשבים הקוונטיים העוצמתיים, וזו הנחה קשיחה למדי, נרצה לשאול "מה הן המשימות ההנדסיות המעניינות שמהנדסת (תוכנה או חומרה) מוכשרת יכולה להתמודד איתן בבואה לבנות מחשב קוונטי חדש?"
מה יש למהנדסים לחפש בעולם הקוונטי
לפי מחקר שטחי שמבוסס על הזכרון שלי משמות הקורסים שחברים למדו באוניברסיטה, אני קובע שגם אנשי מדעים מדויקים שלא למדו פיזיקה למדו לרוב קורס או חצי קורס בקוונטים. לפעמים קוראים לזה פיזיקה ג', לפעמים זה פרק בתוך קורס אחר אבל את העקרונות מעבירים בצורה כזו או אחרת. כדרכו של ידע שעובר על-הדרך במטרה לעבור מבחן בסמסטר עלום, הוא כנראה לא הדבר שנשאר חד בזכרון שנתיים או שלוש אחרי.
אם כך איך תשתלב האלגוריתמיקאית, זו שיודעת לפתור שאלות מהספר של קורמן גם אם יעירו אותה בשלוש בבוקר אחרי לילה של שתיה כבדה, במאמץ לבניית מחשב קוונטי? מה לגבי מהנדס החשמל שקרא לבנו "אות", לביתו "אקראית" ולחתול "רעש" ומתכנן כרגע את הדור הבא של שבבי תקשורת במהירות גבוהה, איך הוא קשור? ואולי חשוב מכך: למה שזה יעניין אותם בכלל?
התשובה הקצרה היא שהם ישתלבו בהחלט. מעטים התחומים שיש בהם כרגע עושר רב יותר של בעיות חדשות ומלהיבות, בתחומי ההנדסה המסורתיים, שאפשר להתחיל ללבן מן היסוד. תארו לכם שהייתם יכולים להשתלב בצוות של פון-נוימן שבנה את המחשב האלקטרוני המתכנת הראשון, אי שם בשנות ה30 של המאה ה20, זה כמעט ככה.
קוונטים למשוררי תוכנה
תחום התוכנה הקוונטית של ימינו מרתק בגלל שהוא מניח את היסודות לכל מה שיקרה אח"כ. הסיפור של תוכנה הוא הרי סיפור של שרשראות-כלים ואבסטרקציות. אף אחד לא רוצה (או יכול) לכתוב בשפת מכונה על מחשב קלאסי, ואף אחת לא רוצה (או יכולה) לעשות משהו משמעותי על מחשב קוונטי אם תנסה לתכנת אותו ברמת השערים הלוגיים הבסיסיים שלו. כן, גם למחשב קוונטי יש שערים לוגיים כמו למחשב קלאסי. את המחשב הקלאסי אפשר לבנות לחלוטין משערי NAND, במקרה של המחשב הקוונטי יש סט אחר של שערים, אבל הבעיה של כתיבת תוכנה משפה עילית שמומרת איכשהו לתיאור חומרתי שניתן להריץ "על הברזלים" היא אותה בעיה. כלומר: צריך לבנות קומפיילרים.
בניגוד לעולם הקלאסי, שם הטכנולוגיה כבר מגובשת למדי ומטרות הקומפילציה הן מעבדי אינטל, ARM ואולי מיקרו-בקרים אם אתן מתעקשות להיות היפסטריות של embedded, בעולם הקוונטי יש עדיין גן חיות של טכנולוגיות. יש כמה טכנולוגיות קיוביטים מתחרות ובלתי תואמות זו לזו באופן קיצוני. לא רק שהן לא פועלות באותם הקצבים, הן מממשות שערים בסיסיים שונים, קצבי השגיאות בהן שונים והדרך שבה מתמודדים עם שגיאות שונה גם היא. האם שרשרת הכלים תהיה שונה לחלוטין בין טכנולוגיות? האם יהיה אפשר להגיע משפה עילית לייצוג ביניים כמו LLVM (הצעה לייצוג ביניים קוונטי כזה נקראת QIR, מוזמנים לגגל)? כבר היום אנחנו רואים מספר גדל של שפות תכנות קוונטיות עם מטרות שונות (Q#, Qiskit, QUA, OPEN QASM ואחרות) אז חוץ מקומפיילרים, יש גם שאלות של תכנון של שפות התכנות בעצמן.
בגלל ההטרוגניות יהיה צריך לתכנן אבסטרקציה מעל המחשבים כך שהם מציגים לשכבות שמעליהן את היכולות שלהם בצורה אחידה. צריך להבהיר אילו אלגוריתמים ניתן לבצע בהינתן חומרה קוונטית כלשהי. למשל, אם היינו מסתכלים על המפרט של GPU, הוא היה מספר לנו באילו טכנולוגיות עיבוד הוא תומך, כמה ליבות יש לו, כמה פוליגונים הוא מסוגל לעבד בשנייה וכו. כך גם במקרה הקוונטי ממש בימים אלה ממציאים את השמות האחידים למדדי הביצועים של הQPU (Quantum Processing Units). יש להם שמות כמו Quantum Volume (QV) או Circuit Layer Operations per Second (CLOPS) והם מנסים לתת סרגל אחיד שמודד מחשבים קוונטיים. אבל אפילו על זה אין עדיין הסכמה ברורה, אלגוריתמיקאי שמעדיף להשתמש במחשב קוונטי מבוסס אטומים קרים עשוי לומר שזו מטריקה שמוטה לעבר מחשבים קוונטיים מבוסס מוליכי על למשל. אז עוד בעיה מעניינת שאפשר לעבוד עליה היא איך מתכננים מטריקות ביצועים, איך מודדים את המטריקות האלה, וכמה טוב (במטריקה שנבחרה) צריך להיות המחשב הקוונטי כדי לבצע את החישוב שתרצו לבצע.
עננים קוונטיים
אז בעיה אחת קשה היא בעיה של קומפילציה משפה עילית אל שפת מכונה, וכאמור כל מכונה פה נוטה להיות שונה מאוד. כולן snowflakes יחידים ומיוחדים, אבל אנחנו חיים בעידן הענן. גם אם יש הטרוגניות במערכות החישוביות שאנחנו מריצים עליהן אלגוריתמים, זה ממש לא מעניין אותנו לרוב. אנחנו רגילים לראות ממשק אחיד ומאחור יש איזה ארגון שאחראי על תפעול כל הקסם הזה. זו הציפיה שלנו כמשתמשים וזו גם הדרך הכי כלכלית לנהל חישובים בסקלות גדולות. ככה יהיה נוח למשתמשים, וככה חברות הקוונטים יוכלו להרוויח את הכסף הגדול. השאלה המתבקשת היא: איך בונים דטה סנטר קוונטי? את הפתרונות התוכנתיים שAWS, Azure וחברותיהן מביאות אלינו היום כדי לקבל גישה למחשב אחד, שניים או יותר, להריץ עליהם קוד ולקבל את התוצאות בחזרה - מישהו יצטרך לבנות עבור מחשוב קוונטי. כבר היום AWS מספקים שירות בשם Braket. לAzure יש את ה Quantum Cloud שלה. אבל האמת היא שאלה פתרונות תפורים לפי מידתם של מחשב אחד או שניים מיוחדים ולא פשוט להוסיף מחשבים נוספים לדטה סנטר.
מחשבים קוונטיים הם יצורים לא יציבים מטבעם ואחד האתגרים הקשים הוא לכייל אותם כך שהם יהיו מוכנים לעבודה. צריך למצוא דרכים לכייל את המחשבים באופן אוטומטי ולבנות דרכים אמינות ויעלות לניהול הענן הקוונטי והמחשבים שבו. סט היכולות ההנדסיות שנדרש פה מעניין במיוחד כי ציד בעיות קליברציה בקיוביטים מצריך גם הבנה פיזיקלית עמוקה של המערכות. מכאן אפשר לנחש שיוולד תפקיד חדש ומעניין במיוחד שאפשר לקרוא לו Quantum Dev Ops Engineer. מהנדסי תוכנה עם רקע בפיזיקה ועניין במערכות משולבות חומרה. A triple threat.
קוונטים לאלופות VHDL ואשפי תכנון אנלוגי
אם אתם פחות בקטע של JetBrains ומקלדות מכניות ויותר בקטע של PSpice ואוסילוסקופים אז יש בתחום הזה סוכריות מכאן ועד האקזיט של מלאנוקס.
בקרה של קיוביטים זה עסק מעניין ולא פשוט. הטרנזיסטורים עליהם אנו בונים מחשבים אלקטרוניים עברו דרך ארוכה מאז ימיהם הראשונים במעבדות בל בניו ג'רזי. הם הפכו מהתקנים בגודל של טוסטר קטן לכאלה שגודלם נמדד בננו-מטרים. הם אמינים, מהירים וחסינים למדי בזכות יכולות יצור ושליטה פנומנליות. לעומת אלה, קיוביטים נמצאים בשלב מאוד מאוד בוסרי. מעבר לכך שאין אפילו טכנולוגיה שולטת אחת שממנה בונים קיוביטים, תהליכי הייצור בתוך כל אחת מהטכנולוגיות עדיין בתהליכי גדילה.
כמו שכבר אמרנו, הבוסריות הזו גורמת לכך שכדי לבצע בקרה של קיוביטים בצורה טובה צריך לפתח כלים לכיול אוטומטי ותכוף של המערכות. מעבר לכך עצם השליטה בקיוביטים, שליחת האותות החשמליים הנכונים בזמן הנכון, דורשת יכולות לתזמון מדויק ומהיר – ברמת הננו-שניות. מערכות הבקרה חייבות גם להיות מסוגלות לבצע מדידות על המערכת ולהגיב בקצבים סופר-מהירים (זמן השהייה בין מדידה לפעולה, latency, שגם הוא נמדד בננו-שניות). כדי להצליח במשימה, מערכות בקרה קוונטיות חייבות להיות תפורות למשימה הייחודית הזאת. במשך שנים רבות נסיונאים בנו מערכות בקרה עבור עצמם, אבל המשימה הזו נעשית יותר ויותר מורכבת ככל שהמעבדים הקוונטיים נעשים יותר מסובכים.
סט הכלים והמשאבים הנדרשים כדי לייצר מערכות בקרה שיוכלו לענות על צורכי השוק הופכים לכה גדולים, שמעבדות בודדות (וחברות שעוסקות באינפורמציה קוונטית) לא יוכלו או לא ירצו לפתח מערכות כאלה בעצמן. זו דוגמה קלאסית לשוק שמבשיל ומתחיל לייצר תת-התמחויות. האספקט החומרתי של תחום הבקרה הקוונטית מלא באתגרים ההנדסיים מגוונים ביותר. ההישג הנדרש הוא לספק אלקטרוניקה מהירה ורחבת סרט (קצבים שנעים בין הרצים בודדים לג'יגה הרצים רבים), ברמות רעש נמוכות ביותר (כי רעש מחבל בקיוביטים העדינים), בצפיפות רכיבים גדולה (כי צריך לשלוט במאות קיוביטים ובלי למלא אולם שלם בבקרים אלקטרוניים, ברמת סנכרון גבוהה ביותר ובצורה שתאפשר למשתמשים חווית שימוש נוחה). יש פה אתגרים בתכנון לוגיקה מורכבת, הנדסת RF איכותית (כי קיוביטים רבים עובדים בתחומי תדר של מיקרוגל, ובהתאם דורשים את סט היכולות הזה), זיווד וניהול תרמי מתקדם (כי בקרים לקיוביטים יכולים לצרוך גם קילו-וואטים רבים של אנרגיה ואת החום הזה יש לנהל) וכולי. בקיצור, המון כיף!
בQuantum Machines אנחנו מתמקדים בפתרון הבעיות האלו – בנייה של החומרה והתוכנה המובילים בעולם לצורך שליטה בקיוביטים. הצוות מורכב ממהנדסות ומהנדסים בכל הדיסיפלינות שהזכרתי קודם, וגם פיזיקאיות ופיזיקאים (כמוני) שמשתדלים לא להפריע יותר מדי. אנחנו מחפשים כל הזמן להגדיל את הצוות המוכשר שלנו בR&D ובכלל. מוזמנים לבדוק. זו עשויה להיות קפיצה קוונטית לקריירה שלכן (וגם שלכם).
על המחבר:
גל וינר הוא ראש צוות ספריות ב Quantum Machines. לגל דוקטורט (PhD) בפיזיקיה ממכון ויצמן ונסיון בעבודה מעשית במספר חברות לרבות HP ואפלייד מטיריאלס.
Do you mean AST instead LLVM?