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

חיתוך מעגלים

חיתוך מעגלים הוא טכניקה להגדלת גודל המעגלים שניתן להריץ על חומרה קוונטית, במחיר של תקורת דגימה נוספת. תוסף זה מיישם טכניקה זו, שבה מספר קטן של Gate-ים, Wire-ים, או שניהם נחתכים, מה שמביא למעגלים קטנים יותר המתאימים יותר לביצוע על חומרה. מעגלים קטנים אלה מבוצעים לאחר מכן, ותוצאות המעגל המקורי נבנות מחדש דרך עיבוד קלאסי לאחר הביצוע. עם זאת, הפשרה היא שהמספר הכולל של "shots" חייב לגדול בגורם שתלוי במספר ובסוג החיתוכים שנעשו (המכונה תקורת הדגימה). חיתוך מעגלים יכול לשמש גם להנדסת Gate-ים בין Qubit-ים מרוחקים שאחרת היו דורשים תקורת SWAP גדולה.

מונחים חשובים

  • תת-מעגלים (Subcircuits): קבוצת המעגלים הנוצרת מחיתוך Gate-ים ב-QuantumCircuit ולאחר מכן הפרדת תת-קבוצות ה-Qubit-ים המנותקות למעגלים קטנים יותר. מעגלים אלה מכילים אובייקטי SingleQubitQPDGate ומשמשים ליצירת כל תת-ניסוי.

  • תת-ניסוי (Subexperiment): מונח המתאר את דגימות המעגל הייחודיות המשויכות לתת-מעגל, הנשלחות ל-QPU לביצוע.

התקנת חבילת חיתוך המעגלים

ישנן שלוש דרכים להתקין את חבילת חיתוך המעגלים: PyPI, בנייה מהמקור, והרצה בסביבה מכולאת. מומלץ להתקין חבילות אלה בסביבה וירטואלית כדי להבטיח הפרדה בין תלויות החבילות.

התקנה מ-PyPI

הדרך הפשוטה ביותר להתקין את חבילת qiskit-addon-cutting היא עם PyPI:

pip install qiskit-addon-cutting

התקנה מהמקור

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

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

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

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

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

שימוש בתוך Docker

ה-Dockerfile הכלול במאגר התוסף יכול לשמש לבניית Docker image. קובץ ה-compose.yaml הכלול מאפשר להשתמש ב-Docker image עם הפקודות הבאות.

לחץ כאן לקריאה על שימוש בחבילה זו בתוך Docker.

git clone git@github.com:Qiskit/qiskit-addon-cutting.git
cd qiskit-addon-cutting
docker compose build
docker compose up
הערה

אם אתה משתמש ב-podman ו-podman-compose במקום ב-docker, הפקודות הן:

podman machine start
podman-compose --podman-pull-args short-name-mode="permissive" build
podman-compose up

לאחר שהמכולה פועלת, אמורה להופיע הודעה דומה ל:

notebook_1  |     To access the server, open this file in a browser:
notebook_1 | file:///home/$USERNAME/.local/share/jupyter/runtime/jpserver-7-open.html
notebook_1 | Or copy and paste one of these URLs:
notebook_1 | http://e4a04564eb39:8888/lab?token=00ed70b5342f79f0a970ee9821c271eeffaf760a7dcd36ec
notebook_1 | or http://127.0.0.1:8888/lab?token=00ed70b5342f79f0a970ee9821c271eeffaf760a7dcd36ec

ה-URL האחרון בהודעה זו יעניק לך גישה לממשק Jupyter notebook.

בנוסף, תיקיית הבית כוללת תיקיית משנה בשם persistent-volume. כל עבודה שתרצה לשמור צריכה להיות מוצבת בתיקייה זו, מכיוון שהיא היחידה שתישמר בין הרצות מכולה שונות.

רקע תיאורטי

בתהליך חיתוך המעגלים, ישנם שני סוגי חיתוכים: חיתוך Gate או "חיתוך מרחבי", שבו חיתוך עובר דרך Gate הפועל על שני Qubit-ים (או יותר), וחיתוך Wire או "חיתוך זמני", שחותך ישירות דרך wire של Qubit (בעצם Gate זהות חד-Qubit שנחתך לשני חלקים).

הדיאגרמה הבאה מציגה דוגמה לחיתוך Gate-ים כדי שניתן יהיה לפצל את המעגל לשני חלקים קטנים יותר עם פחות Qubit-ים.

Diagram of gate cutting by taking one larger circuit and cutting it into two smaller ones labeled "A" and "B"

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

בעוד שחיתוך מעגלים יכול לשמש לביצוע מעגלים קוונטיים גדולים יותר ממה שאפשרי על החומרה הזמינה כיום, הדבר כרוך בעלות. מכיוון שניתן לנסח את הטכניקה כבעיית פירוק סבירות מדומה (QPD), נדרשת תקורת דגימה מעריכית כדי לבנות מחדש את התוצאות. תקורה זו היא הגורם שבו צריך לגדול המספר הכולל של "shots" כדי שפירוק הסבירות המדומה יביא לאותה כמות שגיאה, ϵ\epsilon, שהיית מקבל בביצוע המעגל המקורי. כל Gate חתוך תורם לתקורה זו, וכמות התקורה שנוספת תלויה בסוג ה-Gate שנחתך (פרטים נוספים על תקורת הדגימה ניתן למצוא בנספח האחרון של [1]).

לדוגמה, Gate CNOT חתוך בודד גורם לתקורת דגימה של 9 [2,6] ומעגל עם nn חיתוכי Wire גורר תקורת דגימה של O(16n)\mathcal{O}(16^n) כאשר תקשורת קלאסית אינה זמינה (תרחיש LO). זה מצטמצם ל-O(4n)\mathcal{O}(4^n) כאשר תקשורת קלאסית הופכת זמינה (תרחיש LOCC) [4]. עם זאת, חיתוך Wire עם תקשורת קלאסית (LOCC) אינו נתמך על ידי חבילה זו.

פורמלית, בעיית ה-QPD של חיתוך מעגלים ניתנת לביטוי כך:

U=iaiFi, \mathcal{U} = \sum_i a_i \mathcal{F}_i,

כאשר U\mathcal{U} הוא הערוץ הקוונטי המיישם את הפעולה הרצויה, וכל aia_i הוא מקדם ממשי המתאים לערוץ Fi\mathcal{F}_i, שניתן לביצוע על חומרה.

התוצאות השקולות לערוץ הרצוי U\mathcal{U} מתקבלות תחילה על ידי יצירת המקדמים aia_i, ולאחר מכן ביצוע תת-ניסויים לקבלת תוצאות הערוצים השונים Fi\mathcal{F}_i כדי לבנות מחדש את ערכי ההציפייה המתאימים ל-U\mathcal{U}.

דוגמה קצרה: חיתוך RZZGate

כדוגמה מפורשת בסיסית, שקול את הפירוק של RZZGate חתוך (פרטים ניתן למצוא ב-[2]). מעגל קוונטי המכיל RZZGate ניתן לסימולציה על ידי ביצוע שישה תת-ניסויים שבהם ה-RZZGate הוחלף רק בפעולות חד-Qubit (אלה הם ה-Fi\mathcal{F}_i-ים מהמשוואה לעיל). תוצאות מעגל זה נבנות מחדש על ידי שילוב תוצאות כל תת-ניסוי לצד קבוצת מקדמים (ה-aia_i-ים מהמשוואה לעיל), שיכולים להיות חיוביים או שליליים.

עבור ערך פרמטר θ\theta כלשהו ל-RZZGate, ששת תת-הניסויים הם:

  1. עם מקדם a1=cos2(θ/2)a_1 = \cos^2(\theta/2), לא לעשות דבר (III\otimes I)
  2. עם מקדם a2=sin2(θ/2)a_2 = \sin^2(\theta/2), לבצע ZGate על כל Qubit (ZZZ\otimes Z)
  3. עם מקדם a3=sin(θ)/2a_3 = -\sin(\theta)/2, לבצע מדידה השלכתית בבסיס ZZ על ה-Qubit הראשון ו-SS על השני (MzSM_z\otimes S). אם תוצאת המדידה היא 11, להפוך את סימן תרומת אותה תוצאה במהלך הבנייה מחדש.
  4. עם מקדם a4=sin(θ)/2a_4 = \sin(\theta)/2, לבצע מדידה השלכתית בבסיס ZZ על ה-Qubit הראשון ו-SS^\dagger על השני (MzSM_z\otimes S^\dagger). אם תוצאת המדידה היא 1, להפוך את סימן תרומת אותה תוצאה במהלך הבנייה מחדש.
  5. זהה ל-3. (a5=a3a_5=a_3), אך להחליף את ה-Qubit-ים (לבצע SMzS\otimes M_z במקום).
  6. זהה ל-4. (a6=a4a_6=a_4), אך להחליף את ה-Qubit-ים (לבצע SMzS^\dagger\otimes M_z במקום).

טבלת ייחוס לתקורת דגימה

הטבלה הבאה מספקת את גורם תקורת הדגימה עבור מגוון הוראות דו-Qubit, בהנחה שרק הוראה אחת נחתכת.

הוראותזוויות פירוק KAKגורם תקורת דגימה
CSGate, CSdgGate, CSXGate(π/8,0,0)\left(\pi/8, 0, 0\right)3+2(2)2.8283+2\sqrt(2) \approx 2.828
CXGate, CYGate, CZGate, GHGate, ECRGate(π/4,0,0)\left(\pi/4, 0, 0\right)32=93^2=9
iSwapGate, DCXGate(π/4,π/4,0)\left(\pi/4, \pi/4, 0\right)72=497^2 = 49
SwapGate(π/4,π/4,π/4)\left(\pi/4, \pi/4, \pi/4\right)72=497^2 = 49
RXXGate, RYYGate, RZZGate, RZXGate(θ/2,0,0,)\left(\lvert\theta/2\rvert, 0, 0, \right)(1+2sin(θ))2\left(1 + 2\lvert\sin(\theta)\rvert\right)^2
CRXGate, CRYGate, CRZGate, CPhaseGate(θ/4,0,0)\left(\lvert\theta/4\rvert, 0, 0\right)(1+2sin(θ/2))2\left(1 + 2\lvert\sin(\theta/2)\rvert\right)^2
XXPlusYYGate, XXMinusYYGate(θ/4,θ/4,0)\left(\vert\theta/4\rvert, \lvert\theta/4\rvert, 0\right)(1+4sin(θ/2)+2sin2(θ/2))2\left(1 + 4\lvert\sin(\theta/2)\rvert + 2\sin^2(\theta/2)\right)^2 (בלתי תלוי ב-β\beta)
Move (חיתוך Wire בתרחיש LO)לא רלוונטי42=164^2 = 16

צעדים הבאים

מקורות

[1] Christophe Piveteau, David Sutter, Circuit knitting with classical communication, https://arxiv.org/abs/2205.00016

[2] Kosuke Mitarai, Keisuke Fujii, Constructing a virtual two-qubit gate by sampling single-qubit operations, https://arxiv.org/abs/1909.07534

[3] Kosuke Mitarai, Keisuke Fujii, Overhead for simulating a non-local channel with local channels by quasiprobability sampling, https://arxiv.org/abs/2006.11174

[4] Lukas Brenner, Christophe Piveteau, David Sutter, Optimal wire cutting with classical communication, https://arxiv.org/abs/2302.03366

[5] K. Temme, S. Bravyi, and J. M. Gambetta, Error mitigation for short-depth quantum circuits, https://arxiv.org/abs/1612.02058

[6] Lukas Schmitt, Christophe Piveteau, David Sutter, Cutting circuits with multiple two-qubit unitaries, https://arxiv.org/abs/2312.11638

[7] Jun Zhang, Jiri Vala, K. Birgitta Whaley, Shankar Sastry, A geometric theory of non-local two-qubit operations, https://arxiv.org/abs/quant-ph/0209120