跳转至

给实验加入物理噪声

使用 NoiseChannel 声明通道,将它们放进 NoiseModel,通过 LocalBackend.run(noise=...) 交给执行器。先运行理想对照,再一次加入一种通道;同时记录程序、参数、种子、演化设置和采样次数,才能解释差异来自哪里。

通道 对应位置与含义
preparation 初始状态的独立比特翻转
dephasing Analog 演化中的相位翻转过程,参数是速率
gate 每个 Digital 门后的独立比特翻转
idle 明确时长的 Digital 空闲区间退相干
crosstalk 指定控制时段与目标上的相干 XX 项
boundary Hybrid 块边界的振幅阻尼
atom_loss Analog 结束处的占据擦除
readout 末端测量记录的非对称混淆,不改变量子态

通道必须符合程序内容。只有 Digital 门的程序没有 Analog 退相干时长;原子丢失需要轨迹方法;边界通道需要 Hybrid 程序。模型对象能创建,不意味着任意组合都能执行。概率、速率和时长的单位不能互换。

从一个可解析的通道开始

下面在 H–Analog–H 实验中加入退相干,同时计算理想对照和解析预测。代码中的非零 Analog 时长是噪声作用区间。

"""在连续 Hybrid 状态演化中施加 dephasing。

``NoiseModel`` 会选择含噪状态引擎,让 noise channel 直接作用于 density matrix,
而不是在得到 counts 后修改统计值。结果记录所用 method、channel 顺序和状态来源。
"""

from __future__ import annotations

import json

from cascaqit import (
    AHSProgram,
    AtomRegister,
    Circuit,
    HybridProgram,
    LocalBackend,
    Waveform,
)
from cascaqit.simulators import NoiseChannel, NoiseModel, SimulationOptions


def main() -> None:
    """使用 exact density-matrix dephasing 运行单 site D-A-D 程序。"""
    analog = AHSProgram(
        AtomRegister.line(count=1, spacing=5.0),
        program_id="lesson.hybrid.noise.analog",
    ).drive(
        rabi=Waveform.constant(0.4, duration=0.1),
        detuning=Waveform.constant(0.0, duration=0.1),
        phase=0.0,
    )
    program = (
        HybridProgram("lesson.hybrid.noise")
        .digital("prepare", Circuit(1).h(0))
        .analog("evolve", analog)
        .digital("readout_rotation", Circuit(1).h(0))
        .measure_all()
    )
    noise = NoiseModel("lesson.hybrid.dephasing", (NoiseChannel.dephasing(0.3),))
    result = (
        LocalBackend(seed=104, analog_time_steps=4)
        .run(
            program,
            noise=noise,
            shots=32,
            options=SimulationOptions(
                method="density_matrix",
                integrator="fixed_step_krylov",
                max_steps=4,
            ),
        )
        .result()
    )
    report = result.metadata["noise_report"]

    ideal = LocalBackend(seed=104, analog_time_steps=4).run(program, shots=32).result()

    payload = {
        "track": "hybrid_researcher",
        "level": "advanced",
        "lesson": "physical_noise",
        "facts": {
            "method": result.metadata["simulation_execution_config"]["method"],
            "truthfulness": result.metadata["simulation_truthfulness"],
            "channel_types": report["applied_channel_types"],
            "noise_report_hash_present": len(result.metadata["noise_report_hash"])
            == 64,
            "probabilities": result.probabilities,
            "ideal_probabilities": ideal.probabilities,
            "physical_application_count": report["physical_application_count"],
            "measurement_application_count": report["measurement_application_count"],
            "counts_total": sum(result.counts.values()),
        },
        "boundaries": {
            "hardware_execution": False,
            "cloud_execution": False,
            "network_accessed": False,
            "credentials_loaded": False,
        },
    }
    print(json.dumps(payload, sort_keys=True))


if __name__ == "__main__":
    main()

下载完整脚本

python examples/user/tracks/hybrid_researcher/04_advanced_physical_noise_zh.py
{
  "boundaries": {
    "cloud_execution": false,
    "credentials_loaded": false,
    "hardware_execution": false,
    "network_accessed": false
  },
  "facts": {
    "channel_types": [
      "dephasing"
    ],
    "counts_total": 32,
    "ideal_probabilities": {
      "0": 1.0,
      "1": 0.0
    },
    "measurement_application_count": 0,
    "method": "density_matrix",
    "noise_report_hash_present": true,
    "physical_application_count": 1,
    "probabilities": {
      "0": 0.9852227667742534,
      "1": 0.014777233225746552
    },
    "truthfulness": "physical_state_evolution"
  },
  "lesson": "physical_noise",
  "level": "advanced",
  "track": "hybrid_researcher"
}

先比较理想与含噪状态概率,再看有限采样计数。读出误差只改测量记录,不应把它造成的频率变化解释成状态演化。增加 shots 可减少测量频率波动,不能消除物理噪声;增加 trajectories 针对的是轨迹估计误差。

当 method="auto" 时,执行器会结合噪声和资源选择方法。需要精确密度矩阵对照时显式指定相应方法,并接受不支持组合的拒绝。算法接口可能比通用后端限制更严,例如含噪精确 VQE 目标要求密度矩阵路径。

通道参数见 NoiseChannel,组合规则见 NoiseModel。继续比较多种误差时使用含噪 Hybrid 项目。旧 NoiseModelIR 和确定性 counts 后处理不等于这里的物理噪声演化。

English

SDK 1.0.8a · `6eff6362`