Amazon Braket 與量子計算

亞馬遜雲開發者發表於2022-12-01

KY1,Yankuan Pan2,Bertran Shao3,Zoey Deng4
1.Amazon HERO;2.專案架構師;3.開發者生態負責人;4.開發者關係

Amazon Braket 是一項完全託管式的量子計算服務,主要可面向研究人員、科學家和開發人員提供一些量子計算軟硬體服務進行研究和開發工作 。Amazon Braket 可幫助解決量子硬體獲取不便利、量子相關使用資源有限等問題。而啟科量子專注於全棧量子計算產品體系研發,主要包括離子阱量子計算機、全棧量子軟體、量子演算法等量子計算產品,憑藉深厚的量子技術積累和豐富的產品經驗,成為中國首家兼具量子計算、量子通訊核心技術儲備與產品研發能力的科技創新型企業。

1. 通用的量子計算機整體架構

量子計算是一種以傳統圖靈機為理論模型且遵循量子力學規律調控量子資訊單元的新型計算模式。一個真實的量子計算機需滿足五個必備條件 :
a. 有一個含有大量量子位元的物理系統,其中的量子位元數可以根據待解決問題規模的增大而增加;
b. 可製備初態量子位元的系統;
c. 一套通用的量子邏輯閘,可進行通用的量子糾纏操作,透過連續的量子門組合作用於量子位元作任意酉變換;
d. 有一種有效的解決退相干問題;
e. 可測量量子位元得到最終結果。

因此一個通用的量子計算機體系結構需要根據以上五個必備條件設計完整的軟硬體結構體系。其中就包含了量子計算處理器、量子編碼體系、量子軟體、量子演算法、通用的量子組合語言等關鍵技術。

啟科量子按照上述條件設計了全棧量子計算產品體系,包括全棧量子計算硬體及全棧量子計算軟體。目前,全棧量子計算軟體基於經典計算開發,但也預留了對接真實離子阱量子計算機的介面。下文將會詳細介紹全棧量子計算產品的相關功能特點。

1.1 量子計算硬體與軟體

由於量子計算機的研發還處於早期階段,每種量子計算技術路線各有所長且其關聯的資源也各有不同,因此提前斷言哪種技術路線更有優勢還為時過早。儘管量子計算屬於前沿科技,就技術產業化而言,佈局量子計算生態、培養龐大的中國開發者市場、推動量子技術的落地與商業化應用是發展量子計算的必經之路。

關於量子計算硬體,綜合全球主要的量子研究機構及公司,實現量子計算的主流技術路線主要包括超導、半導體量子點、離子阱、光學和量子拓撲五個方向。其中超導和離子阱技術路線的關注度較高。例如谷歌和 IBM 做超導量子路線,微軟投資了光量子公司,美國上市公司 IonQ 做離子阱量子計算,中國分散式離子阱量子計算機(AbaQ-1)(研發中)。

關於量子計算軟體量子計算機軟體主要有量子作業系統、量子程式設計框架、量子組合語言和量子應用軟體等。量子軟體開發套件可主要面向開發者提供量子程式、量子演算法等開發和研究的工具。文中全棧量子計算軟體體系是中國本土研究團隊在量子計算軟體開發中作出的創新,其量子軟體產品主要包括量子程式設計整合開發環境 QuBranch、量子程式設計框架 QuTrunk、量子演算法庫 QuFlower、量子計算模擬軟體 QuSprout、量子體系框架 QuRoot。

2. Amazon Braket 與量子計算

Amazon Braket 是一項完全託管式量子計算服務,可為使用者提供量子演算法構建、測試、執行等服務,其中包括可訪問不同技術型別的量子計算機、提供統一的開發環境和經典線路模擬器、執行混合量子經典演算法等。

在使用 Amazon Braket 的過程中,預裝在 Amazon Braket 中的 Jupyter notebooks 和 Amazon Braket SDK 可以大大降低使用者使用 Amazon Braket 服務的難度。一方面,使用者使用 Jupyter notebooks 可方便其定義、提交和監控任務;另一方面,使用者可以直接在 Amazon Braket SDK 中構建量子線路或者定義退火裝置的退火問題與引數 。

2.1 Amazon Braket 的工作流程

在使用 Amazon Braket 時,使用者可隨時更換量子計算裝置,不必拘泥於某個硬體。以下簡單介紹 Amazon Braket 的基本使用流程。


圖1:Amazon Braket 的工作流程

開始使用 Amazon Braket 時,首先需要建立一個 Amazon Braket notebook 例項。這一步驟主要是建立 notebook 和設定名稱等基本操作。

其次使用 Amazon Braket Python SDK 執行第一個量子線路。開啟第一步建立的例項後選擇conda_braket選項建立一個新的 notebook。前述操作完成後便可使用 Braket 建立一個量子線路。

量子線路建立完成後,便可以按需要選擇合適的量子模擬器。最後執行量子線路就能得到最終模擬得出的結果。最終任務可以從 Amazon Braket 上下載。具體測量資訊和引數資訊如下圖所示:


圖2:具體測量結果資訊


圖3:任務執行的引數資訊

2.2 Amazon Braket 與全棧量子計算軟體

在量子計算硬體方面,Amazon Braket 可支援訪問 IonQ 離子阱技術、Oxford Quantum Circuits 和 Rigetti 公司的超導量子處理器、D-Wave 的量子退火技術、Xanadu 的光量子技術。一般如果想要嘗試使用 Amazon Braket 中的真實量子計算機,可以使用量子模擬器進行原型設計。Amazon Braket 提供四種模擬器,分別為本地模擬器、SV1、TN1、DM1。

當我們的記憶體量足夠大的或者進行原型設計時可以使用本地模擬器;當模擬的量子位元數超過34量子位元全狀態向量時則需要使用 SV1;DM1用於模擬高達16量子位元的線路上的噪聲;TN1用於模擬區域性糾纏高達50量子位元的量子線路。目前,Amazon Braket 還未接入中國的量子計算軟硬體產品。AbaQ1離子阱量子計算採用分散式設計每個節點捕捉20個完全連結的離子,平臺可接駁最多8個計算節點,最多可達到一百多量子位元的連結。

在量子開發工具方面,Amazon Braket 可支援訪問圍繞量子可微程式設計概念而構建的開源軟體框架 PennyLane。PennyLane 主要可幫助構建和執行混合量子經典演算法和變分演算法,提供機器學習工具 PyTorch 和 TensorFlow 之間的介面。PennyLane 庫是預裝在 Amazon Braket notebooks 中的,要從 PennyLane 訪問 Amazon Braket 裝置,需要執行 import pennylane as qml 命令匯入 PennyLane 庫。

使用 Amazon Braket 設定和執行混合量子演算法主要是使用其中的 Amazon Braket PennyLane 外掛或者 Amazon Braket Python SDK 和示例 notebook存 儲庫。當沒有 PennyLane 外掛時,我們可以使用基於 SDK 的 Amazon Braket 完成某些混合量子演算法的設定和執行 。開源量子程式設計框架 QuTrunk 可支援執行各種量子演算法,比如 Grover 演算法、Shor 演算法、VQE 演算法等,且將提供各種主流機器學習框架的 API 介面,滿足普通使用者提供量子人工智慧的開發需求。

由啟科量子發起的中國本土專案 QuTrunk——量子程式設計框架——將致力於推動量子 +AI 技術在全球技術領域的探索與發展。(注:現啟科量子已加入百度 paddlepaddle 技術夥伴計劃。根據《2021中國年度開源報告》中國 GitHub 活躍度排名百度 paddlepaddle 活躍得分高達6490.8934,Issue 、Comment 資料達18979均位列第一,是中國 AI 領域關注度較高的 AI 框架。)

綜上,Amazon Braket 作為一項完全託管式的量子計算服務已經接入了多種量子計算硬體裝置和軟體服務。要建設佈局更大的量子計算市場,啟科量子也將是一個較好的選擇。目前,啟科量子程式設計框架已經整合了 Amazon Braket 的一些功能,可使用 QuTrunk 呼叫 Braket 雲上的量子模擬裝置和真實的量子計算機設計一些量子線路。

3. 全棧量子軟體的技術優勢

全棧量子軟體產品有強可擴充套件性,可滿足量子程式設計開發者的多樣化開發需求。啟科量子軟體產品體系的每一層介面預留充足、全面,將可結合多種 AI 框架實現人工智慧領域的功能擴充套件。

全棧量子軟體產品有較強獨立性,可為量子程式設計開發者提供多樣的產品選擇。啟科量子的整個量子軟體產品體系主要採用分層架構,既可至上而下解耦為獨立產品,又可以隨意搭配組合為新的產品體系對外使用,如 QuBranch+QuTrunk+QuBOX、QuBranch+QuTrunk+QuRoot。

全棧量子軟體技術的潛在的標準化。由於目前量子軟體和量子云仍處於產業化的早期階段,量子計算機市場尚未出現主流軟體技術主導的局面,這間接導致了量子計算機軟體層面沒有一個統一的標準,啟科量子軟體技術作為中國少有的量子計算研發公司,有望成為未來的主流量子計算軟體。

該套量子軟體誕生於中國本土的量子計算技術生態土壤,其行業發展受國家政策的大力支援,擁有較大的中國市場潛力。中國雲服務市場一直是雲廠商持續深耕的核心市場。而量子科技作為全球的新建賽道,也將會為軟體行業創造出一個全新的發展機會。

3.1 開源量子程式設計框架 QuTrunk

QuTrunk 是啟科量子自主研發的一款免費、開源、跨平臺的量子計算程式設計框架,包括量子程式設計 API、量子命令轉譯、量子計算後端介面等。QuTrunk 使用 Python 作為宿主語言,利用 Python 的語法特性實現針對量子程式的 DSL (領域專用語言),所有使用 Python 程式設計的 IDE 均可使用安裝。

QuTrunk 基於量子邏輯閘、量子線路等概念提供量子程式設計所需各類 API,這些 API 由相應的模組實現。例如 QCircuit 實現量子線路,Qubit 實現量子位元,Qureg 實現量子暫存器,Command 實現每個量子門操作的指令,Backend 實現執行量子線路的後端模組,gate 模組實現各類基礎量子門操作。此外,QuTrunk 還可以作為其他上層量子計算應用的基礎,例如:量子演算法、量子視覺化程式設計、量子機器學習等。

QuTrunk 主要特點如下:
a.基於量子邏輯閘、量子算符和量子線路實現量子程式開發。
b.提供 QuSL 量子彙編指令標準,QuSL 量子彙編與 Python 程式碼完全相容。
c.裝置獨立,同一個量子線路只需替換後端型別即可以在不同的量子後端上執行。提供多種量子計算體驗,本地量子計算提供 Python 和 C++ 量兩種計算後端,遠端後端提供 OMP 多執行緒、MPI 多節點並行、GPU 加速等計算模式,同時預留了介面對接啟科量子自行研製的離子阱量子計算機。
d.相容多種量子彙編指令格式:OpenQASM 2.0 標準和 QuSL 彙編標準。
f.支援量子視覺化程式設計(其使用需要配合啟科量子量子整合開發環境 QuBranch)。


圖為:QuTrunk 內部結構圖

3.2 量子組合語言(QuSL)

目前 Amazon Braket 支援門型量子裝置和模擬器使用 OpenQASM 3.0。量子組合語言 QuSL 是 OpenQASM 2.0 的超集,因而其程式語言更加豐富。

QuTrunk 使用 python 作為宿主語言,利用 python 的語法特性實現針對量子程式的DSL(領域專用語言), 我們把用於量子程式設計的專用語言稱為:QuSL(一套類似openqasm的量子組合語言)。QuSL 主要特點是最左邊是一個量子門操作,中間加入( )號連結符,最右邊是操作的量子位元,形式如:gate * qubits。該標準充分利用了Python語法對( )運算子的過載特性。其表現形式更接近量子物理計算公式。此外, ( * )在計算機程式語言上可表示乘法運算,QuSL 藉此形式可表示左邊的量子門操作實際上是對量子位元做矩陣乘法運算。

使用 QuSL 該標準編寫的量子彙編可以直接被 QuTrunk 解析執行,而不需要做詞法或語法方面的解析處理工作。基於該特性,QuTrunk 可以無縫銜接 QuBranch,透過視覺化量子程式設計功能直接生成的量子線路,即 QuTrunk 可以直接執行 QuBranch 生成的量子線路(只需做一些簡單的初始化工作),而無需做語法上的編譯/轉譯處理。

H * q[0];   # 對q[0]做hadamard門操作
    CNOT * (q[0], q[1]);# q[0]為控制位,q[1]為目標位
    All(Measure) * q# 對q代表的所有量子位元做測量操作
    
    //Toffoli: 託佛利門,a, b作為控制位,c為目標位, 如果a,b均為1則對b進行取反,否則不做任何操作
    Toffoli * (a, b, c)
    
    //Measure: 測量門,對a進行測量,結果要麼是0,要麼是1,測量結果受機率振幅影響
    Measure * a
    
    //P: 相移門,將量子位元0>態和1>態的相位根據給定的角度進行移動
    P(theta) * a

3.3 量子模擬後端(Beckends)

Amazon Braket 目前提供託管狀態向量模擬器 SV1、託管密度矩陣模擬器 DM1、託管張量網路模擬器 TN1 及本地模擬器。啟科量子也有自主研發的量子計算模擬軟體——QuSprout。QuSprout 是基於經典計算資源的量子計算模擬軟體,支援多執行緒、多節點、GPU 加速,可預安裝在 QuBox 中。QuBox 是預裝了 QuSprout 的 PKS 體系硬體,以產品形態為使用者提供量子模擬資源。如 QuTrunk 使用本地後端qc = QCircuit(backend=BackendLocal())。完整後端模擬程式碼示例如下:

 from qutrunk.circuit import QCircuit
    from qutrunk.circuit.gates import H, CNOT, Measure
    
    # new QCircuit object
    qc = QCircuit(backend=BackendLocal())
    # or use as default
    # qc = QCircuit()
    qr = qc.allocate(2)
    H * qr[0]
    CNOT * (qr[0], qr[1])
    Measure * qr[0]
    Measure * qr[1]
    res = qc.run(shots=100)

3.4 量子軟體的金融應用——QuFinace

QuFinace 是一款專為金融領域提供解決方案的量子軟體產品。QuFinace 基於量子演算法 VQE、蒙特卡羅及 Pennylane 演算法庫,可在金融領域中的期權定價、時序匯率預估、投資組合最佳化、VAR 值計算等方面為金融從業者、投資者在複雜市場環境中提供決策支撐。啟科量子以 QuFiance 的時序預估功能為結合點,已加入了百度飛槳技術夥伴計劃。


圖為:金融 QuFinance 產品量子時序匯率預估截圖

量子軟體工程和開發提供商 aQuantum 近期已在亞馬遜雲科技上推出 QuantumPath 雲原生 SaaS 平臺,主要提供對量子計算機和第三方解決方案的訪問以及有助於應用軟體工程最佳實踐的開發生命週期管理。亞馬遜雲科技目前正在支援在雲平臺上開發和部署量子解決方案。因此,如果啟科量子與 Amazon Braket 結合,其技術優勢將能豐富使用者在 Amazon Braket 上程式設計工具和解決方案的選擇。

點選檢視原文

作者介紹:

Keith Yan(丘秉宜)中國首位亞馬遜雲科技 Community Hero。

Bertran Shao(邵偉),啟科量子開發者關係負責人,國內首個開源量子計算社群發起者

Don Tang(唐松炎),啟科量子開發者關係,國內首個開源量子計算社群發起成員

相關文章