教學課程:估計量子化學問題的資源
在本教學課程中,您會使用 Azure Quantum 資源估算器來估計漢密爾頓化學精確度為 1 mHa 的化學精確度所需的物理資源。
在此教學課程中,您需要:
- 從 GitHub 複製範例存放庫。
- 使用FCIDUMP檔案作為化學模型化和模擬應用程式的自變數參數。
- 針對大規模問題執行資源估計,這是雙因數化化學樣本。
必要條件
已安裝 Python 和 Pip 的 Python 環境。
已安裝最新版的 Visual Studio Code 與 Azure Quantum Development Kit 和 Python 延伸模組。
最新的 Azure Quantum
qsharp
套件和numpy
套件scipy
。python -m pip install --upgrade qsharp numpy scipy
提示
您不需要有 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-chemistry 下的 Q# 範例存放庫中找到。 建議您複製本機計算機中的存放庫,以執行範例。
若要複製存放庫,請從終端機執行下列命令:
git clone https://github.com/microsoft/qsharp.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
執行化學範例
在 Visual Studio Code 中, 開啟 您複製 Q# 範例存放庫的資料夾。
開啟新的終端機終端機終端 機 -> 新終端機,然後 流覽 至量子化學範例所在的目錄。 例如,如果您在本機電腦上複製 Q# 範例存放庫,則路徑為
qsharp/samples/estimation/df-chemistry
。執行 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
資源 估計的結果 會顯示在終端機中。 例如,下列輸出會顯示 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 參數
開啟 chemistry.py 檔案。
您可以在 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"}})
如果您想要變更 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 的搜尋演算法教學課程示範如何撰寫 Q# 程式,以使用 Grover 的搜尋演算法來解決圖形著色問題。
- 在 Q# 中撰寫和模擬量子位層級程式教學課程會探索如何撰寫直接尋址特定量子位的 Q# 程式。
- 使用 Q# 探索量子糾纏教學課程 示範如何使用 Q# 在量子位上操作以變更其狀態,並示範迭加和糾纏的效果。
- Quantum Katas 是以 Jupyter Notebook 為基礎的自我步調教學課程和程序設計練習,旨在同時教學量子運算和 Q# 程式設計的元素。