IBM Quantum Composer
มันคืออะไร?
IBM Quantum® Composer เป็นเครื่องมือการเขียนโปรแกรม quantum แบบกราฟิกที่ให้คุณลากและวางการดำเนินการเพื่อสร้าง quantum circuit และรันบนฮาร์ดแวร์ quantum
มันทำอะไรได้บ้าง?
แสดงสถานะ Qubit
ดูว่าการเปลี่ยนแปลง Circuit ของคุณส่งผลต่อสถานะของ Qubit อย่างไร แสดงเป็น q-sphere แบบ interactive หรือ histogram ที่แสดงความน่าจะเป็นของการวัดหรือ statevector simulations
รันบนฮาร์ดแวร์ quantum
รัน Circuit ของคุณบนฮาร์ดแวร์ quantum จริงเพื่อเข้าใจผลกระทบของ device noise
สร้างโค้ดโดยอัตโนมัติ
แทนที่จะเขียนโค้ดด้วยมือ สร้างโค้ด OpenQASM หรือ Python โดยอัตโนมัติที่ทำงานเหมือนกับ Circuit ที่คุณสร้างด้วย Composer
ทัวร์ interface
IBM Quantum Composer มีชุดเครื่องมือที่ปรับแต่งได้เพื่อให้คุณสร้าง แสดงผล และรัน quantum circuit บน quantum processing units (QPUs) ใช้เมนู "More options" บนแต่ละหน้าต่างเพื่อเข้าถึงเครื่องมือและการดำเนินการเพิ่มเติม
-
Operations catalog - เหล่านี้คือ building blocks ของ quantum circuit ลากและวาง Gate และการดำเนินการอื่นๆ เหล่านี้ลงในตัวแก้ไข Circuit แบบกราฟิก Gate ประเภทต่างๆ จะถูกจัดกลุ่มตามสี ตัวอย่างเช่น classical gate เป็นสีน้ำเงินเข้ม phase gate เป็นสีน้ำเงินอ่อน และ non-unitary operations เป็นสีเทา
เพื่อเรียนรู้เกี่ยวกับ gate และการดำเนินการที่มี คลิกขวาที่การดำเนินการแล้วเลือก Info เพื่ออ่านคำจำกัดความ
-
Code editor - ใช้เมนู View เพื่อเปิดหรือปิด code editor ซึ่งให้คุณดูโค้ด OpenQASM หรือ Qiskit สำหรับ Circuit คุณสามารถแก้ไขโค้ด OpenQASM ได้ โค้ด Qiskit เป็น read-only
-
Graphical circuit editor - นี่คือที่ที่คุณสร้าง Circuit ลาก Gate และการดำเนินการอื่นๆ ลงบน "wire" ของ Qubit แนวนอนที่ประกอบเป็น quantum register ของคุณ
เพื่อลบ Gate ออกจาก wire ให้เลือก Gate แล้วคลิกไอคอน trash can
เพื่อแก้ไขพารามิเตอร์และการตั้งค่าบน Gate ที่รองรับการแก้ไข ให้เลือก Gate บน graphical editor แล้วคลิก Edit
-
Toolbar - เข้าถึงเครื่องมือที่ใช้บ่อยเพื่อ undo และ redo การดำเนินการ เปลี่ยน gate alignment และสลับไปยัง inspect mode ด้วย inspect mode คุณจะเห็นมุมมองทีละขั้นของสถานะ Qubit ขณะที่การคำนวณ Circuit ของคุณพัฒนาไป เรียนรู้เพิ่มเติมใน ตรวจสอบ Circuit ของคุณทีละขั้น
-
Phase disks - phase ของ qubit state vector ในระนาบ complex ถูกกำหนดโดยเส้นที่ขยายจากจุดกึ่งกลางของแผนภาพไปยังขอบของ disk สีเทา (ซึ่งหมุนทวนเข็มนาฬิกาไปรอบจุดกึ่งกลาง)
ใช้เมนู View เพื่อแสดงหรือซ่อน phase disks
-
Visualizations - Visualizations แสดงลักษณะ Circuit ของคุณขณะที่คุณสร้าง พวกมันใช้ single-shot statevector simulator ซึ่งแตกต่างจาก QPU ที่ระบุใน "Run circuit" settings โปรดทราบว่า visualizations จะ ignore การดำเนินการวัดใดๆ ที่คุณเพิ่มเข้ามา ลงชื่อเข้าใช้และคลิก Run circuit เพื่อรับผลลัพธ์จาก Backend ที่ระบุแทน
เรียนรู้เพิ่มเติมในส่วน Visualizations
สร้าง แก้ไข และตรวจสอบ quantum circuit
ถ้าต้องการทำงานกับ Circuit ต่อในภายหลัง ให้ดาวน์โหลดไฟล์ Circuit และเก็บไว้ในเครื่องก่อนออกจาก Composer session ปัจจุบัน ใช้ลิงก์ "Save file" ที่มุมบนขว า หรือไปที่เมนู File แล้วเลือก "Save file" เมื่อพร้อมจะทำงานกับ Circuit อีกครั้ง ไปที่เมนู File แล้วเลือก "Upload .qasm file" จากนั้นไปที่ไฟล์ Circuit บน local drive แล้วคลิก Open
1. เปิด IBM Quantum Composer
- (เลือกได้) ถ้ายังไม่ได้ลงชื่อเข้าใช้ IBM Quantum ให้เลือก Sign in ที่มุมบนขวา จากนั้นคุณสามารถลงชื่อเข้าใช้หรือ Create an IBM Cloud account ได้
ถ้าไม่ลงชื่อเข้าใช้ visualizations จะแสดงผลลัพธ์จำลองสำหรับ Qubit สูงสุดสี่ตัวโดยอัตโนมัติ ถ้าต้องการรัน Circuit บน quantum computer หรือถ้าต้องการ visualize Circuit ที่มี Qubit มากกว่าสี่ตัว ต้องลงชื่อเข้าใช้
-
เปิด IBM Quantum Composer โดยคลิกลิงก์บนการนำทางของ หน้า Learning workspace จะแสดง Circuit ว่างที่ยังไม่มีชื่อ คุณสามารถสร้าง Circuit ใหม่หรืออัปโหลดไฟล์ .qasm เพื่อทำงานกับ Circuit ที่สร้างไว้แล้ว
-
ตั้งชื่อ Circuit โดยคลิกที่คำว่า Untitled circuit แล้วพิมพ์ชื่อสำหรับ Circuit ของคุณ คลิกเครื่องหมายถูกเพื่อบันทึกชื่อ
-
(เลือกได้) ปรับแต่ง workspace ของคุณ:
- ใช้เมนู View เพื่อเปลี่ยนจาก theme เริ่มต้นเป็น theme ขาวดำ คุณยังสามารถเลือก panel ที่จะรวมใน workspace ของคุณ จากนั้นใช้เมนูที่มุมขวาของ panel ใดๆ เพื่อเข้าถึงตัวเลือกการปรับแต่งเพิ่มเติม ตัวเลือกในการแสดงหรือซ่อน phase disks เลือก alignment ของ Qubit บน Circuit ของคุณ และ reset workspace เป็นค่าเริ่มต้นอยู่ในเมนู View ด้วย
- สลับระหว่าง workspace theme มืดและสว่างที่มุมล่างขวาของ footer
เพื่อสร้าง Circuit คุณสามารถ ลากและวางการดำเนินการ หรือป้อน โค้ด OpenQASM ลงใน code editor
2. สร้าง Circuit ด้วย drag-and-drop
Operations catalog
ลากและวางการดำเนินการจาก operations catalog ลงบน quantum และ classical registers คลิกไอคอน search แล้วป้อนคำใน search bar เพื่อค้นหาการดำเนินการอย่างรวดเร็ว
ย่อและขยาย operations catalog โดยคลิกไอคอนที่มุมบนขวาของ operations panel คลิกไอคอนถัดจากมันเพื่อสลับระหว่างมุมมอง grid และ list ของ catalog
คลิก ขวาที่ไอคอนการดำเนินการแล้วเลือก Info เพื่อดูคำจำกัดความของการดำเนินการพร้อม QASM reference
เพื่อ undo หรือ redo ใช้ลูกศรโค้งใน toolbar
Alignment
เลือก Freeform alignment เพื่อวางการดำเนินการที่ใดก็ได้บน Circuit สำหรับมุมมองที่กะทัดรัดกว่าของ Circuit ให้เลือก Left alignment เพื่อดูลำดับที่การดำเนินการจะรัน ให้เลือก Layers alignment ซึ่งจะใช้ left alignment และเพิ่ม column delineators ที่บ่งบอกลำดับการรัน จากซ้ายไปขวาและบนลงล่าง
เมื่อวางการดำเนินการบน Circuit แล้ว คุณสามารถลากและวางไปยังตำแหน่งใหม่ได้
คัดลอกและวาง
คลิกการดำเนินการแล้วใช้ไอคอนใน contextual menu เพื่อคัดลอกและวาง
เ ลือกหลายการดำเนินการ
คุณสามารถเลือกการดำเนินการหลายอย่างเพื่อคัดลอกและวาง ลากไปยังตำแหน่งใหม่ หรือจัดกลุ่มเป็น custom unitary operation ที่แสดงใน operations catalog ของคุณและทำหน้าที่เป็น Gate เดียว
เพื่อเลือกมากกว่าหนึ่งการดำเนินการ วางเคอร์เซอร์ไว้นอกการดำเนินการหนึ่ง จากนั้นคลิกและลากข้ามพื้นที่เพื่อเลือก Shift-click การดำเนินการแต่ละอย่างเพื่อเลือกหรือยกเลิกการเลือก เส้นประจะวางกรอบชุดการดำเนินการที่คุณกำลังเลือก และการดำเนินการแต่ละอย่างที่เป็นส่วนหนึ่งของการเลือกจริงๆ จะมีกรอบสีน้ำเงิน
ตัวอย่างเช่น ในภาพต่อไปนี้ Hadamard gate บน q1 และ CX gate ถูกเลือก Hadamard gate บน q0 ไม่ได้ถูกเลือก
เลือก Copy จาก contextual menu เพื่อคัดลอกกลุ่ม
เพื่อวางกลุ่มการดำเนินการ คลิกขวาใน Circuit แล้วเลือก Paste
สร้าง custom operation โดยใช้ฟีเจอร์ group
เพื่อจัดกลุ่มการดำเนินการหลายอย่างเข้าด้วยกันและบันทึกเป็น custom operation ให้เลือกการดำเนินการตามที่อธิบายไว้ข้างต้นก่อน จากนั้นเลือก Group จาก contextual menu คุณจะถูกถามให้ตั้งชื่อ custom operation หรือจะยอมรับชื่อเริ่มต้นก็ได้ คลิก OK และ custom operation จะแสดงเป็นกล่องเดียว ทั้งใน Circuit ของคุณและใน operations catalog
ตอนนี้คุณสามารถลากและวาง operation ใหม่ทั่ว Circuit ได้ โปรดทราบว่า operation จะถูกบันทึกไปยัง Circuit นี้แต่จะไม่ปรากฏใน operations catalog สำหรับ Circuit อื่น
คุณยังสามารถสร้าง custom operation โดยต รงใน OpenQASM code editor ได้ ดู สร้าง custom operation ใน OpenQASM สำหรับข้อมูลเพิ่มเติม
Ungroup custom หรือ predefined operation
เพื่อ ungroup Gate ภายใน custom หรือ predefined operation ให้คลิก operation บน Composer แล้วเลือก Ungroup จาก contextual menu ตอนนี้คุณสามารถย้ายการดำเนินการแต่ละอย่างได้อย่างอิสระ เมื่อคุณ ungroup operation แต่ละ element ใน group เดิมจะรันอย่างอิสระ ซึ่งอาจหมายความว่าพวกมันรันในลำดับที่แตกต่างจากตอนที่จัดกลุ่มรวมกัน
ขยายคำจำกัดความของ operation
เพื่อดูการดำเนินการที่ประกอบกันเป็น custom หรือ predefined operation โดยไม่ต้อง ungroup ให้ค ลิก Expand definition จาก contextual menu เพื่อดู defining gates คลิกไอคอนอีกครั้งเพื่อย่อคำจำกัดความ
เปลี่ยนชื่อหรือลบ custom operation
เพื่อเปลี่ยนชื่อหรือลบ custom operation ให้คลิกขวาที่ operation ใน operations catalog แล้วเลือก Rename หรือ Delete การลบ custom operation จาก operations catalog จะลบทุก instance ของมันบน Circuit ด้วย
การลบ custom operation จาก Circuit เองไม่ได้ลบมันจาก operations catalog คุณสามารถลบ custom operation จาก catalog ได้โดยใช้คลิกขวาแล้วเลือก Delete เท่านั้น
เพิ่มหรือลบ register
เพื่อเพิ่มหรือลบ quantum หรือ classical registers ให้คลิก Edit → Manage registers คุณสามารถเพิ่มหรือลดจำนวน Qubit หรือ bit ใน Circuit ของคุณและเปลี่ยนชื่อ register ได้ คลิก Ok เพื่อใช้การเปลี่ยนแปลง คุณยังสามารถคลิกชื่อ register (เช่น q[0]) แล้วใช้ตัวเลือกใน contextual menu เพื่อเพิ่มหรือลบ register หรือ Qubit ได้อย่างรวดเร็ว
เพิ่ม conditional
เพื่อเพิ่ม conditional ให้กับ Gate ให้ลาก operation if ไปยัง Gate แล้วตั้งค่าพารามิเตอร์ใน Edit operation panel ที่เปิดขึ้นโดยอัตโนมัติ คุณยังสามารถดับเบิลคลิก Gate เพื่อเข้าถึง Edit operation panel และตั้งค่าพารามิเตอร์ conditional ด้วยวิธีนั้น
เพิ่ม control modifier
control modifier ให้ Gate ที่การดำเนินการเดิมขึ้นอยู่กับสถานะของ control qubit สำหรับรายละเอียดเพิ่มเติม คลิกขวาที่สัญลักษณ์ control modifier ใน operations catalog จากนั้ นคลิก Info
ลาก control modifier ไปยัง Gate เพื่อเพิ่ม control ให้กับมัน จุดจะปรากฏบน control qubit และเส้นเชื่อมไปยัง target qubit เพื่อแก้ไขว่า Qubit ไหนเป็น control หรือ target ให้คลิก Gate แล้วเลือกไอคอน Edit operation (หรือดับเบิลคลิก Gate) เพื่อเปิด Edit operation panel จากนั้นระบุพารามิเตอร์ของคุณ จาก Edit operation panel คุณยังสามารถลบ control ออกจาก Qubit โดยคลิก x ถัดจากชื่อ Qubit ได้
แสดงผล phase disks ตลอด Circuit
เพื่อ visualize สถานะของ Qubit ทั้งหมด ณ จุดใดก็ได้ใน Circuit ของคุณ ให้ลากไอคอน phase disk จาก operations catalog แล้ววางที่ใดก็ได้ใน Circuit คอลัมน์ของ barrier operations และคอลัมน์ของ phase disks จะถูกเพิ่ม (barrier operation และ phase disk หนึ่งอันต่อ Qubit) วาง cursor บน phase disk แต่ละอันเพื่ออ่านสถานะของ Qubit ณ จุดนั้นใน Circuit โปรดทราบว่าการเพิ่ม phase disks ไม่ได้เปลี่ยนแปลง Circuit ของคุณ พวกมันเป็นเพียงเครื่องมือ visualization
อ่านเพิ่มเติมเกี่ยวกับ phase disk visualization ที่นี่
Export ภาพ Circuit
เพื่อ export ภาพของ Circuit ของคุณ ให้เลือก File → Export circuit image หน้าต่าง Export options จะเปิดขึ้น ที่นั่นคุณสามารถเลือก theme (light, dark, white on black หรือ black on white), format (.svg หรือ .png) และว่าต้องการใช้ line wrap หรือไม่ หลังจากเลือกตัวเลือกแล้ว คลิก Export
3. สร้าง Circuit ด้วยโค้ด OpenQASM
IBM Quantum Composer ปัจจุบันรองรับ OpenQASM 2.0
- เพื่อเปิด code editor คลิก View → Panels → Code Editor
- ดู Composer operations glossary สำหรับ OpenQASM references ไปยัง gate และการดำเนินการอื่นๆ
- คุณสามารถกำหนด custom operations ของคุณเองได้ ดู สร้าง custom operation ใน OpenQASM
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ภาษา OpenQASM รวมถึงตัวอย่างโค้ด ดู guide Introduction to OpenQASM หรืออ่านงานวิจัยต้นฉบับ Open Quantum Assembly Language ตาราง ของ OpenQASM language statements จากงานวิจัยถูกนำมาแสดงด้านล่าง OpenQASM grammar สามารถพบได้ใน Appendix A ของงานวิจัย
| Statement | คำอธิบาย | ตัวอย่าง |
|---|---|---|
OPENQASM 2.0; | ระบุไฟล์ในรูปแบบ OpenQASM (ดู [a]) | OPENQASM 2.0; |
qreg name[size]; | ประกาศ register ของ Qubit ที่มีชื่อ | qreg q[5]; |
creg name[size]; | ประกาศ register ของ bit ที่มีชื่อ | creg c[5]; |
include "filename"; | เปิดและ parse source file อื่น | include "qelib1.inc"; |
gate name(params) qargs | ประกาศ unitary gate | (ดูข้อความของงานวิจัย) |
opaque name(params) qargs; | ประกาศ opaque gate | (ดูข้อความของงานวิจัย) |
// comment text | Comment บรรทัดของข้อความ | // oops! |
U(theta,phi,lambda) qubit|qreg; | ใช้ built-in single-qubit gate(s) (ดู [b]) | U(pi/2,2*pi/3,0) q[0]; |
CX qubit|qreg,qubit|qreg; | ใช้ built-in CNOT gate(s) | CX q[0],q[1]; |
measure qubit|qreg -> bit|creg; | วัดใน basis | measure q -> c; |
reset qubit|qreg; | เตรียม Qubit ใน | reset q[0]; |
gatename(params) qargs; | ใช้ user-defined unitary gate | crz(pi/2) q[1],q[0]; |
if(creg==int) qop; | ใช้ quantum operation แบบมีเงื่อนไข | if(c==5) CX q[0],q[1]; |
barrier qargs; | ป้องกันการเปลี่ยนแปลงข้าม source line นี้ | barrier q[0],q[1]; |
[a] สิ่งนี้ต้องปรากฏเป็นบรรทัดแรกที่ไม่ใช่ comment ของไฟล์
[b] พารามิเตอร์ theta, phi และ lambda กำหนดโดย parameter expressions สำหรับข้อมูลเพิ่มเติม ดู หน้า 5 ของงานวิจัย และ Appendix A