Directed execution model (beta)
ส่วนประกอบทั้งหมดใน directed execution model อยู่ในระหว่างการทดสอบ beta และอาจยังไม่เสถียร เราขอเชิญให้ทดสอบและให้ข้อเสนอแนะโดยการเปิด issue ใน GitHub repository ของ Samplomatic หรือ Qiskit Runtime
อินเทอร์เฟซ Sampler และ Estimator primitive มอบ abstraction ระดับสูงให้นักพัฒนา algorithm ได้มุ่งเน้นนวัตกรรมมากกว่าการแปลงข้อมูล อย่างไรก็ตาม สิ่งเหล่านี้ไม่เหมาะสำหรับนักวิทยาศาสตร์สารสนเทศควอนตัมที่ต้องการการควบคุมและความยืดหยุ่นมากขึ้นสำหรับการทดลองระดับ utility-scale directed execution model ซึ่งอยู่ในระหว่างการเปิดตัว beta ตอบโจทย์ความต้องการนี้ โมเดลการรันนี้มอบส่วนประกอบสำหรับจับ design intent ฝั่ง client และย้ายการสร้าง circuit variant ที่มีต้นทุนสูงไปยังฝั่ง server เพื่อให้ปรับแต่งการลดข้อผิดพลาดและเทคนิคอื่นๆ ได้โดยไม่เสียประสิทธิภาพ โมเดลที่ชัดเจนและประกอบได้นี้ช่วยให้ทดลองเทคนิคใหม่ ทำซ้ำผลลัพธ์ และแบ่งปันวิธีการได้ง่ายขึ้น
ในช่วง beta นี้ directed execution model มุ่งเน้นให้ควบคุมเทคนิคที่ฝังอ ยู่ใน Sampler และ Estimator ที่มีอยู่แล้ว ได้แก่ Pauli twirling, การเรียนรู้และการฉีด noise model และการเปลี่ยน basis รองรับความสามารถอื่นๆ จะค่อยๆ เพิ่มขึ้นตามเวลา
Workflow
เป้าหมายหลักอย่างหนึ่งของ directed execution model คือการมอบวิธีโมดูลาร์ในการนำวิธีการลดข้อผิดพลาดไปใช้ ตัวอย่างเช่น สามารถกำหนดได้ว่า layer ใดใน Circuit จะถูก mitigate หรือปรับอัตรา noise ที่ถูกฉีดเข้า Circuit
ในการนำการลดข้อผิดพลาดไปใช้กับ Circuit ภายใต้ framework นี้ workflow ปกติจะมีขั้นตอนดังนี้ (เครื่องมือที่กล่าวถึงอธิบายเพิ่มเติมในส่วนถัดไป):
-
จัดกลุ่มคำสั่งเป็น box และเพิ่ม annotation ให้กับมัน annotation จะจับ transformation ที่ต้องการโดยไม่ต้องสร้าง circuit variant จริงๆ
-
เรียนรู้ noise model ของ layer ที่ไม่ซ้ำกัน หากจำเป็น โดยใช้ NoiseLearnerV3 ใหม่
-
สร้าง template circuit และ samplex จาก boxed circuit
-
รัน template circuit และ samplex ด้วย primitive Executor ซึ่งจะสร้างและรัน circuit variant ตามคำสั่ง
-
ประมวลผลผลลัพธ์การรันหลังการรัน ตัวอย่างเช่น สามารถนำ post-selection ไปใช้ หรือ extrapolate ค่า expectation ที่ถูก mitigate จากผลลัพธ์การรัน
เครื่องมือสำหรับ directed execution model
เครื่องมือต่อไปนี้สามารถใช้ร่วมกันเพื่อนำเทคนิคการลดข้อผิดพลาดไปใช้ใน directed execution model
Samplomatic
Samplomatic คือ library open-source ใหม่ที่รองรับการสุ่ม sampling แบบกำหนดเอง โดยใช้โครงสร้าง box เพื่อจัดการกับกลุ่มของการดำเนินการ Circuit ที่ควรถือว่ามี noise context ที่เสถียร และใช้ annotation บน box เพื่อให้ประกาศและกำหนดค่า intent ได้ ตัวอย่างเช่น สามารถแบ่ง Circuit เป็น box เพิ่ม twirling annotation ให้แต่ละ box และระบุ twirling group ที่ต้องการ ดังแสดงในรูปต่อไปนี้:

Circuit ที่มี annotated box สามารถนำมาสร้าง template circuit และ samplex ได้ output template circuit คือ parameterized circuit ที่จะรันโดยไม่มีการเปลี่ยนแปลงเพิ่มเติม (นอกจากการกำหนดค่า parameter ต่างกัน) samplex ซึ่งเป็น core type ของ library Samplomatic แทน probability distribution แบบ parametric เหนือ parameter ของ template circuit และฟิลด์ที่มีค่า array ฟิลด์เหล่านี้สามารถใช้ post-process ข้อมูลที่รวบรวมจากการรัน bound template circuit กล่าวอีกนัยหนึ่ง คู่ template circuit และ samplex บอก Executor primitive (อธิบายด้านล่าง) ว่าจะส ร้าง parameter อะไรและรัน bound circuit ใด เนื่องจาก construct สองอย่างนี้ถูกสร้างฝั่ง client จึงสามารถตรวจสอบและสุ่มตัวอย่างในเครื่องเพื่อยืนยัน output ก่อนส่งไปรันบน hardware
เพื่อให้กระบวนการสร้าง annotated box ง่ายขึ้น library Samplomatic ยังมี transpiler pass ที่จัดกลุ่มคำสั่ง Circuit เป็น annotated box โดยอัตโนมัติ ตามกลยุทธ์ที่กำหนด
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Samplomatic ดูเอกสาร guides และ API reference สามารถส่งข้อเสนอแนะและรายงาน bug ใน repository GitHub ได้
Executor primitive
Executor คือ Qiskit Runtime primitive ใหม่ที่รับคู่ template circuit และ samplex เป็น input สร้างและผูกค่า parameter ตาม samplex รัน bound circuit บน hardware และคืน execution result และ metadata โดยปฏิบัติตามคำส ั่งของคู่ input และไม่ตัดสินใจโดยนัยแทนผู้ใช้ เพื่อให้กระบวนการโปร่งใสแต่มีประสิทธิภาพ
หากต้องการเข้าถึง Executor ติดตั้ง branch executor_preview จาก qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
input และ output ของ Executor primitive แตกต่างอย่างมากจาก Sampler และ Estimator ดู Executor API reference สำหรับข้อมูลเพิ่มเติม นอกจากนี้ Executor quickstart guide มีภาพรวมและตัวอย่างโค้ด
NoiseLearnerV3
คล้ายกับ NoiseLearner ปัจจุบัน โปรแกรมช่วย Qiskit Runtime นี้คืน sparse Pauli-Lindblad noise model ที่ใช้ในวิธีการลดข้อผิดพลาดหลายอย่าง รวมถึง PEC, PEA และ PNA ใน NoiseLearner เดิม จะส่งรายการ circuit เข้าไปและโปรแกรมจะแบ่ง circuit เป็น layer และคืน noise model สำหรับแต่ละ layer ที่ไม่ซ้ำกัน ในทางกลับกัน NoiseLearnerV3 ให้ควบคุมวิธีแบ่ง circuit ของตัวเอง และโปรแกรมรับรายการ boxed circuit instruction (เช่น unique layer) เป็น input
NoiseLearnerV3 ยังรองรับการเรียนรู้ measurement noise สำหรับแต่ละชุดคำสั่งใน input list จะรัน Pauli-Lindblad learning protocol หากชุดนั้นมี gate แบบ one-qubit และ two-qubit และรัน TREX protocol หากชุดนั้นมีการวัด
หากต้องการเข้าถึง NoiseLearnerV3 ติดตั ้ง branch executor_preview จาก qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ NoiseLearnerV3 ดูเอกสาร API reference
ขั้นตอนถัดไป
- ลองดู Qiskit addon สองตัว ได้แก่ Shaded lightcones และ Propagated noise absorption ซึ่งสร้างบน execution model นี้