Skip to content

Latest commit

 

History

History
278 lines (196 loc) · 10.6 KB

README_CN.md

File metadata and controls

278 lines (196 loc) · 10.6 KB

MindQuantum

PyPI - Python Version PyPI Downloads API Tutorial Issues Release LICENSE PRs Welcome

View English

MindQuantum介绍

MindQuantum是基于昇思MindSpore开源深度学习平台开发的新一代通用量子计算框架,聚焦于NISQ阶段的算法实现与落地。结合HiQ高性能量子计算模拟器和昇思MindSpore并行自动微分能力,MindQuantum有着极简的开发模式和极致的性能体验,能够高效处理量子机器学习、量子化学模拟和量子组合优化等问题,为广大科研人员、老师和学生提供快速设计和验证量子算法的高效平台,让量子计算触手可及。

MindQuantum Architecture

初体验

搭建参数化量子线路

通过如下示例可便捷搭建参数化量子线路

from mindquantum import *
import numpy as np

encoder = Circuit().h(0).rx({'a0': 2}, 0).ry('a1', 1)
print(encoder)
print(encoder.get_qs(pr={'a0': np.pi / 2, 'a1': np.pi / 2}, ket=True))

你将得到

      ┏━━━┓ ┏━━━━━━━━━━┓
q0: ──┨ H ┠─┨ RX(2*a0) ┠───
      ┗━━━┛ ┗━━━━━━━━━━┛
      ┏━━━━━━━━┓
q1: ──┨ RY(a1) ┠───────────
      ┗━━━━━━━━┛

-1/2j¦00⟩
-1/2j¦01⟩
-1/2j¦10⟩
-1/2j¦11⟩

在jupyter notebook中,也可通过线路的svg()接口来以svg格式绘制量子线路图(更有darklight模式可选)

circuit = (qft(range(3)) + BarrierGate(True)).measure_all()
circuit.svg()  # circuit.svg('light')

Circuit SVG

训练量子神经网络

ansatz = CPN(encoder.hermitian(), {'a0': 'b0', 'a1': 'b1'})
sim = Simulator('mqvector', 2)
ham = Hamiltonian(-QubitOperator('Z0 Z1'))
grad_ops = sim.get_expectation_with_grad(
    ham,
    encoder.as_encoder() + ansatz.as_ansatz(),
)

import mindspore as ms

ms.set_context(mode=ms.PYNATIVE_MODE, device_target='CPU')
net = MQLayer(grad_ops)
encoder_data = ms.Tensor(np.array([[np.pi / 2, np.pi / 2]]))
opti = ms.nn.Adam(net.trainable_params(), learning_rate=0.1)
train_net = ms.nn.TrainOneStepCell(net, opti)
for i in range(100):
    train_net(encoder_data)
print(dict(zip(ansatz.params_name, net.trainable_params()[0].asnumpy())))

训练得到参数为

{'b1': 1.5720831, 'b0': 0.006396801}

案例教程

  1. 基础使用指南

  2. 变分量子算法

  3. 通用量子算法

API

对于上述示例所涉及API和其他更多用法,请查看MindQuantum API文档文档链接

安装教程

确认系统环境信息

  • 硬件平台支持avx2指令集。
  • 参考MindSpore安装指南,完成MindSpore的安装,要求至少1.4.0版本。
  • 其余依赖请参见setup.py

pip安装

安装MindSpore

请根据MindSpore官网安装指南,安装1.4.0及以上版本的MindSpore。

安装MindQuantum

pip install mindquantum

源码安装

  1. 从代码仓下载源码

    cd ~
    git clone https://gitee.com/mindspore/mindquantum.git
  2. 编译MindQuantum

    Linux系统下请确保安装好CMake >= 3.18.3,然后运行如下命令:

    cd ~/mindquantum
    bash build.sh --gitee

    这里 --gitee 让脚本从gitee代码托管平台下载第三方依赖。如果需要编译GPU版本,请先安装好 CUDA 11.x,和对应的显卡驱动,然后执行如下编译指令:

    cd ~/mindquantum
    bash build.sh --gitee --gpu

    Windows系统下请确保安装好MinGW-W64和CMake >= 3.18.3,然后运行如下命令:

    cd ~/mindquantum
    ./build.bat /Gitee

    Mac系统下请确保安装好openmp和CMake >= 3.18.3,然后运行如下命令:

    cd ~/mindquantum
    bash build.sh --gitee
  3. 安装编译好的whl包

    进入output目录,通过pip命令安装编译好的mindquantum的whl包。

验证是否成功安装

执行如下命令,如果没有报错No module named 'mindquantum',则说明安装成功。

python -c 'import mindquantum'

Docker安装

通过Docker也可以在Mac系统或者Windows系统中使用Mindquantum。具体参考Docker安装指南.

注意事项FAQ

运行代码前请设置量子模拟器运行时并行内核数,例如设置并行内核数为4,可运行如下代码:

export OMP_NUM_THREADS=4

对于大型服务器,请根据模型规模合理设置并行内核数以达到最优效果。

更多注意事项请查看FAQ页面

构建二进制whl包

如果你想构建用于分发的二进制whl包,请参考二进制whl包构建指南

快速入门

关于如何快速搭建参数化量子线路和量子神经网络,并进行训练,请点击查看MindQuantum使用教程

文档

有关安装指南、教程和API的更多详细信息,请参阅用户文档

社区

治理

查看MindSpore如何进行开放治理

贡献

欢迎参与贡献。更多详情,请参阅我们的贡献者Wiki

引用MindQuantum

当您用MindQuantum进行科学研究时,请引用:

@misc{mq_2021,
    author      = {MindQuantum Developer},
    title       = {MindQuantum, version 0.6.0},
    month       = {March},
    year        = {2021},
    url         = {https://gitee.com/mindspore/mindquantum}
}

许可证

Apache License 2.0