什麼是 Q# 和 Quantum 開發工具組?
Quantum Development Kit (QDK) 是與 Azure Quantum 服務介面所需的 SDK。 其內建于 Azure Quantum 入口網站,您可以在其中使用免費的託管 Jupyter Notebook 來開發程式。 您也可以在本機電腦上安裝 QDK,以使用自己的本機開發環境,並使用 Azure Quantum 服務線上和離線運作。 透過 Quantum 開發工具組,您可以建置在量子硬體上執行的程式,或制訂在Azure Quantum中量子啟發式優化解算器上執行的問題。
QDK 包含量副程式設計語言 Q# ,這是一種高階開放 原始 碼程式設計語言,可讓您將工作焦點放在演算法和應用層級,以建立量副程式。
QDK 提供 的支援,但也支援 Q#Qiskit和 Cirq 進行量子運算,因此如果您已經在其他開發語言中工作,您也可以在 Azure Quantum 上執行線路。
QDK 包含可獨立使用的元件,與 Azure Quantum 服務無關:
- Q# 語言和量子程式庫,所有開放原始碼。
- 模擬目前和未來量子機器的量子模擬器,讓您可以執行和偵錯以 撰寫 Q# 的量子演算法。
- Visual Studio 2022 和Visual Studio Code延伸模組,並與 Jupyter Notebook 整合。
開始使用 Q# 和 Quantum 開發工具組
若要直接跳入,您可以在 Azure Quantum 入口網站中探索 Q# ,不需要安裝。 如需詳細資訊,請參閱 開始使用 Q# 和 Azure Quantum 筆記本。
如需其他開發環境選項,請參閱 設定 Quantum Development Kit。
量子程式設計語言 Q#
Q# 是 開放原始碼的高階程式設計語言,可用於開發和執行量子演算法。 它是 Quantum Development Kit (QDK) 的一部分,其設計目的是要與硬體無關、可調整為完整的量子應用程式範圍,以及將執行優化。 如需語言開發專案的詳細資訊 Q# ,請參閱Q# GitHub 上的 和 核心程式庫設計存放庫。
作為程式設計語言, Q# 從 Python、C# 和 F# 繪製熟悉的元素,並支援使用迴圈、if/then 語句和通用資料類型撰寫程式的基本程式模型。 它也引進新的量子特定資料結構和作業,例如 重複到成功 和自適性 階段估計,以允許整合量子和傳統計算。 例如,傳統程式的流程式控制制可以根據量子測量的結果。
與量子和傳統計算整合
Q# 是提供高階抽象概念的獨立語言。 沒有量子狀態或線路的概念;相反地,Q# 會根據陳述式和運算式來實作程式,就像傳統的程式設計語言一樣。 不同的量子功能,例如 支援函式 和控制流程建構、加速表達,例如 階段估計 和 量子化學 演算法。
語言 Q# 支援整合豐富的傳統和量子運算。 這可讓您清楚運算式調適型演算法,例如難以直接在固定量子閘道序列的線路模型中直接表達的 隨機逐步解說階段估計作業 。
Q# 在演算法執行期間支援一般傳統流程式控制制。 特別是,傳統流程式控制制是以量子測量結果為基礎,這可讓您更輕鬆地撰寫相依于中繼測量的專案。 例如,Grover 搜尋等機率演算法所需的迴圈可以輕鬆地以 Q# 表示,而不需要返回傳統驅動程式來測試結果是否符合 Oracle,如果不符合,則重新執行。
不透明參考的形式量子位元
在 中 Q# , 量子位 是在需要時從執行時間要求的資源,並在不再使用時傳回。 這類似于傳統語言處理堆積記憶體的方式。
在 Q# 量子位中,會模型化為不透明資料類型,這些資料類型代表特定雙狀態量子系統的參考,不論是實體還是邏輯 (錯誤更正的) ,都可以在其中執行量子作業。 這是量子位的操作檢視,也就是量子位是由您可以對其執行的動作所定義。
從程式中的量子位變數對應到實際的邏輯或實體量子位是由執行時間決定,而且該對應可能會延遲到已知目標裝置的拓撲和其他詳細資料之後。 執行階段負責判斷允許演算法執行的對應,包括執行期間所需的任何量子位元狀態傳送和重新對應。
Q# 中使用的標記法有一些有趣的含意,也就是所有實際的量子運算都是由副作用來完成。 沒有任何方法可以直接與電腦的量子狀態互動;完全沒有軟體表示法。 相反地,您會對具有修改量子狀態副作用的量子位實體執行作業。 實際上,電腦的量子狀態是無法存取的不透明全域變數,除非透過一小部分存取子基本 (測量) — 而即使是這些存取子在量子狀態中也有副作用,因此實際上是「變動子有結果」,而不是真實的存取子。
遵守物理法
必須有量副程式,才能遵守物理法。 例如,在 中 Q# 無法複製量子位或直接存取量子位狀態的狀態。
因此,Q# 無法直接檢查至量子位元的狀態或量子機制的其他屬性,以確保 Q# 程式可以實際在任何量子電腦上執行。 相反地, Q# 程式能夠呼叫 作業 和 函式,例如 DumpOperation operation ,從量子位擷取傳統資訊,以允許驗證和狀態檢查以協助使用模擬器進行偵錯。 如需詳細資訊,請參閱 測試和偵錯。
硬體無從驗證
Q# 與硬體無關,這表示它提供表達及運用強大量子運算概念的方法,而不受硬體在未來發展的方式而不同。 若要跨各種應用程式使用, Q# 可讓您建置可重複使用的元件和抽象層。 Q# 量子程式設計語言可確保應用程式和開發工作的擴充性,以達到不斷成長量子硬體大小的效能。 雖然這類計算的完整複雜性需要進一步的硬體開發,但是 Q# 程式可以將目標設為在 Azure Quantum 中各種量子硬體後端上執行。
有效率的執行
語言 Q# 著重于表達資訊,以優化量子元件的執行,而不受叫用內容的影響。 Q# 允許開發人員傳達其有關計算的知識,讓編譯器可以制定明智的決策,以了解如何利用開發人員無法使用的端對端應用程式相關資訊將其轉譯為指示。
若要深入瞭解 QDK 功能和符合程式內的一 Q# 般部分,請參閱 Q# 量副程式設計語言使用者指南。
使用 QDK 的量子開發工作流程
當您編譯和執行量副程式時,QDK 會建立量子模擬器的實例,並將程式 Q# 代碼傳遞給它。 模擬器會使用 Q# 程式碼來建立量子位元(模擬量子粒子),並套用轉換來修改其狀態。 然後,模擬器中的量子運算結果會傳回給程式。 在模擬器中隔離 Q# 程式碼可確保演算法會遵循量子物理定律,並可在量子電腦上正確執行。
您撰寫和執行 Q# 程式所需的所有專案,包括 Q# 編譯器、連結 Q# 庫和量子模擬器,都會預先部署在Azure 入口網站中裝載的 Jupyter Notebook 中。 QDK 也可以從本機電腦安裝並執行,因此您可以在本機使用慣用的 IDE 和語言,並將作業提交至 Azure Quantum 上的量子硬體或雲端式模擬器,或使用本機模擬器。 如需詳細資訊,請參閱 設定量子開發環境。
下圖顯示量子程式從概念到在 Azure Quantum 完成實作的全部階段,以及 QDK 在每個階段提供的工具。
注意
您可以使用相同 Q# 程式碼來執行工作流程的所有步驟。 在短期內,您可能必須調整部分程式碼,以考慮目前的硬體限制。 但長期來看,您可以在不同的模擬器與硬體提供者之間切換,而不需要修改任何程式碼。
撰寫量副程式
程式 Q# 可以編譯成獨立應用程式、以Jupyter Notebook執行,或由以 Python 或 .NET 語言撰寫的主機程式呼叫。
如果您想要開始練習和撰寫 Q# 程式,而不需要安裝其他軟體,則可以在 Azure 入口網站 的 Azure Quantum 工作區中使用裝載的Jupyter Notebook。 範例資源庫包含已標注筆記本範例的集合 - 選取您想要在雲端式模擬器或實際量子電腦上探索和執行的範例。
如果您偏好本機開發環境,您可以使用 Jupyter Notebook 搭配 I Q# 核心來建立 Q# 程式,或使用適用于 Visual Studio Code 和 Visual Studio 2022 的 QDK 擴充功能,然後針對量子硬體或雲端式或本機模擬器執行它們。
無論您偏好何種環境,都可以遵循教學 Q# 課程並開始撰寫量副程式,以探索量子概念,例如 迭加、 糾纏、 Grover 的量子演算法和其他量子現象。
如果您沒有 Azure 帳戶,而且想要在本機安裝 QDK 的情況下嘗試 Q# ,您可以使用 Binder 在線上 Jupyter Notebook 中 執行 Q# 範例 。
探索網域特定程式庫
Q# 程式庫可協助您將程式碼保持在高層級,讓您可以執行複雜的量子作業,而不需要設計低層級的作業順序。 新 Q# 專案會自動包含 Q#標準程式庫,提供一組基本且非常有用的函式和作業,可在 中 Q# 撰寫量副程式時使用。
除了標準程式庫之外,QDK 還包含量子化學程式庫,可用來模擬量子電腦上的量子動力和電子結構問題,這是一種量子機器學習程式庫,可讓您利用量子運算來實作混合式量子/傳統機器學習實驗,以及提供支援各種數值功能的量子數值程式庫。
在模擬器中執行程式
撰寫程式之後,QDK 會提供一組 量子模擬器 -傳統程式來模擬量子系統的行為,讓您可以執行一小部分的程式實例,並查看它沒有實際硬體存取的功能。 您可以在 完整狀態量子模擬器、有限範圍的 Toffoli 模擬器、具有較大量子位的系統疏鬆 模擬器 上執行量副程式,甚至使用 雜訊模擬器 來模擬雜訊環境影響下的程式列為 Q# 。
請參閱 量子模擬器的完整清單。
估計資源
在量子硬體上執行之前,您必須瞭解您的程式是否可以在現有的硬體上執行,以及其耗用的資源數目。 您可以使用 追蹤模擬器 來估計您需要多少量子位和量子閘道,並偵錯屬於量副程式的傳統程式碼。
您也可以在 Azure 入口網站 中將量副程式提交至Azure Quantum Resource Estimator目標。 Azure Quantum 資源估算器會根據量子位參數、量子錯誤修正碼和錯誤預算的假設來計算配置後實體資源估計。 它是免費的,而且需要 Azure 帳戶。
將作業提交至 Azure Quantum 服務
Azure Quantum 是 Azure 的雲端量子運算服務,具有一組多樣化的量子解決方案和技術。 Azure Quantum 可確保量子運算的開放、彈性和未來證明路徑,可讓您在量子硬體上執行程式。 您可以在多個量子系統上執行 Qiskit、Cirq 和 Q# 程式。 如需目前支援的硬體提供者清單,請參閱 量子運算提供者 。
提示
第一次使用者會自動取得免費 $500 (美元) Azure Quantum 點數,以便與每個參與的量子硬體提供者搭配使用。 如果您已使用所有點數,但還需要更多,可以申請 Azure Quantum 點數方案。
建立 Azure Quantum 工作區之後,您就可以 Q# 透過本機和線上的慣用開發環境,將程式提交 (也稱為作業) 至 Azure Quantum。 如需詳細資訊,請參閱 如何提交 Q# 作業。 您也可以執行並提交 以 Qiskit 或 Cirq撰寫的量子線路。
下圖顯示您提交工作之後的基本工作流程:
Azure Quantum 提供目前業界領袖所提供一些最吸引人的多樣化量子資源。 使用 Azure Quantum 和 QDK,您可以撰寫 量子運算 和量子 啟發式優化 程式,並將其提交至 Azure Quantum,以在 量子硬體 和 優化求解器上執行。