Skip to Content

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)

内置名称包括:

名称后端适用场景
torchTorchBackendPyTorch 离散变量状态模拟与自动微分
unitarylab / unitary_labUnitaryLabBackend执行 UnitaryLab 线路
cvtorch / cv_torchCVTorchBackend连续变量 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 和设备,避免参数与输入位于不同设备。

相关页面

最后更新于