傳統運算越來越受到現今最複雜計算問題的挑戰,即使在我們最強大的超級計算機的規模下也是如此。 量子計算機具有大幅擴充計算功能的承諾。 藉由利用量子物理的屬性來執行計算,它們可為特定類型的問題提供指數加速。 例如,量子計算機對於需要計算大量可能組合的問題,在優化、模擬或機器學習案例中經常會非常出色。
不過,量子運算元件與傳統軟體的作業模型不同。 通常有一或多個傳統計算元件可協調量子元件的執行。 此協調流程包含下列活動:
- 準備輸入數據
- 向目標量子環境提交量子運算 作業
- 監視作業執行
- 作業結果的後續處理
您可以使用下列兩種方式之一,將此協調流程與傳統應用程式整合:
- 透過緊密結合進行整合。 量子資源的協調流程邏輯會整合到傳統元件或元件中。
- 透過鬆散結合進行整合。 量子資源的協調流程邏輯會公開為可由各種傳統軟體元件呼叫的 API。
本文說明如何在這些設計中實作量子應用程式。 每個實作都會使用 Azure Quantum 作為量子運算引擎,但在其他方面稍有不同,如下所述。
緊密結合的方法
潛在的使用案例
在這些情況下,最好使用緊密結合的方法:
- 一個小組同時擁有量子程式代碼和傳統程式代碼,而且程式代碼已整合。
- Quantum 元件與傳統元件共用相同的生命週期。
- 量子元件的使用僅限於單一應用程式或一組小型相關應用程式。
- 量子作業代表特製化解決方案(例如分子模擬),該解決方案只供一個特製化傳統應用程式使用。
- 實作的演演算法本質上是混合式量子古典,例如變化量子 Eigensolvers (VQE) 和量子近似優化演算法 (QAOA)。
建築
下載此架構的 PowerPoint 檔案。
數據流
- 登入的用戶會透過傳統用戶端應用程式觸發量子作業執行。
- 用戶端應用程式會將輸入資料放入 Azure 記憶體。
- 用戶端應用程式會將作業提交至 Azure Quantum 工作區,並指定執行目標或目標。 用戶端會透過儲存在 Key Vault 中的數據來識別工作區,並透過 受控識別向工作區進行驗證。
- 量子提供者會在目標環境上執行作業。
- 用戶端應用程式會輪詢作業狀態來監視作業執行。
- 一旦量子作業完成,用戶端應用程式就會從記憶體取得計算結果。
此工作流程會實作 異步 Request-Reply 模式,以及針對 azure Quantum 作業生命週期所定義的步驟。
元件
- Azure Quantum 提供 工作區,可從 Azure 入口網站存取,以取得與在各種目標上執行量子作業相關聯的資產。 作業會根據您選擇的提供者,在量子模擬器或量子硬體上執行。
- Microsoft Entra ID 協調使用者驗證,並協助保護 Azure Quantum 工作區的存取權。
- Key Vault 保護及維護密鑰和其他秘密的控制,例如 Azure Quantum 工作區名稱。
- Azure 記憶體 提供輸入數據和量子提供者結果的記憶體。
考慮
這些考慮會實作 Azure Well-Architected Framework 的要素,這是一組可用來改善工作負載質量的指導原則。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework。
可靠性
可靠性可確保您的應用程式可以符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性的設計檢閱檢查清單。
量子計算功能的可用性取決於 量子運算提供者的可用性和安裝基底。 根據計算目標,傳統用戶端應用程式可能會遇到長時間延遲或無法使用目標。
針對周圍的 Azure 服務,通常會套用可用性考慮:
安全
安全性可提供針對蓄意攻擊和濫用寶貴數據和系統的保證。 如需詳細資訊,請參閱 安全性的設計檢閱檢查清單。
不同於 鬆散結合替代的架構,此處顯示的架構是以只有一個用戶端存取 Azure Quantum 工作區的假設為基礎。 此案例會導致下列設定:
- 由於已知用戶端,您可以透過與應用程式相關聯的 受控識別來實作驗證。
- 您可以在用戶端本身實作要求節流和結果快取。
一般而言,請考慮適當時套用安全性
鬆散結合的方法
潛在的使用案例
在這些情況下,慣用鬆散結合的方法:
- 您有一個專用的量子專家小組,可集中提供量子功能給其他小組,而量子元件是從任何傳統用戶端元件獨立開發。
- 量子作業代表一般解決方案(例如作業排程),可由多個傳統應用程式重複使用。
建築
下載此架構的 PowerPoint 檔案。
數據流
- 登入的用戶會透過傳統應用程式觸發量子作業執行。
- 傳統應用程式會呼叫自定義作業 API 來提交作業。
- API 閘道會觸發作業提交 Azure 函式,此函式會傳遞作業輸入數據。
- 函式會將輸入數據放入 Azure 記憶體。
- 函式會將作業提交至 Azure Quantum 工作區,並指定執行目標或目標。 函式會透過儲存在 Azure Key Vault 中的數據來識別工作區,並透過 受控識別向工作區進行驗證。
- 量子提供者會在目標環境上執行作業。
- 用戶端應用程式會透過 API 呼叫輪詢作業狀態來監視作業執行。
- API 閘道會藉由從量子提供者輪詢作業狀態來監視作業執行。
- 當作業完成時,計算結果會儲存在 Azure 記憶體中。 用戶端應用程式會使用透過 Azure 函式實作的 API 來取得結果。
此工作流程會實作 異步 Request-Reply 模式,以及針對 azure Quantum 作業生命週期所定義的步驟。
元件
- Azure Quantum 提供 工作區,可從 Azure 入口網站存取,以取得與在各種目標上執行量子作業相關聯的資產。 作業會根據您選擇的提供者,在量子模擬器或量子硬體上執行。
- Microsoft Entra ID 協調使用者驗證,並協助保護 Azure Quantum 工作區的存取權。
- API 管理 是 API 閘道,可集中公開 API 端點以進行量子作業管理。
- Azure Functions 可用來將用戶端要求轉送至適當的量子資源。
- Azure Key Vault 保護及維護密鑰和其他秘密的控制,例如 Azure Quantum 工作區名稱。
- Azure 記憶體 提供輸入數據和量子提供者結果的記憶體。
可靠性
量子計算功能的可用性高度相依於 量子運算提供者的可用性和安裝基底。 根據計算目標,傳統用戶端應用程式可能會遇到長時間延遲或無法使用目標。
針對周圍的 Azure 服務,通常會套用可用性考慮:
- 如需高可用性,您可以將 API 管理 部署到多個區域或區域。
- 如果您使用異地復寫,您可以在多個區域中布建 azure Functions
。 - 使用 Key Vault 備援選項。
- 如有必要,請考慮在 記憶體中使用複寫選項。
安全
不同於 緊密結合替代的架構,此處提供的架構是以多個用戶端透過 API 存取 Azure Quantum 工作區的假設為基礎。 此案例會導致下列設定:
- 用戶端必須向 API 進行驗證。 您可以使用
驗證原則來實作此驗證。 - 您可以透過與函式相關聯的 受控識別 來實作 Azure 函式的驗證。 您可以使用這些身分識別向 Azure Quantum 工作區進行驗證。
- 多個用戶端存取 API。 您可以使用 API 管理要求節流 來實作要求節流,以保護量子後端,並限制量子資源的使用。
- 視要求模式而定,您可以使用 API 管理快取原則來實作量子運算結果的快取。
一般而言,請考慮適當時套用安全性
效能效率
效能效率是工作負載調整的能力,以符合使用者以有效率的方式滿足其需求。 如需詳細資訊,請參閱 效能效率的設計檢閱檢查清單。
應用程式效能取決於基礎量子運算目標的可用性和效能。 如需傳統元件效能和延展性的相關信息,請檢閱 一般設計模式以取得延展性,以及 效能效率檢查清單。
一般功能
下列功能適用於緊密結合和鬆散結合的實作模型
選擇
此處顯示的架構適用於需要量子運算資源來執行其計算工作的商務問題。 對於某些計算挑戰,建置來執行 高效能運算 或提供 AI 功能 可能是替代方案。
考慮
一些 Azure 量子目標(特別是量子硬體)在可預見的未來將會是有限的資源。 透過佇列機制實作這些資源的存取權。 當您將量子作業提交至 Azure Quantum 時,此作業會新增至作業佇列。 一旦目標完成處理先前的佇列專案,就會執行作業。 您可以藉由 列出可用的目標,取得預期的等候時間。 若要計算完整的回應時間,您需要將等候可用資源所花費的時間新增至作業運行時間。
可靠性
由於 Azure Quantum 之類的量子目標環境通常會提供有限的錯誤修正(僅限於 Azure Quantum 的量子處理器),因此仍可能會發生其他錯誤,例如量子電腦逾時,因此建議您監視作業執行,以便通知使用者作業狀態。 當作業執行因為暫時性錯誤而失敗時,請實作 重試模式。 透過異步呼叫提交作業,並輪詢結果,以避免不必要的封鎖呼叫用戶端。
由於量子運算資源通常有限,復原預期應該考慮此因素。 因此,本文中提供的建議可能會提供額外的復原措施。
成本優化
成本優化是考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱 成本優化的設計檢閱檢查清單。
此解決方案的整體成本取決於您選擇執行量子作業的量子運算目標。 計算傳統元件的預估成本很簡單。 您可以使用 Azure 定價計算器。
針對 Azure Quantum 服務,請考慮可以透過 Azure Marketplace 供應項目取用 Quantum 運算提供者。 定價取決於資源類型(模擬器或硬體)、SKU 和使用量。 如需詳細資訊,請參閱案例所需提供者的參考頁面。 這些參考頁面會列在 Azure Quantum上的
卓越營運
卓越營運涵蓋部署應用程式的作業程式,並讓它在生產環境中執行。 如需詳細資訊,請參閱 Operational Excellence的設計檢閱檢查清單。
將量子作業併入傳統 CI/CD 管線中,可以使用 Azure DevOps 完成,並稍微變更一般設計。 下列設計說明可套用至緊密結合和鬆散結合架構的DevOps管線工作流程。
建築
下載此架構的 PowerPoint 檔案。
數據流
- 開發人員會變更應用程式元件的原始程式碼。
- 變更會認可至原始程式碼存放庫。
- 量子程式代碼的變更會觸發量子建置管線。 建置管線會檢查程序代碼、加以編譯、估計所需的資源,並在模擬器上執行演算法。
- 編譯的量子演算法會提交至量子環境進行測試。
- 變更會觸發傳統元件的組建管線。 管線會檢查程序代碼、加以編譯,以及執行單元和整合測試。
- 成功的編譯和測試會觸發發行管線。 管線會先布建 Azure 環境,方法是部署儲存在存放庫的 Azure Resource Manager 範本(基礎結構即程式代碼)。
- 編譯的傳統應用程式成品會部署至 Azure。 量子作業會在運行時間期間提交至量子工作區。
- Application Insights 會監視運行時間行為、健康情況、效能和使用方式資訊。
- 視監視結果而定,待辦項目會視需要更新。
- 開發人員會使用Application Insights進行應用程式意見反應和優化。
元件
此解決方案使用下列 DevOps 工具:
- Azure Repos 提供無限制的雲端裝載私人 Git 存放庫。 這裡用來儲存量子和傳統程序代碼,以及用來布建環境的 Azure Resource Manager 範本。
- Azure Pipelines 可讓您持續建置、測試及部署至雲端。 在這裡,它會用來實作 CI/CD,包括程式代碼部署前的環境布建。
或者,您可以使用 GitHub 存放庫和 GitHub 動作來實作 CI/CD 程式。
解決方案會使用下列其他元件:
- 用戶端應用程式會協調量子作業。 您可以使用緊密結合 或 鬆散結合 方法來實作整合。
- Azure Quantum 為與執行量子運算應用程式相關聯的資產提供 工作區。 作業會根據您選擇的提供者,在量子模擬器或量子硬體上執行。
- Microsoft Entra ID 協調使用者驗證,並保護 Azure Quantum 工作區的存取權。
- Azure Key Vault 保護及維護密鑰和其他秘密的控制,例如量子工作區名稱。
- Azure 記憶體 保留量子作業的輸入和輸出數據。
- Application Insights 監視應用程式、偵測應用程式異常狀況,例如效能不佳和失敗,並將遙測傳送至 Azure 入口網站。
效能效率
應用程式效能取決於基礎量子運算目標的可用性和效能。 如需傳統元件效能和延展性的相關信息,請檢閱 一般設計模式以取得延展性,以及 效能效率檢查清單。
貢獻
本文由 Microsoft 維護。 它最初是由下列參與者所撰寫。
主體作者:
- Holger Sirtl |Microsoft技術中心的高級技術架構師
若要查看非公用LinkedIn配置檔,請登入LinkedIn。
後續步驟
- 如需 Microsoft Quantum 的概觀,這是完整堆棧的開放雲端量子運算生態系統,請參閱 Microsoft Quantum,並完成 Quantum 運算基礎 學習路徑。
- 如需 Azure Quantum 服務的詳細資訊,請參閱 Azure Quantum。
- 如需 Azure Quantum 作業管理的一般資訊,請參閱 使用 Azure Quantum 作業。
- 如需在量子硬體上執行演算法的相關信息,請參閱模組 使用 Azure Quantum在量子硬體上執行演算法。