概述#
Kaiwu-PyTorch-Plugin (KPP)#
Kaiwu-PyTorch-Plugin(KPP)是一个 PyTorch 插件,用于在相干光量子计算机上训练和评估玻尔兹曼机(Boltzmann Machine, BM)及其受限形式(Restricted Boltzmann Machine, RBM)。它通过 Kaiwu SDK 调用量子硬件执行玻尔兹曼分布采样,其余计算(如参数更新)在标准 PyTorch 流程中完成。
1. 设计目标#
在保持 PyTorch 原生编程体验的前提下,接入光量子采样能力。
支持标准 BM/RBM 模型的定义、训练与推理。
提供可扩展接口,便于替换采样方法或能量函数。
2. 功能特性#
模型支持 |
标准 RBM 和全连接 BM。 |
层配置 |
可见层与隐藏层维度可自定义。 |
采样方式 |
负相采样通过 Kaiwu SDK 在相干光量子计算机上执行。 |
PyTorch 集成 |
模型参数为 |
3. 扩展机制#
能量函数(如 Ising 形式)与采样器解耦。
用户可通过实现标准接口替换采样策略(例如切换为经典 MCMC 或其他后端)。
支持自定义能量项,适用于非标准 BM 变体。
4. 示例用例#
手写数字生成(基于 MNIST 的 RBM 训练)
Q-VAE(量子变分自编码器)训练流程
5. 适用用户#
研究人员 |
验证量子采样对能量模型训练的影响。 |
开发者 |
构建混合经典-量子生成模型。 |
教育者与学生 |
教学玻尔兹曼机原理与量子采样实践。 |
6. 典型使用流程#
使用 Kaiwu-PyTorch-Plugin 进行能量神经网络训练的典型流程如下:
数据准备:加载并预处理训练数据,转换为模型输入格式
模型定义:实例化 RBM 或 BM 模型,设置可见层和隐藏层维度
优化器配置:使用 PyTorch 优化器(如 SGD、Adam)管理模型参数
训练循环:
从训练数据计算隐藏层表示(正相)
使用采样器从模型分布生成样本(负相)
计算目标函数并反向传播梯度
更新模型参数
模型评估:使用训练好的模型进行特征提取、分类或生成任务
import torch
from torch.optim import SGD
from kaiwu.torch_plugin import RestrictedBoltzmannMachine
from kaiwu.classical import SimulatedAnnealingOptimizer
# 1. 准备数据
x = torch.randint(0, 2, (batch_size, num_visible)).float()
# 2. 定义模型
rbm = RestrictedBoltzmannMachine(num_visible, num_hidden)
# 3. 配置优化器和采样器
optimizer = SGD(rbm.parameters(), lr=0.01)
sampler = SimulatedAnnealingOptimizer()
# 4. 训练循环
for epoch in range(num_epochs):
h = rbm.get_hidden(x) # 正相:计算隐藏层
s = rbm.sample(sampler) # 负相:模型采样
optimizer.zero_grad()
loss = rbm.objective(h, s) # 计算目标函数
loss.backward() # 反向传播
optimizer.step() # 更新参数
7. 引用方式#
如果 Kaiwu-PyTorch-Plugin 对您的学术研究有帮助,欢迎引用:
@software{KaiwuPyTorchPlugin,
title = {Kaiwu-PyTorch-Plugin},
author = {{QBoson Inc.}},
year = {2024},
url = {https://github.com/QBoson/Kaiwu-pytorch-plugin}
}
相关研究论文:
@article{QuantumBoostedDeepLearning,
title = {Quantum-Boosted High-Fidelity Deep Learning},
author = {{QBoson Research Team}},
year = {2025},
url = {https://arxiv.org/pdf/2508.11190}
}