Qiskit Paulice
qiskit-paulice เป็นแพ็กเกจสำหรับฝัง Pauli checks ที่มีประสิทธิภาพต่อฮาร์ดแวร์ลงใน Clifford circuit ใด ๆ บนการเชื่อมต่อของ qubit แบบใดก็ได้ โดยใช้ spacetime stabilizer codes การตรวจสอบเหล่านี้ใช้ตรวจจับข้อผิดพลาดเชิงตรรกะระหว่างการรัน circuit ได้ การทำ postselect เฉพาะตัวอย่างที่ตรวจไม่พบข้อผิดพลาดสามารถปรับปรุง fidelity ของสถานะที่สุ่มจากตัวประมวลผลควอนตัมได้ โดยแลกกับ ancilla qubit บางส่วนและ sampling overhead ที่เพิ่มขึ้น วิธีนี้เหมาะกับฮาร์ดแวร์ยุคใกล้เป็นพิเศษ เพราะมี overhead ของ qubit และ gate ต่ำกว่ามากเมื่อเทียบกับ fault-tolerant quantum computing ขณะที่มี sampling overhead ดีกว่าวิธีลดข้อผิดพลาด (error mitigation) เช่น ZNE หรือ PEC [1]
แม้ spacetime Pauli checks จะใช้สร้างรูทีนตรวจจับข้อผิดพลาดแบบแยกเดี่ยวได้ แต่ก็เกี่ยวข้องกับบริบทของการลดข้อผิดพลาดและการแก้ไขข้อผิดพลาดด้วย การตรวจจับข้อผิดพลาดสามารถเสริมเทคนิคการลดข้อผิดพลาด เช่น probabilistic error cancellation (PEC) โดยจับสัญญาณรบกวนบางส่วนที่กระทบ gate และการวัด ลดผลกระทบของ noise channel ที่ต้องผกผัน และลด sampling overhead ลงได้ นอกจากนี้ยังมองเป็นก้าวแรกสู่ fault tolerance ที่ใช้งานได้จริง เพราะการสร้าง stabilizer codes เพื่อปกป้อง data qubit จากข้อผิดพลาดเชิงตรรกะเป็นแนวคิดหลักของการแก้ไขข้อผิดพลาดแบบดั้งเดิม เนื่องจากวิธีนี้ให้การเข้าถึงสถานะควอนตัมแบบ single-shot จึงใช้ได้ทั้งในเวิร์กโฟลว์ที่อิงการสุ่มตัวอย่างและเวิร์กโฟลว์ที่อิงค่าคาดหวัง
เริ่มต้นใช้งาน
มีคู่มือง่าย ๆ ที่ช่วยให้คุณเริ่มต้นใช้แพ็กเกจนี้ได้อย่างรวดเร็วในคู่มือเริ่มต้นอย่างรวดเร็ว
ตัวอย่างกรณีการใช้งาน
เทคนิคนี้ถูกนำไปใช้ปรับปรุง fidelity ของตัวอย่างจาก circuit ที่เป็น Clifford เป็นหลัก โดยใช้ qubit จริง 97 ตัวเพื่อเข้ารหัส entangling gate เชิงตรรกะ 2415 ตัวบน qubit เชิงตรรกะ 70 ตัว [2]
การอภิปรายทางเทคนิค
การหาชุด spacetime Pauli checks ที่ดี
ชุดของ spacetime Pauli checks ถือว่า “ดี” หากการตรวจสอบแต่ละรายการถูกต้อง มีน้ำหนักต่ำ และมีประสิทธิภาพ
การตรวจสอบประกอบด้วย Pauli rotation แบบมีเงื่อนไข (controlled) จำนวนหนึ่ง, , ที่วางบน wire บางเส้นใน circuit, : สำหรับการตรวจสอบหนึ่งรายการ ตัวควบคุมอยู่บน ancilla qubit ตัวเดียว และการหมุนเกิดขึ้นบน wire ของ qubit เป้าหมายตัวเดียว สำหรับ Clifford circuit การตรวจสอบถูกต้องหาก backpropagated product ของมันเป็น stabilizer ของสถานะที่ circuit อุดมคติเตรียมขึ้น: โดยที่ คือ backpropagator ของ จาก ไปยังจุดเริ่มต้นของ circuit และ คือเซตของ stabilizer ทั้งหมดของ circuit
การตรวจสอบมีน้ำหนักต่ำหากต้องใช้ entangling gate น้อยในการสร้าง อัลกอริทึมเลือกการตรวจสอบจะให้ความสำคัญกับการตรวจสอบที่มีน้ำหนักต่ำและให้การตรวจจับข้อผิดพลาดที่มีประสิทธิภาพที่สุด
การตรวจสอบมีประสิทธิภาพหากจับข้อผิดพลาดได้มากกว่าที่ก่อขึ้นเองมาก Pauli check ประกอบด้วย entangling gate จำนวนหนึ่ง จึงเพิ่มสัญญาณรบกวนของ gate เข้าไปในการคำนวณบ้าง สิ่งสำคัญคือต้องแน่ใจว่าการตรวจสอบที่เพิ่มแต่ละรายการนำความสามารถในการตรวจจับข้อผิดพลาดเพิ่มเข้ามา ประสิทธิภาพของชุดการตรวจสอบสามารถประมาณได้โดยนำ Pauli error ที่การตรวจสอบเผยออกมามารวมเป็น noise channel หลัง postselect แล้วคำนวณผลกระทบของมัน การลด sampling overhead ในการสร้าง inverse noise channel ที่ยังไม่ถูกตรวจจับให้น้อยที่สุดเป็น heuristic ที่ดีในการเลือกการตรวจสอบที่ดี เพราะบ่งบอกว่าการตรวจสอบตรวจจับข้อผิดพลาดไม่ได้มากเพียงใด วิธีที่ช้ากว่าแต่สมจริงกว่าคือทำการสุ่มแบบ Monte Carlo จากสถานะที่มีสัญญาณรบกวนและคำนวณอัตราข้อผิดพลาดเชิงตรรกะของการแจกแจงหลัง postselect ด้วยวิธีเชิงประจักษ์ ทั้งสองวิธีมีให้เป็น cost function ในตัวของฟังก์ชัน qiskit_paulice.add_pauli_checks
การ postselect ตัวอย่างตามข้อมูล syndrome
ในแพ็กเกจนี้ การตรวจสอบหนึ่งรายการสร้างขึ้นโดยใช้ entangling gate ระหว่าง ancilla qubit หนึ่งตัวกับ qubit เป้าหมายหนึ่งตัว ancilla แต่ละตัวเริ่มต้นที่ ดังนั้น จึงเป็น stabilizer ของสถานะอินพุตของมัน การส่ง ไปข้างหน้าจากจุดเริ่มต้นของ ancilla ผ่าน circuit ที่มีการตรวจสอบทั้งหมดจะได้ตัวดำเนินการ Pauli บนเอาต์พุต ซึ่งอาจมีน้ำหนักสูงกว่าและขยายเข้าไปใน payload circuit ดัชนี qubit ที่ตัวดำเนินการเอาต์พุตนี้มีพจน์ที่ไม่ใช่เอกลักษณ์เรียกว่า support ของการตรวจสอบ และการตรวจสอบจะผ่านหากบิต, , ใน support ของการตรวจสอบมี parity เป็นคู่: ตัวอย่างจะถูกเก็บไว้หากการตรวจสอบทุกรายการให้ สำหรับ parity check ของมัน
ฟีเจอร์ของซอฟต์แวร์
-
สร้าง noise model อัตโนมัติจากข้อมูล benchmark ของ backend
-
การหาการตรวจสอบที่เร่งความเร็วด้วย Rust
-
อัลกอริทึมในตัว 3 แบบสำหรับการหาการตรวจสอบ
-
รองรับการทำ RZ gate doping
-
รองรับการรวมการตรวจจับข้อผิดพลาดเข้ากับการลดข้อผิดพลาด
ปัญหาที่ทราบ
-
ไม่มี idling noise ให้ผ่าน
NoiseModel.get_backendและจะถูกละเว้นระหว่างการเลือกการตรวจสอบ -
แม้ขั้นตอนสุ่มหลายขั้นในอัลกอริทึมจะควบคุมได้ด้วย random seed แต่บางฟีเจอร์มีความสุ่มที่ควบคุมด้วย seed ไม่ได้ โดยเฉพาะค่า kwargs ต่อไปนี้ของ
add_pauli_checksจะทำให้การเลือกการตรวจสอบไม่แน่นอน:cost="LER",method="genetic"และmethod="windowed_genetic"หากต้องการพฤติกรรมที่แน่นอน ให้ใช้add_pauli_checks(..., cost="gamma", method="windowed")ซึ่งเป็นค่าเริ่มต้น
งานในอนาคต
-
การจัดการ idling noise เมื่อเลือกการตรวจสอบ
-
ความสุ่มที่ควบคุมได้สำหรับ cost function อัตราข้อผิดพลาดเชิงตรรกะและอัลกอริทึมค้นหาแบบ genetic
การมีส่วนร่วม
ซอร์สโค้ดมีให้ใช้งานบน GitHub
คู่มือนักพัฒนาอยู่ที่ CONTRIBUTING.md ในรูทของรีโพซิทอรีของโปรเจกต์นี้ เมื่อเข้าร่วม คุณควรปฏิบัติตามหลักปฏิบัติของ Qiskit
การอ้างอิงแพ็กเกจนี้
หากคุณใช้แพ็กเกจนี้ในงานวิจัย ให้ใช้ไฟล์ CITATION.bib ในรีโพซิทอรีของโปรเจกต์นี้เพื่ออ้างอิงเอกสารที่เหมาะสม
สัญญาอนุญาต
นโยบายการเลิกใช้ (deprecation)
เราใช้ semantic versioning บางครั้งเราอาจทำการเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้เพื่อปรับปรุงประสบการณ์ผู้ใช้ เมื่อเป็นไปได้ เราจะคงอินเทอร์เฟซเดิมไว้และทำเครื่องหมายว่า deprecated ตราบเท่าที่ยังอยู่ร่วมกับอินเทอร์เฟซใหม่ได้ การปรับปรุงที่สำคัญ การเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้ หรือการเลิกใช้ทุกครั้งจะบันทึกไว้ในบันทึกการเผยแพร่
เอกสารอ้างอิง
-
Simon Martiel, Ali Javadi-Abhari, Low-overhead error detection with spacetime codes, arXiv:2504.15725 [quant-ph].
-
Simon Martiel, et al., Sampling hard circuits with verifiably high fidelity, arXiv:2607.25941 [quant-ph].