QuTrunk 是啟科量子自主研發的一款免費、開源、跨平臺的量子計算程式設計框架,包括量子程式設計 API、量子命令轉譯、量子計算後端介面等。它提供多種量子計算體驗,提供本地量子計算 Python 計算後端,提供 OMP 多執行緒、MPI 多節點並行、GPU 加速等計算模式。
使用QuTrunk進行量子計算程式的開發可以使用過本地 PC 機搭建開發環境,也可以使用亞馬遜雲上的資源作為開發環境。本文將向使用者介紹如何利用亞馬遜雲上資源使用QuTrunk+Runtime+QuSaaS+亞馬遜雲科技進行量子程式程式設計。下面先簡要介紹 Runtime 工具。
1、Runtime 介紹
使用者使用啟科量子計算相關軟體進行開發,首先需要提取準備好量子程式設計環境,能不能快速的構建程式設計環境是吸引開發者進行開發的首要考慮的因素,所以環境部署非常重要,為了簡化開發環境部署,降低開發者入門的門檻,啟科推出的一款免費、開源的提供執行環境的工具 Runtime。透過 Runtime 可以快速實現啟科量子開發相關軟體的部署,例如 QuTrunk 量子程式設計框架,QuSprout 量子模擬後端,另外也支援第三方量子演算法、GPU、隨機數卡等環境部署。支援演算法公共庫整合,一鍵安裝所需演算法元件; 支援軟硬體結合、提供硬體底層庫驅動。Runtime 的整體架構如下:
2、亞馬遜雲科技開發環境準備
使用亞馬遜雲科技資源進行 QuTrunk 程式開發的整體的流程有如下幾個步驟:
2.1 亞馬遜雲科技開發環境準備
1、登入亞馬遜雲科技的管理控制檯
點選右上角 Region下拉選單切換到需要建立的資源的 Region,本示例使用亞太新加坡站點的資源。
2、建立 EC2 訪問金鑰對
依次點選服務->計算->EC2 開啟 EC2 的主頁面。首先建立好秘鑰對便於後面登入到 EC2,依次點選左側導航欄的網路與安全->金鑰對->建立金鑰對。
完成建立後自動下載秘鑰,儲存好秘鑰檔案備用。
3、建立例項
我們在亞馬遜雲科技上建立好2個測試示例,一個用於 runtime 工具部署,一個用於 QuTrunk 量子程式開發環境。EC2 dashboard 點選右側導航欄例項,然後點選例項開啟例項建立頁面,選擇啟動新例項。
開啟建立例項的介面,確定例項名稱,選項 Ubuntu20.04 映象,建立新的安全組新增本地計算機訪問的網段,flavor 選擇 t2.medium,並選擇都啟用公網 IP。分別建立出 Runtime 主機和 QuTrunk 主機。
2.2 Runtime 安裝
1、使用秘鑰檔案登入到 Runtime 安裝主機選中 runtime 主機,右鍵選擇連結,選擇 ssh 客戶端
複製訪問命令:ssh -i "qutrunk-demo.pem" ubuntu@ec2-18-141-236-126.ap-southeast-1.compute.amazonaws.com
2、從 Runtime 官網下載連結下載安裝包,然後解壓,進入解壓目錄下執行 INSTALL.sh 安裝,安裝完成後檢查 runtime 安裝結果
#下載安裝包
wget -c http://nexus.queco.cn/repository/qudoor-raw/runtime/0.0.1/runtime_v0.0.1_1223_amd64.tar.gz
# 解壓安裝包
tar zxvf runtime_release_v0.0.1_amd64.tar.gz
cd runtime_release_v0.0.1_amd64
#執行安裝指令碼
/bin/bash INSTALL.sh
#待安裝完成後,檢查Runtime執行狀態
rtctl status
顯示狀態為 healthy 即為安裝成功。
2.3 使用 Runtime 自動化部署 QuTrunk
QuTrunk 的部署安裝有一些前置條件,不同 OS 下配置和安裝這些前置條件比較繁瑣,Runtime 自動化工具可以解決這些問題,可以將 QuTrunk 部署所需要依賴的相關軟體一起部署上,例如 python3 環境,python3-pip 等,方便使用者更快的搭建好 dev 環境。具體的自動化部署部署如下:
1、環境資訊配置
首先將需部署 QuTrunk 的主機資訊天填寫到 runtime 的配置檔案:/opt/runtime/conf/hosts.hostname.ini。vim 編輯此檔案,修改目標 runtime 環境安裝主機的 ip、訪問埠、密碼以及執行機的 nexus 訪問地址,node1 是最終 runtime 主機將 QuTrunk 主機修改的主機名,可以直接填寫為 Amazon EC2 的主機名,也可以自定義為其他名稱。ansible_ssh_host
是需要安裝 QuTrunk 主機的 IP,ansible_ssh_pass
為登入的賬號的密碼,Registry_hostname
是 Runtime 主機。配置檔案類似如下:
2、列出可以執行的安裝軟體
rtctl list
3、選擇 Qurunk 的安裝的 playbook,執行自動化安裝,命令如下:
rtctl run --playbook 02-qutrunk
4、QuTrunk 安裝驗證
登入到安裝了 QuTrunk 的亞馬遜雲科技主機,執行 QuTrunk 安裝後的檢查,如下:
2.4 QuSaaS 註冊應用
2.4.1 註冊 QuSaaS 賬號
登入 QuSasS 網站:http://developer.queco.cn/ 點選右上角註冊按鈕,完成註冊
2.4.2 購買 QuTrunk 雲服務介面
登入賬號後,點選 API 服務->QuTrunk 雲介面->價格套餐->免費使用->立即購買,新註冊使用者提供一些呼叫額度。
點選右上角個人使用者名稱,選擇個人中心,開啟個人中心頁面
選擇我的 API,可以查詢當前賬號下的 API 資訊,點選 QuTrunk 雲介面前面的加號可以展開此介面的詳細資訊。如下:
2.4.3 建立應用,或者 API 訪問 AK/SK
點選右上角登入賬號開啟下拉選單,選擇我的應用,然後點選建立應用,填寫應用名稱和應用描述,最後點選確定完成應用建立
應用建立後,將以列表的形式展示在我的應用頁面,透過此頁面可以查詢應用的 AK/SK 資訊,展示資訊如下:
使用 QuTrunk 程式設計使用 QuSaaS 後端呼叫 Amazon Braket 資源需要使用到此 AK/SK 認證授權。
3、Demo 程式開發
demo 程式選用經典的 bell_pair演算法,程式命名為 qutrunk-qusaas-demo.py。 首先匯入 qutrunk 程式開發使用到的模組,demo 程式中使用 QuSaaS 後端,程式碼如下
from qutrunk.backends import BackendQuSaas
from qutrunk.circuit import QCircuit
from qutrunk.circuit.gates import CNOT, H, Measure
然後,設定QuSaaS訪問AK和SK。
ak = "QuSaaS上建立應用生成的Api key"
sk = "QuSaaS上建立應用生成的Api Secret"
# use BackendQuSaas
be = BackendQuSaas(ak, sk)
建立 bell 電路,並執行門操作和測量,並列印狀態向量
circuit = QCircuit(be)
qr = circuit.allocate(2)
# apply gate
H * qr[0]
CNOT * (qr[0], qr[1])
circuit.print()
circuit.draw(line_length=300)
print(circuit.get_prob(0))
print(circuit.get_probs())
print(circuit.get_statevector())
Measure * qr[0]
Measure * qr[1]
最後執行電路,並列印結果
res = circuit.run(shots=100)
print(res.get_counts())
print(res.running_info())
輸出結果如下:
$ python3 qutrunk-qusaas_demo.py
qreg q[2]
creg c[2]
H * q[0]
MCX(1) * (q[0], q[1])
┌───┐
q[0]: ┤ H ├──■───
└───┘┌─┴──┐
q[1]: ─────┤ CX ├
└────┘
c: 2/═══════════
0.4999999999999999
[{'idx': 0, 'prob': 0.4999999999999999}, {'idx': 1, 'prob': 0.0}, {'idx': 2, 'prob': 0.0}, {'idx': 3, 'prob': 0.4999999999999999}]
[0.70710678+0.j 0. +0.j 0. +0.j 0.70710678+0.j]
[{"0b00": 52}, {"0b11": 48}]
{"backend": "BackendQuSaas", "task_id": "dde06445761e43258589f041b745f428", "status": "success", "arguments": {"shots": 100}}
4、總結
本文從 Runtime 的安裝到利用 Runtime 自動化安裝 QuTrunk,以及在亞馬遜雲科技環境上如何利用 QuTrunk 開發量子計算程式,並且使用 QuSaaS 後端,從全流程上向讀者展示了整個實戰過程。該 Demo 程式利用了亞馬遜雲上的資源便利性,也充分展示了啟科量子計算軟體的靈活擴充套件性。開發者不僅能方便在本地環境開發,也可以在雲上快速透過啟科提供的自動化工具 Runtime 快速部署開發環境,還可以使用多種計算後端,幫助開發者快速的開發出自己的量子計算程式。本文只是透過一個 bell_pair 示例程式出發進行講解整個開發過程和開發方法,希望能給開發者帶來一定的啟發。後續還會從其他的維度來展示啟科 QuTrunk 及相關的程式設計實戰指導和技巧。
作者:
Keith Yan(丘秉宜)中國首位亞馬遜雲科技 Community Hero。
Bertran Shao(邵偉),啟科量子開發者關係負責人,國內首個開源量子計算社群發起者
黃文,啟科量子DEVOPS工程師
Marz Kuo(郭夢傑),啟科量子資深研發工程師,量子計算開源框架維護人