ข้ามไปยังเนื้อหาหลัก

การตัดวงจร

การตัดวงจร (Circuit cutting) คือเทคนิคที่ใช้เพิ่มขนาดของวงจรที่สามารถรันบนฮาร์ดแวร์ควอนตัมได้ โดยแลกมาด้วยค่าใช้จ่ายในการสุ่มตัวอย่างที่เพิ่มขึ้น addon นี้ใช้งานเทคนิคดังกล่าว โดยตัดเกตบางส่วน, สาย, หรือทั้งสองอย่าง ทำให้ได้วงจรที่เล็กลงและเหมาะสมกว่าสำหรับการรันบนฮาร์ดแวร์ จากนั้นจึงรันวงจรย่อยเหล่านี้ และนำผลลัพธ์ของวงจรดั้งเดิมกลับมาประกอบกันผ่านการประมวลผลแบบคลาสสิก อย่างไรก็ตาม ข้อแลกเปลี่ยนคือจำนวน shot ทั้งหมดต้องเพิ่มขึ้นตามปัจจัยที่ขึ้นอยู่กับจำนวนและประเภทของการตัดที่ทำ (เรียกว่า sampling overhead) การตัดวงจรยังสามารถใช้สร้างเกตระหว่าง Qubit ที่อยู่ห่างกัน ซึ่งหากไม่ใช้วิธีนี้จะต้องแลกด้วย SWAP overhead จำนวนมาก

คำศัพท์สำคัญ

  • Subcircuits: ชุดของวงจรที่เกิดจากการตัดเกตใน QuantumCircuit แล้วแยกกลุ่ม Qubit ที่ไม่เชื่อมต่อกันออกเป็นวงจรย่อย วงจรเหล่านี้มีอ็อบเจกต์ SingleQubitQPDGate และใช้สำหรับสร้างแต่ละ subexperiment

  • Subexperiment: คำที่ใช้อธิบายตัวอย่างวงจรที่ไม่ซ้ำกันซึ่งเกี่ยวข้องกับ subcircuit แต่ละตัว ซึ่งจะถูกส่งไปยัง QPU เพื่อรัน

ติดตั้งแพ็กเกจตัดวงจร

มีสามวิธีในการติดตั้งแพ็กเกจตัดวงจร ได้แก่ PyPI, การสร้างจากซอร์สโค้ด, และการรันในสภาพแวดล้อม container แนะนำให้ติดตั้งแพ็กเกจเหล่านี้ใน virtual environment เพื่อให้แน่ใจว่า dependencies ของแพ็กเกจแยกจากกัน

ติดตั้งจาก PyPI

วิธีที่ตรงไปตรงมาที่สุดในการติดตั้งแพ็กเกจ qiskit-addon-cutting คือผ่าน PyPI:

pip install qiskit-addon-cutting

ติดตั้งจากซอร์สโค้ด

คลิกที่นี่เพื่ออ่านวิธีติดตั้งแพ็กเกจนี้ด้วยตนเอง

เพื่อร่วมพัฒนาแพ็กเกจนี้หรือติดตั้งด้วยตนเอง ให้ clone repository ก่อน:

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

แล้วติดตั้งแพ็กเกจด้วย pip หากต้องการรัน tutorial ที่อยู่ใน repository ของแพ็กเกจ ให้ติดตั้ง notebook dependencies ด้วย ติดตั้ง dependencies ของ dev หากวางแผนจะพัฒนาใน repository

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

ใช้งานภายใน Docker

dockerfile ที่รวมอยู่ใน repository ของ addon สามารถใช้สร้าง 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

เมื่อ container ทำงานแล้ว จะเห็นข้อความคล้ายกับ:

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 งานทั้งหมดที่ต้องการบันทึกควรวางไว้ในไดเรกทอรีนี้ เนื่องจากเป็นไดเรกทอรีเดียวที่จะถูกบันทึกข้ามการรัน container

พื้นฐานทางทฤษฎี

ในกระบวนการตัดวงจร มีการตัดสองประเภท ได้แก่ การตัด เกต หรือ "space-like" ซึ่งตัดผ่านเกตที่ทำงานบน Qubit สองตัว (หรือมากกว่า) และการตัด สาย หรือ "time-like" ซึ่งตัดตรงผ่านสายของ Qubit (โดยพื้นฐานคือเกต identity ของ Qubit เดียวที่ถูกตัดเป็นสองส่วน)

แผนภาพด้านล่างแสดงตัวอย่างการตัดเกตเพื่อแบ่งวงจรออกเป็นสองส่วนที่เล็กลงพร้อม Qubit ที่น้อยลง

แผนภาพการตัดเกตโดยนำวงจรขนาดใหญ่หนึ่งวงจรมาตัดเป็นสองวงจรเล็กที่มีป้ายกำกับ "A" และ "B"

มีสามสถานการณ์ที่ต้องพิจารณาเมื่อเตรียมกระบวนการทำงานในการตัดวงจร ซึ่งเกี่ยวข้องกับความพร้อมใช้งานของการสื่อสารแบบคลาสสิกระหว่างการรันวงจร สถานการณ์แรกคือมีเฉพาะการดำเนินงานแบบโลคัล (LO) เท่านั้น ส่วนอีกสองสถานการณ์จะมีการสื่อสารแบบคลาสสิกระหว่างการรัน เรียกว่าการดำเนินงานแบบโลคัลและการสื่อสารแบบคลาสสิก (LOCC) สถานการณ์ LOCC แบ่งออกเป็นการสื่อสารแบบ near-time ทิศทางเดียวระหว่างการรันวงจร หรือการสื่อสารแบบ real-time สองทิศทาง (ซึ่งอาจพบในสภาพแวดล้อม multi-QPU)

แม้ว่าการตัดวงจรสามารถใช้รันวงจรควอนตัมที่มีขนาดใหญ่กว่าที่ฮาร์ดแวร์ปัจจุบันรองรับได้ แต่ก็มีค่าใช้จ่าย เนื่องจากเทคนิคนี้สามารถกำหนดเป็นปัญหา quasi-probability decomposition (QPD) จึงมี sampling overhead แบบ exponential ที่จำเป็นในการประกอบผลลัพธ์กลับคืน overhead นี้คือปัจจัยที่จำนวน shot ทั้งหมดต้องเพิ่มขึ้นเพื่อให้ quasi-probability decomposition ให้ค่าความผิดพลาด ϵ\epsilon เท่ากับที่จะได้จากการรันวงจรดั้งเดิม เกตที่ถูกตัดแต่ละตัวมีส่วนในการเพิ่ม overhead และปริมาณ overhead ที่เพิ่มขึ้นขึ้นอยู่กับประเภทของเกตที่ถูกตัด (รายละเอียดเพิ่มเติมเกี่ยวกับ sampling overhead อยู่ในภาคผนวกสุดท้ายของ [1])

ตัวอย่างเช่น เกต CNOT ที่ถูกตัดหนึ่งตัวมี sampling overhead เป็น 9 [2,6] และวงจรที่มีการตัดสาย nn ครั้งมี sampling overhead เป็น O(16n)\mathcal{O}(16^n) เมื่อไม่มีการสื่อสารแบบคลาสสิก (สถานการณ์ LO) ซึ่งลดลงเป็น O(4n)\mathcal{O}(4^n) เมื่อมีการสื่อสารแบบคลาสสิก (สถานการณ์ LOCC) [4] อย่างไรก็ตาม การตัดสายพร้อมการสื่อสารแบบคลาสสิก (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 ก่อน จากนั้นรัน subexperiment เพื่อรับผลลัพธ์ของช่องทางต่าง ๆ Fi\mathcal{F}_i เพื่อประกอบค่า expectation values ที่สอดคล้องกับ U\mathcal{U}

ตัวอย่างสั้น: การตัด RZZGate

เป็นตัวอย่างพื้นฐานที่ชัดเจน ลองพิจารณา decomposition ของ RZZGate ที่ถูกตัด (รายละเอียดอยู่ใน [2]) วงจรควอนตัมที่มี RZZGate สามารถจำลองได้โดยการรัน subexperiment หกตัว ซึ่ง RZZGate ถูกแทนที่ด้วยการดำเนินงาน Qubit เดียวเท่านั้น (นี่คือ Fi\mathcal{F}_i จากสมการด้านบน) ผลลัพธ์ของวงจรนี้ประกอบขึ้นโดยการรวมผลลัพธ์ของแต่ละ subexperiment กับชุดค่าสัมประสิทธิ์ (aia_i จากสมการด้านบน) ซึ่งอาจเป็นบวกหรือลบก็ได้

สำหรับพารามิเตอร์ θ\theta ที่เลือกของ RZZGate subexperiment ทั้งหกมีดังนี้:

  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 ทำการวัดแบบ projective ในฐาน ZZ บน Qubit แรก และ SS บน Qubit ที่สอง (MzSM_z\otimes S) หากผลการวัดเป็น 11 ให้พลิกเครื่องหมายของส่วนที่ผลลัพธ์นั้นมีส่วนในระหว่างการประกอบ
  4. โดยมีค่าสัมประสิทธิ์ a4=sin(θ)/2a_4 = \sin(\theta)/2 ทำการวัดแบบ projective ในฐาน ZZ บน Qubit แรก และ SS^\dagger บน Qubit ที่สอง (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 แทน)

ตารางอ้างอิง sampling overhead

ตารางต่อไปนี้แสดงปัจจัย sampling overhead สำหรับคำสั่ง two-qubit หลายประเภท โดยกำหนดว่าตัดคำสั่งเพียงหนึ่งตัว

คำสั่งKAK decomposition anglesปัจจัย sampling overhead
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 (independent of β\beta)
Move (ตัดสายในสถานการณ์ LO)N/A42=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

Source: IBM Quantum docs — updated 13 ก.พ. 2569
English version on doQumentation — updated 7 พ.ค. 2569
This translation based on the English version of 11 มี.ค. 2569