דלג לתוכן הראשי

קומפילציה קוונטית משוערת עם רשתות טנסור (AQC-Tensor)

תוסף ה-Qiskit לקומפילציה קוונטית משוערת עם רשתות טנסור (AQC-Tensor) מאפשר למשתמשים לקמפל את החלק הראשוני של Circuit לקירוב כמעט שקול של אותו Circuit, אך עם הרבה פחות שכבות. הדבר מושג באמצעות רשתות טנסור תוך שימוש בשיטה המתוארת ב-[1]. יישומו העיקרי הוא ב-Circuits המדמים אבולוציה עם הזמן, אך עשוי להיות ישים לכל מחלקת Circuits שיש לה גישה ל:

  1. מצב ביניים טוב, המכונה "מצב המטרה," שניתן להשיג באמצעות סימולציית רשת טנסור; ו,
  2. Circuit טוב המכין קירוב למצב המטרה, אך עם פחות שכבות כאשר מקמפלים לחומרת היעד.

הטכניקה מייצרת Circuit אנזץ המבוסס על Circuit מטרה גדול יותר שמשתמש רוצה בסופו של דבר להריץ על QPU. הדבר מושג תחילה על ידי סימולציית חלק מה-Circuit המטרה בשיטות רשת טנסור וקבלת תיאור מדויק של מצב ביניים שה-Circuit האנזץ יקרב. ברגע שמצב ביניים זה נמצא, הוא משמש כפונקציית עלות לאופטימיזציה של פרמטרי ה-Circuit האנזץ. לאחר השלמת האופטימיזציה, החלק הנותר של ה-Circuit המטרה מצורף לאנזץ ולאחר מכן מורץ על חומרה קוונטית.

התקנת חבילת AQC-Tensor

קיימות שתי דרכים להתקין את חבילת AQC-Tensor: PyPI ובנייה מקוד המקור. מומלץ להתקין חבילות אלה בסביבה וירטואלית כדי להבטיח הפרדה בין תלויות החבילות.

התקנה מ-PyPI

הדרך הפשוטה ביותר להתקין את חבילת AQC-Tensor היא דרך PyPI. כדי להשתמש בחבילה, עליך גם להתקין לפחות Backend אחד לרשת טנסור. קטע הקוד הבא יתקין את התוסף, יחד עם quimb (לתמיכת רשת טנסור) ו-jax (לגזירה אוטומטית). אם מעניין אותך, בדוק את החבילה ב-GitHub

pip install 'qiskit-addon-aqc-tensor[quimb-jax]'

התקנה מקוד המקור

לחץ כאן לקריאה על התקנת חבילה זו ידנית.

אם ברצונך לתרום לחבילה זו או להתקין אותה ידנית, שכפל תחילה את המאגר:

git clone git clone git@github.com:Qiskit/qiskit-addon-aqc-tensor.git

והתקן את החבילה דרך pip. אם אתה מתכנן להריץ את המדריכים הכלולים במאגר החבילה, התקן גם את תלויות ה-Notebook. אם אתה מתכנן לפתח במאגר, כדאי להתקין גם את תלויות ה-dev.

pip install tox jupyterlab -e '.[notebook-dependencies,dev]'

רקע תיאורטי

נוהל ה-AQC-Tensor מוסבר בפירוט ב-[1]. סעיף זה מספק סקירה כללית של הטכניקה.

Diagram depicting the approximate quantum compilation procedure

באופן כללי, AQC-Tensor דורש שלושה דברים כקלט:

  1. תיאור של מצב המטרה בצורת רשת טנסור. ניתן לייצר זאת על ידי סימולציית Circuit על סימולטור רשת טנסור, או שניתן לייצר בדרך אחרת (לדוגמה, על ידי ביצוע אבולוציה עם הזמן על מצב מכפלת מטריצה תוך שימוש בעקרון הוריאציוני התלוי בזמן).
  2. Circuit אנזץ מפוּרמטר. באופן אידיאלי כזה שמכיל קישוריות יעילה לחומרה, כך שיהיה לו עומק סביר על חומרת היעד.
  3. פרמטרים התחלתיים להכנסה ל-Circuit האנזץ, כך שהמצב המתקבל כבר יהווה קירוב טוב למצב המטרה. (דבר זה אינו נדרש עקרונית עבור AQC, אך זה עוזר לתת לאופטימייזר נקודת התחלה הגיונית.)

הטכניקה היא לאופטם את פרמטרי ה-Circuit האנזץ באופן איטרטיבי, כך שהמצב שהוא מייצר יהיה קרוב ככל האפשר למצב המטרה.

יצירת אנזץ

כדי לייצר את (2) ו-(3) מהרשימה לעיל, לחבילת qiskit-addon-aqc יש פונקציה, generated_ansatz_from_circuit(), שתיקח Circuit כקלט ותפלוט אנזץ מפוּרמטר וסט פרמטרים התחלתי. הפרמטרים שהפונקציה מחזירה הם כאלה שכאשר מוכנסים לאנזץ, יייצרו מצב ששקול בדיוק ל-Circuit הקלט, עד לפאזה גלובלית.

האנזץ המיוצר על ידי פונקציה זו משתמש ב-9 פרמטרים לכל בלוק דו-Qubit ומבוסס על פירוק KAK, המפרמטר כל Gate דו-Qubit מבחינת שלושה פרמטרים, עד לסיבובים חד-Qubit. סיבובים חד-Qubit אלה מפורקים לאחר מכן בתור ZXZZXZ, שלכל אחד מהם שלושה פרמטרים. הדבר מביא ל-Circuit האנזץ המכיל 3 פרמטרים לכל בלוק דו-Qubit של ה-Circuit המקורי, ועוד 3 פרמטרים לסיבוב חד-Qubit יוצא בכל אחד משני ה-Qubits (סך הכל 9 פרמטרים). לאחר הוספת בלוקים אלה, האנזץ מסתיים על ידי הוספת שכבת סיבובים חד-Qubit לכל Qubit פעיל בתחילת ה-Circuit.

סימולציית רשת טנסור

כדי לקבל תיאור של מצב המטרה הרצוי, תוסף זה משתמש במצב מכפלת מטריצה (הצורה הפשוטה ביותר של רשת טנסור) ותומך בסימולטורי רשת הטנסור הבאים:

הפרמטר החשוב ביותר של רשת טנסור הוא מימד הקשר המרבי שלה, χ\chi. פרמטר זה מגביל את כמות ה-entanglement שניתן לייצג עם רשת טנסור, ולכן עד איזה עומק ניתן לדמות Circuit נתון באמינות.

בהינתן Circuit עם LL Qubits, מצב מכפלת מטריצה זקוק לכל היותר למימד קשר של χexact=2L/2\chi_{exact} = 2^{L/2} כדי לדמות את ה-Circuit בדיוק לכל עומק. הדבר אינו ישים עבור Circuits בקנה מידה כללי הפועלים על 100+ Qubits. מסיבה זו, אם אתה מנסה להתנסות עם תוסף זה לבעיית בדיקה עם מעט Qubits, חשוב להבטיח ש-χ<2L/2\chi < 2^{L/2}. כך, כשאתה מרחיב את הבעיה ל-Circuit גדול יותר, מצב המטרה יישאר ניתן לסימולציה קלאסית.

הצעדים הבאים

המלצות

מקורות

[1] Robertson, Niall F., et al. "Approximate Quantum Compiling for Quantum Simulation: A Tensor Network based approach" arXiv preprint arXiv:2301.08609 (2023).