QML 概览与后端
unitarylab.library.qml 提供以 PyTorch 张量为数据接口的量子机器学习组件,覆盖离散变量线路、连续变量线路、模型训练、量子核、噪声和混合神经网络。QML 包采用子模块组织,推荐从具体子模块导入。
典型工作流
数据集与预处理
↓
编码层 → 参数化 ansatz → 读出层
↓
QML 模型 / PyTorch 包装层
↓
后端执行 → 损失与梯度 → 优化器
↓
指标、诊断、检查点与预测最小可运行示例
from unitarylab.library.qml.backends import (
available_backends,
create_backend,
)
print(available_backends())
backend = create_backend("torch")
print(backend.capabilities)内置名称包括:
| 名称 | 后端 | 适用场景 |
|---|---|---|
torch | TorchBackend | PyTorch 离散变量状态模拟与自动微分 |
unitarylab / unitary_lab | UnitaryLabBackend | 执行 UnitaryLab 线路 |
cvtorch / cv_torch | CVTorchBackend | 连续变量 QML 线路 |
后端注册
from unitarylab.library.qml.backends import (
QuantumBackend,
create_backend,
get_backend_class,
register_backend,
)
register_backend("my_backend", MyBackend, overwrite=False)
backend = create_backend("my_backend", device="cpu")| 接口 | 作用 |
|---|---|
available_backends() | 返回已注册名称元组 |
get_backend_class(name) | 返回后端类 |
create_backend(name, **kwargs) | 实例化后端 |
register_backend(name, backend_cls, overwrite=False) | 注册 QuantumBackend 子类 |
名称按小写解析。重复注册默认会失败;只有确认需要替换现有实现时才设置 overwrite=True。
统一执行契约
from unitarylab.library.qml.execution import (
BackendCapabilities,
BackendResult,
ExecutionConfig,
ExecutionRequest,
)BackendCapabilities描述后端支持的设备、测量、批处理和微分能力。ExecutionConfig保存 shots、随机性和执行选项。ExecutionRequest将线路、参数、观测量及配置组合为一次请求。BackendResult统一承载状态、概率、采样或期望值,并保留元数据。
线路在执行前可通过 ValidateCapabilities、DecomposeToBasis 和 TransformProgram 校验、分解与降级。无法满足请求的后端应在执行前报错,不应静默改变测量语义。
选择建议与限制
- 需要 PyTorch 自动微分时优先使用
torch;执行已有unitarylab.Circuit时使用unitarylab。 - shots 执行具有统计波动;精确状态或概率执行的内存随量子比特数指数增长。
- 连续变量线路与离散变量线路使用不同的线路和层类型,不可直接混用。
- 创建模型后固定数据 dtype 和设备,避免参数与输入位于不同设备。
相关页面
最后更新于