กำหนดค่า Qiskit SDK ในเครื่อง
หลังจากติดตั้งและรัน Qiskit SDK แล้ว มีขั้นตอนเสริมที่ทำได้เพื่อเปลี่ยนพฤติกรรมเริ่มต้นของ Qiskit
ไฟล์กำหนดค่าผู้ใช้
ตำแหน่งหลักสำหรับการกำหนดค่าในเครื่องของ Qiskit คือไฟล์กำหนดค่าผู้ใช้ เป็นไฟล์รูปแบบ .ini ที่ใช้เปลี่ยนการตั้งค่าเริ่มต้นของ Qiskit ได้
ตัวอย่าง:
[default]
circuit_drawer = mpl
circuit_mpl_style = default
circuit_mpl_style_path = ~:~/.qiskit
state_drawer = hinton
transpile_optimization_level = 3
parallel = False
num_processes = 15
min_qpy_version = 14
โดยค่าเริ่มต้น ไฟล์นี้อยู่ที่ ~/.qiskit/settings.conf แต่สามารถเปลี่ยนเส้นทางได้ด้วย environment variable QISKIT_SETTINGS
ตัวเลือกที่ใช้ได้
-
circuit_drawer: เปลี่ยนระบบเริ่มต้นสำหรับ circuit drawer สามารถตั้งเป็นlatex,mpl,text, หรือlatex_sourceเมื่อไม่ได้ตั้งค่า kwarg ของ output อย่างชัดเจน ระบบวาดนี้จะถูกใช้ -
circuit_mpl_style: สไตล์ชีตเริ่มต้นที่ใช้สำหรับระบบเอาต์พุต mpl ของ circuit drawer ค่าที่ใช้ได้คือdefaultหรือbw -
circuit_mpl_style_path: เส้นทางที่ circuit drawer ใช้ในการค้นหาสไตล์ชีต JSON เมื่อใช้โหมดเอาต์พุต mpl -
state_drawer: ใช้เพื่อเปลี่ยนระบบเริ่มต้นสำหรับเมธอดวาดภาพการแสดงผลสถานะ ค่าที่ใช้ได้คือrepr,text,latex,latex_source,qsphere,hinton, หรือblochเมื่อไม่ได้ตั้งค่า kwarg output อย่างชัดเจนในเมธอด qiskit.quantum_info.DensityMatrix.draw จะใช้เมธอดเอาต์พุตที่ระบุนี้ -
transpile_optimization_level: เปลี่ยนระดับการปรับให้เหมาะสมเริ่มต้นสำหรับ qiskit.compiler.transpile ระบุจำนวนเต็ม 0-3 -
parallel: ระบุว่าเปิดใช้งาน Python multiprocessing สำหรับการทำงานที่รองรับการรันแบบขนานหรือไม่ ตัวอย่างเช่น การแปลง (transpilation) ของอ็อบเจ็กต์ qiskit.circuit.QuantumCircuit หลายตัว การตั้งค่านี้สามารถถูกแทนที่ได้ด้วยตัวแปรสภาพแวดล้อมQISKIT_PARALLELระบุค่าบูลีน -
num_processes: จำนวนโปรเซสขนานสูงสุดที่จะเริ่มสำหรับการทำงานแบบขนานหากเปิดใช้งานการรันแบบขนาน การตั้งค่านี้สามารถถูกแทนที่ได้ด้วยตัวแปรสภาพแวดล้อมQISKIT_NUM_PROCSระบุจำนวนเต็มที่มากกว่า0 -
min_qpy_version: การโหลด QPY จะปฏิเสธไฟล์ที่มีเวอร์ชัน QPY ต่ำกว่าที่กำหนดไว้ที่นี่ ตัวเลือกนี้สามารถใช้เพื่อจำกัดเวอร์ชัน QPY ที่อนุญาตเมื่อพบปัญหาความปลอดภัยในการดีซีเรียลไลซ์ในเวอร์ชัน QPY ที่เก่ากว่า เพื่อป้องกันการโหลดเพย์โหลดที่อาจเป็นอันตราย
- การตั้งค่า circuit drawer ใช้กับ qiskit.circuit.QuantumCircuit.draw และ qiskit.visualization.circuit_drawer
- เมธอด draw ของการแสดงผลสถานะคือ qiskit.quantum_info.Statevector.draw และ qiskit.quantum_info.DensityMatrix.draw
ตัวแปรสภาพแวดล้อม
ตั้งค่า environment variables เหล่านี้เพื่อเปลี่ยนพฤติกรรมเริ่มต้นของ Qiskit:
-
QISKIT_PARALLEL: เปิดใช้งาน Python multiprocessing เพื่อทำงานบางอย่างแบบขนาน เช่น การ transpile ของหลาย Circuit ใน Qiskit ระบุค่า boolean -
QISKIT_NUM_PROCS: จำนวนสูงสุดของกระบวนการขนานที่จะเปิดใช้สำหรับการดำเนินการแบบขนานหากเปิดใช้งาน parallel execution ระบุจำนวนเต็มที่มากกว่าศูนย์ -
RAYON_NUM_THREADS: จำนวน thread สำหรับรันการดำเนินการแบบ multi-threaded ใน Qiskit โดยค่าเริ่มต้น โค้ด multi-threaded จะเปิด thread สำหรับแต่ละ logical CPU หากต้องการปรับจำนวน thread ที่ Qiskit ใช้ ให้ตั้งค่าเป็นจำนวนเต็ม เช่น การตั้งค่า RAYON_NUM_THREADS=4 จะเปิด 4 thread สำหรับฟังก์ชัน multi-threaded -
QISKIT_FORCE_THREADS: ระบุว่าโค้ด multi-threaded ควรทำงานหลาย thread เสมอ โดยค่าเริ่มต้น หากรันโค้ด multi-threaded ในส่วนของ Qiskit ที่กำลังรันในกระบวนการขนานอยู่แล้ว Qiskit จะไม่เปิดหลาย thread แต่จะรันฟังก์ชันนั้นแบบ serial แทน ที่ทำแบบนี้ก็เพื่อเลี่ยงไม่ให้ CPU ที่มีจำกัดทำงานหนักเกินไป แต่ถ้าต้องการบังคับให้ใช้หลาย thread แม้อยู่ใน multiprocess context ให้ตั้งค่าQISKIT_FORCE_THREADS=TRUE -
QISKIT_SABRE_ALL_THREADS: ควบคุมพฤติกรรมของ layout และ routing pass ใน preset pass manager ของ Qiskit เมื่อตั้งค่าเป็น1หรือTRUEจะใช้ CPU ทั้งหมดที่มีในการรันการทดสอบแบบสุ่มหลายครั้ง ซึ่งสามารถปรับปรุงคุณภาพของผลลัพธ์ได้ โดยเฉพาะสำหรับระบบที่มี CPU/core มากกว่า 20 ตัว แต่ข้อแลกเปลี่ยนคือผลลัพธ์ไม่สามารถทำซ้ำได้เมื่อรันบนฮาร์ดแวร์ท้องถิ่นที่แตกต่างกัน
ขั้นตอนถัดไป
- ลองทำ tutorial เช่น อัลกอริทึม Grover
- รันโปรแกรม Hello world
- อ่านแนวทางการมีส่วนร่วม ถ้าอยากมีส่วนร่วมกับ Qiskit SDK โอเพนซอร์ส