共用方式為


教學課程:估計量子化學問題的資源

在本教學課程中,您會使用 Azure Quantum 資源估算器來估計漢密爾頓化學精確度為 1 mHa 的化學精確度所需的物理資源。

在此教學課程中,您需要:

  • 從 GitHub 複製範例存放庫。
  • 使用FCIDUMP檔案作為化學模型化和模擬應用程式的自變數參數。
  • 針對大規模問題執行資源估計,這是雙因數化化學樣本。

必要條件

提示

您不需要有 Azure 帳戶才能執行資源估算器。

描述問題

在本教學課程中,您會評估 Phys.Rev. Research 3, 033055 (2021) 中所述量子位化演算法的實體資源估計,以計算使用者提供漢密爾頓的化學精確度為 1 mHa 的能量。

計算哈密頓能量的量子演算法是基於雙因數量子位化。 哈密頓量在提供的 FCIDUMP(完整配置交互)文件中以一電子和雙電子積分來描述,這些文件可通過 HTTPS URI 獲得。

量子位化方法是以量子階段估計為基礎,但不是從漢密爾頓矩陣$H$建構標準$U = \exp{(-i H/\alpha)}$,而是採用$U = \exp{(-i \sin^{-1} (H/\alpha))}$,這通常可以使用較少的資源來實作。 使用 雙因素化,$H$ 是透過明智地選擇軌道和壓縮的組合來表示。

在 Visual Studio Code 中載入範例

本教學課程的程式碼可在 QDK 範例儲存庫estimation/df-chemistry 下找到。 建議您將儲存庫複製到本機以執行範例。

若要複製存放庫,請從終端機執行下列命令:

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

選取並傳遞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--fcidumpfile傳遞 FCIDUMP 檔案名稱或 URI 作為引數。

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

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

執行化學範例

  1. 在 Visual Studio Code 中, 開啟 您複製 QDK 範例存放庫的資料夾。

  2. 開啟新終端機 [終端機 -> 新終端機],然後導覽至量子化學樣品所在的目錄。 例如,如果您在本機機器上複製 QDK 範例儲存庫,則路徑為 qdk/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. 資源 估計的結果 會顯示在終端機中。 例如,下列輸出顯示 FCIDUMP 檔案的 n2-10e-8o 資源估計。

    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資源估計的參數可以在qsharp.estimate文件中的chemistry.py呼叫中找到。 下列代碼段顯示本教學課程中使用的參數。

    # 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 修改量子計算機上的假設。
  • 實作 Grover 的搜尋演算法教學課程示範如何撰寫 Q# 程式,以使用 Grover 的搜尋演算法來解決圖形著色問題。
  • 在 Q# 中撰寫和模擬量子位層級程式教學課程會探索如何撰寫直接尋址特定量子位的 Q# 程式。
  • 使用 Q# 探索量子糾纏教學課程 示範如何使用 Q# 在量子位上操作以變更其狀態,並示範迭加和糾纏的效果。
  • Quantum Katas 是以 Jupyter Notebook 為基礎的自我步調教學課程和程序設計練習,旨在同時教學量子運算和 Q# 程式設計的元素。