torchquantum
用 PyTorch 语法玩转量子计算:GPU 加速、动态图、自动微分,连接研究与工程
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 PyTorch 语法玩转量子计算:GPU 加速、动态图、自动微分,连接研究与工程
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你是一名量子算法研究员,手中有一台强大的 GPU 服务器,却苦于没有趁手的工具来快速验证脑海中的量子电路创意——传统量子模拟器要么慢得像蜗牛,要么调试困难、梯度难求,要么根本不支持 GPU 加速。MIT 麻省理工学院的 HAN Lab(Harvard-MIT Algorithmic/Nanoscale Hardware Lab)给出了他们的答案:TorchQuantum,一个将量子计算天然嵌入 PyTorch 生态系统的研究框架,让量子电路的设计、模拟、训练,全部可以像写普通 PyTorch 模型一样行云流水。
图1:TorchQuantum 经典-量子混合模型架构示意
图1展示了 TorchQuantum 如何将参数化量子电路(Parameterized Quantum Circuit, PQC)与经典神经网络层串联,构建端到端可训练的混合模型(Hybrid Classical-Quantum Model)。量子部分负责特征编码与非线性变换,经典部分负责数据预处理与最终分类。
TorchQuantum 的核心作者是 MIT EECS 的 Hanrui Wang(王涵睿)博士及其导师 Song Han 教授,实验室隶属于麻省理工学院计算机科学与人工智能实验室(CSAIL)旗下的 HAN Lab。项目的立项动机非常直接:当时市面上的量子模拟工具无法满足深度学习研究者的需求。
具体来说,研究团队在探索量子机器学习(Quantum Machine Learning, QML)时,遇到了三重困境:
2021年2月,TorchQuantum 以开源形式发布,迅速获得了量子计算研究社区的关注。2024年,项目先后被 IBM Qiskit 生态 和 PyTorch 官方生态 接纳为官方集成库,同年还获得了 Unitary Foundation 的 microgrant 资助,在 unitaryHACK 2024 中被重点推荐。ACM 量子计算药物发现挑战赛的冠军团队也使用了 TorchQuantum 作为核心工具。
TorchQuantum 的设计哲学可以浓缩为一句话:让量子电路看起来像 PyTorch 层(Layer)。这听起来简单,背后却有深刻的工程考量。
图2:Quanvolution(量子卷积)电路结构
图2:参数化量子卷积层(Parameterized Quantum Convolution, Quanv)的电路实现。与经典卷积核类似,Quanv 通过可训练的旋转门参数实现图像特征的提取与压缩,不同的是这些操作发生在量子希尔伯特空间中,天然具备指数级表征能力。
PyTorch 的核心竞争力之一是动态计算图——每次前向传播时,网络结构可以动态改变。TorchQuantum 将这一特性引入量子电路:开发者可以在运行时动态添加、删除量子门,插入测量操作,或者根据输入数据的不同条件性地应用不同的门序列。这与 Qiskit 的静态电路构建模式形成鲜明对比。
以一个最简单的 Bell 态电路为例:
import torchquantum as tq
import torchquantum.functional as tqf
# 创建量子设备,bsz=5 表示批大小为5
qdev = tq.QuantumDevice(n_wires=2, bsz=5)
# 施加量子门
qdev.h(wires=0) # Hadamard 门
qdev.cnot(wires=[0, 1]) # CNOT 门 -> 产生纠缠
# 查看量子态
print(qdev) # 动态打印中间状态!
这段代码的精妙之处在于 qdev 对象既像一个量子系统,又像一个 PyTorch 张量设备——可以直接调用 .backward() 获取梯度,可以无缝放入 torch.nn.Module 中与经典层联合训练。
TorchQuantum 的 statevector 模拟器利用 PyTorch 的 GPU 张量运算实现量子态的并行模拟。关键是量子态的维度随比特数指数增长(n 个比特 -> 2^n 维向量),CPU 在这种指数级运算面前力不从心,但 GPU 的数千个 CUDA 核心可以分片处理。
实测数据显示,在单张 NVIDIA V100 GPU 上,TorchQuantum 可以高效模拟 23-25 个量子比特的电路;通过多 GPU 分布式模拟,可以扩展到 30+ 量子比特。这对于探索 NISQ(嘈杂中等规模量子)设备上的算法设计来说,已经足够实用。
此外,TorchQuantum 支持**批模式(Batch Mode)**处理:同一个量子电路结构可以同时对多条输入数据(batch)进行前向传播,张量化的实现避免了 for 循环的巨大开销。在 MNIST 分类等实际任务中,这意味着训练速度可以比 PennyLane 提升数倍。
TorchQuantum 的代码库采用高度模块化的设计,主目录包含以下核心子模块:
| 模块 | 功能 | 关键文件/类 |
|---|---|---|
layer | 参数化量子层(Quantum Layer) | nlocal/(NLocal 架构)、general/(通用层)、entanglement/(纠缠层) |
operator | 量子门(Quantum Gate)与算子 | standard_gates/(标准门集合)、op_hamil_exp.py(哈密顿期望值) |
encoding | 量子特征编码(Feature Encoding) | encodings.py(振幅编码、基编码等) |
functional | 量子门底层实现(Functional API) | 各类量子门的功能性(非面向对象)调用方式 |
algorithm | 量子算法 | vqe.py(变分量子特征求解器)、grover.py(Grover 搜索)、hamiltonian.py(哈密顿量计算)、qft.py(量子傅里叶变换)、quantumnas/(QuantumNAS 神经网络架构搜索) |
measurement | 量子测量 | 期望值计算、采样测量、投影测量 |
plugin | 与外部框架的集成插件 | Qiskit 转换器(支持导出为 Qiskit QuantumCircuit) |
pulse | 脉冲级模拟 | 量子脉冲层面的精确控制 |
noise_model | 噪声模型 | 模拟真实量子硬件的退相干与门错误 |
density | 密度矩阵模拟 | 全密度矩阵模拟(非 statevector),用于开放量子系统 |
图3:反向传播中的参数移位规则示意
图3:TorchQuantum 通过参数移位规则(Parameter Shift Rule)自动计算量子电路参数的梯度,无需有限差分逼近。图中展示了双参数 RX 门的梯度计算路径,红色箭头表示反向传播中的梯度流向。
量子电路的训练依赖于参数的梯度,而 TorchQuantum 的核心创新之一是将 PyTorch 的自动微分(autograd)引擎与量子梯度计算无缝绑定。它支持两种梯度计算方式:
两种方法均与 PyTorch autograd 完全兼容——只需在参数上设置 requires_grad=True,调用 .backward(),梯度自动流回量子参数。
TorchQuantum 不只是一个量子模拟器,更是一个量子算法实验平台。其 algorithm 模块提供了多个前沿量子算法的完整实现:
VQE(变分量子特征求解器):求解分子基态能量的标准量子-经典混合算法。TorchQuantum 提供了完整的 VQE 流水线,包括 UCCSD 变分形式、汉密尔顿量构建、经典优化器(COBYLA/SLSQP)接口。已有研究团队用它成功模拟了 H2、LiH 等小分子。
QuantumNAS:HAN Lab 在 2021 年提出的神经架构搜索(NAS)与量子电路设计的联合优化框架。与传统 NAS 不同,QuantumNAS 在量子电路的参数空间和结构空间上同时进行搜索,目标是找到在给定硬件噪声下泛化能力最强的电路参数化方案。
量子 LSTM:将长短期记忆网络(LSTM)的门控机制迁移到量子电路,用参数化量子门替代经典线性变换,实现序列数据的量子增强处理。
量子卷积(Quanvolution):量子版本的卷积神经网络层,通过参数化量子电路对图像特征进行提取,在某些基准数据集上展示了超越经典 CNN 的分类精度。
图4:经典模型与量子电路的融合训练
图4:展示了 TorchQuantum 设计的经典-量子混合训练流程。左侧为经典特征提取层,中间为参数化量子编码层(PQC),右侧为量子测量与输出层,整个 pipeline 可通过标准 PyTorch 优化器一键训练。
TorchQuantum 的一个重要工程优势是其开放集成策略:
Qiskit 集成:通过 torchquantum.plugin 模块,TorchQuantum 可以将内部量子电路转换为 Qiskit QuantumCircuit 对象,从而无缝部署到 IBM Quantum 真实量子计算机上。团队提供了 converter_tq_qiskit 示例,展示 MNIST 分类模型直接在 IBM Quito 量子芯片上运行的完整流程。
PyTorch 生态:TorchQuantum 已被纳入 PyTorch 官方生态页面(pytorch.org/ecosystem),享受 PyTorch 官方的生态背书与技术曝光。对于已有 PyTorch 经验的深度学习工程师而言,学习成本几乎为零。
IBM Qiskit 生态:项目已被 Qiskit Ecosystem 官方收录,说明其代码质量与兼容性通过了 IBM 团队的严格验证。
TorchQuantum 的安装非常直接,通过 pip 可直接安装:
pip install torchquantum
但要注意,项目要求 Python >= 3.10,且对 PyTorch 版本有依赖(>= 1.8.0)。从源码安装同样简洁:
git clone https://github.com/mit-han-lab/torchquantum.git
cd torchquantum
pip install --editable .
GPU 支持需要额外安装对应 CUDA 版本的 PyTorch,建议配合 conda 或 pip 安装。
sec1_basic.ipynb、sec2_gate.ipynb),适合作为量子计算入门课程的实验材料。值得注意的是,TorchQuantum 并非通用量子模拟器的替代品:
TorchQuantum 的出现,折射出一个更大的趋势:量子计算工具链正在快速向深度学习工程师靠拢。过去,量子计算研究者和深度学习研究者使用完全不同的工具栈,协作成本极高。TorchQuantum 代表了一种量子计算民主化的路径——不需要深入理解量子物理,就能用熟悉的 PyTorch 语法探索量子增强的机器学习模型。
从增长曲线来看,项目在 2021-2024 年间保持了稳定的 stars 增长(目前 1635,255 forks),issues 活跃度较高(96 open),社区贡献者包括来自 MIT、清华大学、上海交通大学等多所高校的研究者。2024 年进入 PyTorch/Qiskit 两大生态,标志着项目从个人研究工具升级为社区基础设施。
对于 AI 开发者而言,TorchQuantum 提供了一个低门槛的量子计算实验场——可以在笔记本上用 CPU 模拟 5-10 比特的电路学习原理,在 GPU 服务器上用 20+ 比特探索前沿算法,最终通过 Qiskit 桥接在 IBM 真实量子芯片上验证想法。这种渐进式探索的能力,是 TorchQuantum 最独特的价值。
图5:量子卷积核与经典卷积核的对比电路
图5:参数化量子卷积核的参数空间可视化。每个量子比特位置对应一个可训练的旋转门参数,通过梯度下降优化这些参数,可以自动学习对分类任务最有利的特征提取模式,而无需手工设计卷积核。
本文基于 GitHub 仓库(mit-han-lab/torchquantum,MIT License)源码分析、官方文档及公开资讯撰写,图片均来自项目官方仓库。