【创新应用】新增 QShadow:可观测量感知的经典阴影估计与置信预算控制 - #32
Open
1195214305 wants to merge 1 commit into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
本 PR 在 pyqpanda_alg 中新增 QShadow 模块,提供面向局域 Pauli 测量数据的多可观测量经典阴影估计工作流,并配套了测量规划、逐 shot 数据模型、无偏估计、同时置信区间与 shots 预算控制,以及 NumPy/CPUQVM/远程 executor 的采样执行路径;同时补齐文档、示例与测试集成。
Changes:
- 新增
pyqpanda_alg/QShadow:Pauli 可观测量建模、规划器、数据集、估计器、采样/执行器与公共导出 API。 - 新增端到端示例与离线基准脚本,并补充真机验证证据文件。
- 将 QShadow 接入 Sphinx 教程/AutoAPI、pytest 测试路径与中英文 README 索引。
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| Tutorials/source/QShadow.rst | 新增 QShadow 教程页(工作流、约定、预算、验证与引用)。 |
| Tutorials/source/index.rst | 将 QShadow 教程与 AutoAPI 索引接入 Sphinx toctree。 |
| test/QShadow/Test_sampler.py | 覆盖参考采样、端序转换、counts 校验、max_jobs guard、CPUQVM runner 与自定义 executor。 |
| test/QShadow/Test_planner.py | 覆盖均匀概率、floor 约束优化、loss 单调性与计划采样可复现性。 |
| test/QShadow/Test_observable.py | 覆盖 PauliTerm/Observable 校验、重复项合并与精确期望值参考路径。 |
| test/QShadow/Test_estimator.py | 覆盖逆倾向样本、无偏性回归、轮次合并、Bonferroni 同时区间与预算控制。 |
| test/pytest.ini | 将 testpaths 扩展到 QShadow。 |
| README.md | 顶层中文 README 增加 QShadow 模块条目。 |
| README_EN.md | 顶层英文 README 增加 QShadow 模块条目。 |
| pyqpanda-algorithm/pyqpanda_alg/QShadow/init.py | 定义并导出 QShadow 公共 API。 |
| pyqpanda-algorithm/pyqpanda_alg/QShadow/observable.py | PauliTerm/PauliObservable 与状态向量精确期望值实现。 |
| pyqpanda-algorithm/pyqpanda_alg/QShadow/planner.py | 局域 X/Y/Z 概率优化、planning loss 与测量计划采样。 |
| pyqpanda-algorithm/pyqpanda_alg/QShadow/dataset.py | 逐 shot bases/outcomes/propensities 数据结构与拼接/切片。 |
| pyqpanda-algorithm/pyqpanda_alg/QShadow/estimator.py | 逆倾向无偏估计、经验 Bernstein 半宽、Bonferroni 同时区间与预算控制器。 |
| pyqpanda-algorithm/pyqpanda_alg/QShadow/sampler.py | NumPy 参考测量采样、counts 归一化、计划执行与 PyQPandaRunner。 |
| pyqpanda-algorithm/pyqpanda_alg/QShadow/README.md | QShadow 模块 README(API、约定、云接入、安全与方法说明)。 |
| pyqpanda-algorithm/pyqpanda_alg/init.py | 在顶层包初始化中注册导入 QShadow。 |
| pyqpanda-algorithm/example/QShadow/qshadow_observable_estimation.py | CPUQVM 端到端示例(规划→测量→估计→预算评估)。 |
| pyqpanda-algorithm/example/QShadow/qshadow_planning_benchmark.py | 离线可复现对照基准(固定预算与顺序预算统计)。 |
| pyqpanda-algorithm/example/QShadow/qshadow_wukong_validation_20260726.md | WK_C180 真机验证说明文档与披露。 |
| pyqpanda-algorithm/example/QShadow/qshadow_wukong_validation_20260726.json | WK_C180 真机验证机器可读证据(counts/配置/分析结果)。 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ## 固定预算与实验设计 | ||
|
|
||
| - 后端:`WK_C180`(Origin Wukong 180) | ||
| - SDK:`qpanda3_runtime==1.0.0`、`pyqpanda3==0.3.4` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概述
本 PR 新增
pyqpanda_alg/QShadow,用于从局域 Pauli 测量数据中同时估计多个 Pauli 可观测量。模块覆盖测量基规划、逐 shot 数据记录、无偏估计、同时置信区间和 shots 预算控制,并提供 NumPy 参考采样、PyQPanda3 CPUQVM 运行器及远程后端回调接口。经典阴影和局域偏置 Pauli 阴影已有公开理论基础,本实现主要补充它们在 pyqpanda-algorithm 中的数据模型、规划器、后处理和后端接入流程。
新增模块
pyqpanda_alg/QShadowobservable.pyPauliTerm、PauliObservable及状态向量精确期望值planner.pydataset.pyestimator.pysampler.py公共 API 由
QShadow/__init__.py导出,并在pyqpanda_alg/__init__.py中注册。实现要点
q个字符作用于量子比特q;PyQPanda 常见的 MSB-first counts 会在运行器中转换。probability_floor避免不可观测项和过大的逆倾向权重。ShadowDataset保存每个 shot 当时的完整采样概率,因此不同测量轮次可以直接合并并保持估计无偏。ShadowBudgetController根据目标半宽、批大小和硬 shots 上限给出下一批预算,不会自行提交任务。run_measurement_plan(..., max_jobs=N)在调用 runner 前检查唯一测量基数量,超限时不会发起后端调用。示例与文档
example/QShadow/qshadow_observable_estimation.py:三比特 CPUQVM 端到端示例,包含概率规划、采样、估计及预算判断;example/QShadow/qshadow_planning_benchmark.py:固定种子的均匀/优化规划重复对照,以及顺序预算实验;Tutorials/source/QShadow.rst:Sphinx 教程;pyqpanda_alg/QShadow/README.md:API、约定、后端接入、限制和论文引用;端到端示例中,规划代理损失从
24.54降至5.9645493525156965。在 4000 shots、26 个唯一测量基下,两个 CPUQVM 估计的同时区间均覆盖精确状态向量结果,预算控制返回target_reached。离线重复基准
基准脚本在相同状态、可观测量和 shots 下比较均匀规划与 QShadow 规划。固定种子 1000 轮、每轮 2000 shots 的结果为:
60.20%;两个可观测量的 RMSE 分别降低61.72%和57.68%;62.35%和53.42%;0.28和-0.26,与零一致;1.000,表明本实验中的区间较保守,而不是精确 95% 校准。另一个 100 轮顺序预算实验使用相同
0.22目标半宽。均匀规划平均需要7284.9shots,QShadow 规划平均需要1892.8shots,减少74.02%;两种方案均 100% 达到目标,且没有硬上限违规。这些结果只对应脚本中固定的状态、可观测量、概率下限和种子日程,不声称对所有问题都有相同比例的改善。
测试
验证结果:
32 passed;50 passed;compileall、顶层导入和 CPUQVM 示例通过;测试覆盖 Pauli 数据校验、规划损失与概率下限、逐 shot 逆倾向估计、异构轮次合并、同时区间、预算上限、counts 校验、端序转换和
max_jobs提交前保护。WK_C180 验证
2026-07-26 在
WK_C180上运行了固定预算的单量子比特 X/Y/Z 测量:每个基 512 shots,共 3 个任务、1536 shots,没有自动重试或后端切换。任务 ID、OriginIR、原始概率、counts 和统计结果保存在:example/QShadow/qshadow_wukong_validation_20260726.jsonexample/QShadow/qshadow_wukong_validation_20260726.md这三个任务覆盖了真实 counts 归一化、q0-first 摄取、逐 shot 概率记录、X/Y/Z 同时估计、family-wise 经验 Bernstein 区间,以及 3-job/1536-shot/0-retry 预算约束,因此不只是云接口连通性测试。硬件 X/Y/Z 区间均未覆盖理想值,Bloch 向量范数为
1.539826 > 1;运行时启用了is_amend=True,QShadow 没有读出误差缓解,所以不把结果解释为硬件精度成功。由于三个目标完全对称并采用均匀计划,这次运行也不用于比较偏置规划器与均匀规划的真机优势;规划器的代理损失和概率下限由 CPUQVM 示例及测试验证。兼容性
pyqpanda3==0.3.5;numpy和按需导入的pyqpanda3,不修改requirements.txt;qpanda3_runtime==1.0.0仅用于应用层后端适配,不是 QShadow 的安装依赖;executor(program, shots) -> counts回调,QShadow 不接收或保存云端密钥。限制
参考文献