用途
Cirq 是 Google Quantum AI 的开源框架,用于在 Python 中设计、模拟和运行量子电路,目标场景包括 NISQ 电路构建与优化、在 Google Quantum AI 处理器或合作方后端上运行任务、噪声建模与硬件门集编译、以及表征实验设计。若面向 IBM 硬件应改用 qiskit;若做带自动微分的量子机器学习应改用 pennylane;若做物理模拟应改用 qutip。
主要能力
- 电路构建:支持 GridQubit、LineQubit、NamedQubit 等量子比特类型,单比特与双比特门、参数化门与操作、自定义门分解、以 moment 组织电路、标准电路模式(Bell 态、GHZ、QFT)、OpenQASM 与 JSON 导入导出,以及 qudit 与可观测量处理。
- 模拟:精确模拟(态矢量、密度矩阵)、采样与测量、单参数与多参数扫描、含噪模拟、态直方图与可视化、量子虚拟机(QVM)、期望值与可观测量、性能优化。
- 电路变换:Transformer 框架、门分解、电路优化(合并门、弹出 Z 门、丢弃可忽略操作)、面向硬件的编译、量子比特路由与 SWAP 插入、自定义 transformer、变换流水线。
- 硬件集成:支持 Google Quantum AI(cirq-google,Sycamore、Weber、Willow 处理器,经 Quantum Engine,访问受限,需已批准的 GCP 项目)、IonQ(cirq-ionq)、Azure Quantum(azure-quantum[cirq],含 IonQ 与 Honeywell/Quantinuum 后端)、AQT(cirq-aqt)、Pasqal(cirq-pasqal)。涵盖设备表示、量子比特选择、认证、作业管理与硬件电路优化。
- 噪声建模:噪声信道(去极化、振幅阻尼、相位阻尼)、噪声模型(常量、门相关、量子比特相关、热噪声)、向电路添加噪声、读出噪声、噪声表征(随机基准测试、XEB)、噪声可视化(热力图)、错误缓解技术。
- 量子实验:实验设计模式、参数扫描与数据采集、ReCirq 框架结构、常见算法(VQE、QAOA、QPE)、数据分析与可视化、统计分析与保真度估计、并行数据采集。
使用方式
安装需 Python 3.11+,当前稳定版为 1.6.1(2025 年 8 月),各厂商包共享同一版本号。基础安装:
uv pip install "cirq==1.6.1"
硬件集成安装(为可复现性固定匹配版本):
Google Quantum Engine(需已批准的 GCP 项目访问权限)
uv pip install "cirq-google==1.6.1"
IonQ
uv pip install "cirq-ionq==1.6.1"
AQT (Alpine Quantum Technologies)
uv pip install "cirq-aqt==1.6.1"
Pasqal
uv pip install "cirq-pasqal==1.6.1"
Azure Quantum (IonQ, Honeywell/Quantinuum backends)
uv pip install "azure-quantum[cirq]"
开发期可省略版本固定以获取最新特性;生产或硬件运行时应将所有包固定到同一 Cirq 版本。
基础电路示例:
import cirq import numpy as np
Create qubits
q0, q1 = cirq.LineQubit.range(2)
Build circuit
circuit = cirq.Circuit( cirq.H(q0), # Hadamard on q0 cirq.CNOT(q0, q1), # CNOT with q0 control, q1 target cirq.measure(q0, q1, key='result') )
print(circuit)
Simulate
simulator = cirq.Simulator() result = simulator.run(circuit, repetitions=1000)
Display results
print(result.histogram(key='result'))
参数化电路示例:
import sympy
Define symbolic parameter
theta = sympy.Symbol('theta')
Create parameterized circuit
circuit = cirq.Circuit( cirq.ry(theta)(q0), cirq.measure(q0, key='m') )
Sweep over parameter values
sweep = cirq.Linspace('theta', start=0, stop=2*np.pi, length=20) results = simulator.run_sweep(circuit, params=sweep, repetitions=1000)
Process results
for params, result in zip(sweep, results): theta_val = params['theta'] counts = result.histogram(key='m') print(f"θ={theta_val:.2f}: {counts}")
适用场景
- 在 Python 中构建、模拟或优化 NISQ 电路。
- 在 Google Quantum AI 处理器(经 cirq-google)或合作方后端(IonQ、Azure Quantum、AQT、Pasqal)上运行作业。
- 对噪声建模、编译到硬件门集,或设计表征实验。
- 使用参数扫描、transformer 或 ReCirq 实验模式。
限制与注意事项
- Google Quantum Engine 访问受限,需已批准的 GCP 项目。
- 密度矩阵模拟复杂度为 O(2^2n),大系统内存消耗增长快,应优先使用态矢量模拟,仅在需要混合态或噪声时使用密度矩阵。
- 硬件运行前应先在模拟器上测试,并依据校准数据选择最佳量子比特、针对目标硬件门集优化电路。
- 版本相关细节可能过时,应以所安装版本的官方文档为准。
- 涉及花钱、消耗共享 GPU 或云配额、触碰个人或患者数据、或不可撤销的操作前应先询问。
官方资源
- 官方文档:https://quantumai.google/cirq
- API 参考:https://quantumai.google/reference/python/cirq
- 教程:https://quantumai.google/cirq/tutorials
- 示例:https://github.com/quantumlib/Cirq/tree/main/examples
- 版本策略:https://quantumai.google/cirq/dev/versions
- ReCirq:https://github.com/quantumlib/ReCirq
相关技能
- pennylane:硬件无关的量子机器学习框架,支持自动微分。
- qiskit:使用 Qiskit 与 IBM Quantum Runtime 构建、模拟、转译和执行量子电路。