你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:估计量子化学问题的资源

在本教程中,你将使用 Azure Quantum 资源估算器估算哈密顿以化学精度计算 1 mHa 的化学准确度所需的物理资源。

在本教程中,将:

  • 从 GitHub 克隆示例存储库。
  • 使用 FCIDUMP 文件作为化学建模和模拟应用程序的参数。
  • 针对大规模问题运行资源估算,这是双因子化化学样本。

先决条件

  • 安装了 Python 和 Pip 的 Python 环境。

  • 安装了 Azure Quantum 开发工具包和 Python 扩展的最新版本的 Visual Studio Code

  • 最新的 Azure Quantum qsharp 包和numpyscipy包。

    python -m pip install --upgrade qsharp numpy scipy 
    

提示

无需有 Azure 帐户即可运行本地资源估算器。

描述此问题

在本教程中,你将评估 Phys 中所述 量子比特化算法的物理资源估计。Rev. Research 3,033055 (2021) 计算用户为哈密顿提供 1 mHa 化学准确度的能量。

计算汉密尔顿能量的量子算法基于双因子化量子比特。 汉密尔顿在提供的 FCIDUMP (完整配置交互)文件中的一个和双电子整型中进行了描述,这些文件可通过 HTTPS URI 获得。

量子比特化方法基于量子相位估计,而不是从 Hamiltonian 矩阵 $H$ 构造标准 $U = \exp{(-i H/\alpha)}$,而是采用 $U = \exp{(-i \sin^{-1} (H/\alpha)}$,后者通常可以通过更少的资源实现。 使用 双因子化,$H$ 通过明智地选择轨道和压缩的组合来表示。

在 Visual Studio Code 中加载示例

本教程的代码可在估计/df-chemistry 下的 Q# 示例存储库中找到。 建议在本地计算机上克隆存储库以运行示例。

若要克隆存储库,请从终端运行以下命令:

git clone https://github.com/microsoft/qsharp.git

选择并传递 FCIDUMP 文件

在此示例中,哈密顿以 FCIDUMP 格式的一个和双电子整型来描述。 可以从下表中选择一个 FCIDUMP 文件,或者选择计算机上可用的自己的 FCIDUMP 文件,或者通过可公开访问的 HTTPS URI 联机选择自己的 FCIDUMP 文件。

URI 实例名称 说明
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o X八-cas4-fb-64e56o 64电子,56个轨道活动空间,其中一个稳定的中间体在 红土碳固定循环中。
https://aka.ms/fcidump/nitrogenase-54e-54o nitrogenase_54orbital 54电子,54轨道活动空间的活动核心 氮化
https://aka.ms/fcidump/fe2s2-10e-40o fe2s2-10e-40o 10 电子,40 轨道活动空间 [2Fe, 2S] 群集
https://aka.ms/fcidump/polyyne-24e-24o polyyne-24e-24o 24电子,24轨道活动空间的聚苯分子。
https://aka.ms/fcidump/n2-10e-8o n2-10e-8o 10电子,8个轨道活动空间,他在3个安格斯特伦距离解开氮气。

若要传递 FCIDUMP 文件,需要运行 chemistry.py 文件,并使用或将 -f --fcidumpfileFCIDUMP 文件名或 URI 作为参数传递。

usage: chemistry.py [-h] [-f FCIDUMPFILE]

options:
  -h, --help           
  -f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE                      

运行化学示例

  1. 在 Visual Studio Code 中, 打开 克隆 Q# 示例存储库的文件夹。

  2. 打开一个新的终端, 终端 -> 新终端,并 导航到 量子化学样本所在的目录。 例如,如果在本地计算机上克隆 Q# 示例存储库,则路径为 qsharp/samples/estimation/df-chemistry

  3. 运行 chemistry.py 文件并 传递 FCIDUMP 文件。 例如,以下命令会将 FCIDUMP 文件 n2-10e-8o 下载到工作文件夹并为其运行资源估算。

    python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
    

    之后,可以改为将下载文件的路径传递给脚本。

    python chemistry.py -f n2-10e-8o
    
  4. 资源 估算的结果 显示在终端中。 例如,以下输出显示 n2-10e-8o FCIDUMP 文件的资源估算

    Algorithm runtime: 19 mins
    Number of physical qubits required: 207.60k
    For more detailed resource counts, see file resource_estimate.json
    

注意

运行 chemistry.py 文件后, resource_estimation.json 文件在工作文件夹中创建。 resource_estimation.json文件包含资源估算器的详细输出。 这些是作业参数、物理计数、T 工厂属性、逻辑计数和逻辑量子比特属性。

更改 target 参数

  1. 打开 chemistry.py 文件。

  2. 资源 target 估算的参数可以在对 chemistry.py 文件的调用 qsharp.estimate 中找到。 以下代码片段显示了本教程中使用的参数。

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.01,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    
  3. 如果要更改 target 参数,可以通过修改前面的代码片段来执行此操作。 例如,以下代码片段演示如何将错误预算更改为 0.333。 有关详细信息,请参阅 自定义 target 资源估算器的参数。

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.333,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    

为什么量子计算的化学应用很重要?

本教程介绍将量子解决方案的资源估算集成到电子结构问题的第一步。 缩放量子计算机最重要的应用之一是解决量子化学问题。 复杂的量子机械系统的模拟有可能在碳捕获、食品不安全、设计更好的燃料和材料等领域实现突破。

例如,此示例 中提供的 FCIDUMP 文件之一nitrogenase_54orbital描述了氮酶。 如果你可以准确模拟这种酶在量子水平的工作原理,它可以帮助我们了解如何大规模生成它。 你可以取代高度能量密集型的过程,用于生产足够的肥料来喂养地球。 这有可能减少全球碳足迹,并有助于解决人们对人口日益严重的粮食不安全的担忧。

如果要加深知识,可以尝试以下一些试验:

  • 估计一些自定义 FCIDUMP 文件。
  • 通过提供自定义量子比特参数来修改量子计算机上的假设 target 。
  • 查看 Azure Quantum 示例库中的其他资源估算示例笔记本。
  • 本教程 实现 Grover 的搜索算法 演示如何编写使用 Grover 搜索算法解决图形着色问题的 Q# 程序。
  • 本教程 介绍了如何在 Q# 中编写和模拟量子比特级程序,了解如何编写直接处理特定量子比特的 Q# 程序。
  • 本教程 介绍了如何使用 Q# 对量子位执行量子纠缠以更改其状态,并演示叠加和纠缠的影响。
  • Quantum Katas 是基于 Jupyter Notebook 的自定步教程和编程练习,旨在同时教授量子计算和 Q# 编程的元素。