Share via


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

本教學課程說明如何使用 Azure Quantum Resource Estimateor 來估計為 1 mHa 的化學精確度,以計算一個巴布達尼亞州能源所需的實體資源。

注意

2024 年 6 月 30 日之後,將不再支援 Microsoft Quantum Development Kit (傳統 QDK) 。 如果您是現有的 QDK 開發人員,建議您轉換至新的 Azure Quantum Development Kit (Modern QDK) ,以繼續開發量子解決方案。 如需詳細資訊,請參閱 將您的 Q# 程式代碼移轉至新式 QDK

在本教學課程中,您將:

  • 從 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 中載入範例

本教學課程的程式代碼可以在估計/df-化學下的Q# 範例存放庫中找到。 建議您在本機計算機上複製存放庫,以執行範例。

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

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

選取並傳遞FCIDUMP檔案

在此範例中,會以FCIDUMP格式的一個和雙電子整數來描述一個和兩個電子整數。 您可以從下表中選擇其中一個FCIDUMP檔案,或選取電腦上可用的您自己的FCIDUMP檔案,或透過可公開存取的 HTTPS URI 在在線。

URI 執行個體名稱 描述
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o XBT-cas4-fb-64e56o 64 電子,56 個軌道作用中空間,其中一個穩定中繼在 ruthenium-catalyzed 碳固定迴圈中。
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 Angstrom 距離中斷關聯。

若要傳遞FCIDUMP檔案,您必須執行 chemistry.py 檔案,並使用 或--fcidumpfile將FCIDUMP檔名或URI當做自變數-f傳遞。

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 Factory 屬性、邏輯計數和邏輯量子位屬性。

變更 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描述nitrogenase_54orbital。 如果您可以精確地模擬此量子層級的運作方式,可協助我們瞭解如何大規模產生。 您可以取代耗用大量能源的程式,以產生足夠的動力來饋送行星。 這有可能減少全球碳使用量,也有助於解決不斷成長人口中食物不安全的疑慮。

下一步

如果您想要深入瞭解您的知識,以下是您可以嘗試的一些實驗:

  • 估計一些自定義FCIDUMP檔案。
  • 藉由提供自定義量子位參數, target 修改量子計算機上的假設。
  • 查看 Azure Quantum 範例資源庫中的其他資源估計範例筆記本。

繼續探索其他量子演算法和技術:

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