cirq
Google量子计算框架。用于面向Google Quantum AI硬件、设计具备噪声感知的电路,或运行量子表征实验时。最适合Google硬件、噪声建模和底层电路设计。对于IBM硬件使用qiskit;进行带自动微分的量子机器学习使用pennylane;进行物理仿真使用qutip。
Cirq - Google 量子计算框架
技能概述
Cirq 是 Google Quantum AI 开源的 Python 量子计算框架,用于设计、模拟和运行量子电路,特别适合 NISQ(含噪声中等规模量子)设备的电路开发和 Google 量子硬件集成。
适用场景
1. Google Quantum AI 硬件开发与运行
当您需要在 Google 的 Sycamore、Weber 或 Willow 量子处理器上运行电路时,Cirq 提供了完整的硬件集成支持。通过 cirq-google 包,您可以将电路编译到设备原生门集合、选择最佳量子比特、提交作业并管理计算任务。需要注意的是,访问 Google Quantum AI 硬件需要已审批的 GCP 项目。
对于其他量子硬件提供商,Cirq 同样支持 IonQ(离子阱 QPU)、Azure Quantum(IonQ 和 Quantinuum 后端)、AQT(阿尔卑斯量子技术)和 Pasqal(中性原子设备)等平台,实现多云量子计算策略。
2. 量子噪声建模与电路优化
研究真实量子设备的噪声特性时,Cirq 提供了丰富的噪声建模工具。您可以使用去极化通道、振幅阻尼、相位阻尼等噪声模型,添加门特定、量子比特特定或热噪声效应。通过密度矩阵模拟器,能够准确模拟含噪声电路的行为,并结合随机基准测试和 XEB(交叉熵基准测试)进行噪声表征。
Cirq 的变换器框架还支持电路优化:合并门、弹出 Z 门、删除可忽略操作、量子比特路由和 SWAP 插入等,帮助减少电路深度和门计数,提升在真实硬件上的执行保真度。
3. 变分量子算法与实验设计
实现 VQE(变分量子本征求解器)、QAOA(量子近似优化算法)或 QPE(量子相位估计)等变分算法时,Cirq 提供了完整的实验设计模式。参数化电路、参数扫描、数据收集和 ReCirq 框架支持系统化的量子实验工作流。
通过与 SciPy 等优化库集成,可以轻松构建变分算法模板。对于复杂实验,ReCirq 提供了可复用的数据生成、收集和分析模式,支持并行数据采集、统计分析和保真度估计,适合量子表征、验证和确认(QCVV)研究。
核心功能
1. 量子电路构建与模拟
Cirq 支持多种量子比特类型(GridQubit、LineQubit、NamedQubit),提供丰富的单量子比特和双量子比特门(Hadamard、CNOT、RY、RZ 等),可构建参数化电路和自定义门。电路按时刻(Moment)组织,支持标准量子电路模式(Bell 态、GHZ 态、量子傅里叶变换 QFT),并支持 OpenQASM 和 JSON 格式的导入导出。
模拟方面,Cirq 提供状态向量模拟器(纯态,更高效)和密度矩阵模拟器(混合态和噪声),支持采样、测量、参数扫描、状态直方图可视化和期望值计算。对于大型电路,量子虚拟机(QVM)提供硬件精确模拟,帮助在实际运行前验证电路行为。
2. 硬件集成与电路编译
Cirq 通过专门的供应商包实现与主流量子硬件平台的集成:
cirq-google:Google Quantum AI 的 Sycamore、Weber、Willow 处理器cirq-ionq:IonQ 的离子阱 QPU 和模拟器azure-quantum[cirq]:Azure Quantum 上的 IonQ 和 Quantinuum 后端cirq-aqt:AQT 的超导量子设备cirq-pasqal:Pasqal 的中性原子设备
每个集成包含设备拓扑表示、量子比特选择、身份验证和作业管理,并支持针对特定硬件门集合的电路优化,确保电路符合设备约束。
3. 噪声建模与错误缓解
Cirq 提供系统的噪声建模能力:噪声通道(去极化、振幅阻尼、相位阻尼)、噪声模型(常数、门特定、量子比特特定、热噪声)、读出噪声以及噪声可视化(热力图)。结合噪声表征技术(随机基准测试、XEB)和错误缓解方法,可以全面评估和改善电路在真实硬件上的性能。
常见问题
Cirq 和 Qiskit 有什么区别?怎么选择?
Cirq 和 Qiskit 都是主流的量子计算框架,但它们针对不同的量子硬件生态系统:
选择 Cirq 的场景:
- 目标硬件是 Google Quantum AI 的处理器(Sycamore、Weber、Willow)
- 需要精细的噪声建模和低级电路设计
- 使用 IonQ、AQT、Pasqal 等与 Cirq 集成的平台
- 重视与 Google 量子软件生态的兼容性
选择 Qiskit 的场景:
- 目标硬件是 IBM Quantum 的设备
- 需要 Qiskit 特有的量子机器学习模块(Qiskit Machine Learning)
- 使用 IBM 的量子中间表示(QIR)生态系统
其他互补框架:
- PennyLane:适合需要自动微分的量子机器学习任务
- QuTiP:适合量子物理模拟和开放量子系统研究
大多数情况下,选择由目标硬件提供商维护的原生框架能获得最佳支持和最新功能。
如何在 Google Quantum AI 硬件上运行电路?
在 Google Quantum AI 硬件上运行电路需要以下步骤:
1. 准备环境和访问权限
# 安装 Cirq Google 包
uv pip install "cirq-google==1.6.1"
您需要拥有已批准的 GCP 项目,并配置 Google Cloud 身份验证。
2. 创建电路并优化
import cirq_google as cg
# 创建电路
circuit = cirq.Circuit(...)
# 针对设备门集合编译
processor = engine.get_processor(processor_id)
circuit = cg.compile_circuit(circuit, device=processor.get_device())
3. 提交作业
project_id = os.environ['GOOGLE_CLOUD_PROJECT']
engine = cg.Engine(project_id=project_id)
sampler = engine.get_sampler(processor_id='weber')
result = sampler.run(circuit, repetitions=1000)
注意事项:
- Google Quantum AI 硬件访问受限,需要申请审批
- 不同处理器的量子比特拓扑和门集合不同
- 建议先在模拟器上测试电路
- 使用校准数据选择最佳量子比特
- 考虑实施错误缓解技术
Cirq 如何模拟噪声量子电路?
Cirq 提供了灵活的噪声建模机制,以下是典型工作流:
1. 添加噪声到电路
# 添加全局噪声
noisy_circuit = circuit.with_noise(cirq.depolarize(p=0.01))
# 添加特定门的噪声
from cirq import InsertStrategy
noisy_circuit = cirq.Circuit()
for moment in circuit:
for op in moment:
noisy_circuit.append(op)
if cirq.has_unitary(op):
noisy_circuit.append(cirq.depolarize(p=0.001).on(op.qubits))
2. 使用密度矩阵模拟器
simulator = cirq.DensityMatrixSimulator()
result = simulator.run(noisy_circuit, repetitions=1000)
3. 构建复杂噪声模型
# 量子比特特定噪声
noise_model = cirq.noise_model(
gate_specific_noise={
cirq.CNOT: cirq.depolarize(p=0.005),
cirq.X: cirq.amplitude_damp(gamma=0.02)
},
qubit_specific_noise={
q(0): cirq.phase_damp(gamma=0.01)
}
)
性能考虑:
- 密度矩阵模拟的时间复杂度为 O(2^2n),量子比特数增加时计算成本快速上升
- 纯态电路优先使用状态向量模拟器(O(2n))
- 噪声建模可以仅应用于关键操作,以平衡准确性和性能
- 使用参数扫描批量研究不同噪声水平的影响