Google 的 Quantum Computing Playground 可以用來做什麼?

Google研究員發布了第一個基於瀏覽器的量子計算機模擬器Quantum Computing Playground, 模擬器是基於WebGL,在一個簡單的IDE界面中模擬GPU加速的量子計算機,支持用腳本語言編寫調試代碼,可視化2D和3D量子態,根據電腦的GPU 可模擬最多22個量子比特。傳統電腦的比特要麼是0要麼是1,而量子比特可以處於0和1的疊加態。如果有N個量子比特處於疊加態,那麼它們將有2^N個組 合。

量子計算機(quantum computer)是一類遵循量子力學規律進行高速數學和邏輯運算、存儲及處理量子信息的物理裝置。當某個裝置處理和計算的是量子信息,運行的是量子演算法時,它就是量子計算機。量子計算機的概念源於對可逆計算機的研究。研究可逆計算機的目的是為了解決計算機中的能耗問題。

引用自:Google 發布基於瀏覽器的量子計算機模擬器

官網:http://www.quantumplayground.net/

GitHub:https://github.com/Parisa-b/Quantum-Computing-Playground

提問:

這個平台是基於什麼實現的?

我們可以用這個量子模擬器做什麼?

對部分實驗的模擬是否已經達到實用的層次?

例如在 量子計算機會給化學研究帶來突破嗎? - Climber.pi 的回答 中提出的:

直接與物理系統相關的包括, 量子化學(分子動力學模擬), 超導物理(通過計算尋找室溫超導體), 量子場論(模擬量子多體問題).


7月10日更新

考完試,然後也浪完了OTZ,然後過來填坑。更行的主要內容:

  • 用經典計算機模擬量子計算機能幹嘛
  • 然後就之前 @Climber.pi 的建議進行一些修改

  • 修正了之前一些不(xia)准(chui)確(le)的地方

然後引用的文獻什麼的請讓我慢慢補吧OTZ

----

很巧的是,我也正在為JuliaQuantum寫類似的東西(QuCmp.jl,repo名字現在是QuCmp但是少個.jl不符合要求什麼的),但是還沒完成。感興趣可以關注我的github: @Roger-luo, 或者JuliaQuantum的官網:Julia Libraries for Quantum Science and Technology 然後歡迎code reviewer和pull request!!!

---

首先是關於這個Quantum Playground,這個東西既然是叫Playground已經說明作者並沒有打算把它做成多麼吊的軟體的感覺(不然就該叫個像torch這種高大上的名字了)

而且看github上的源碼似乎是兩年前的東西了? 我不能解答前兩個問題, 因為我不寫js, 對google的這個平台並不了解. 但是後面的關於對實驗的模擬是否實用我可能還能回答一下. 首先要說明的是, google的這個程序的功能是不夠強大的. 貌似只有一些基本的演算法和門操作. 比如Shor 演算法, QFT, 量子退火...

現在有哪些可以拿去玩的呢?

其實除了Google的這個,量子計算的數值模擬在之前已經有很多軟體/庫了。這些軟體/硬體描述型的語言大致有這樣一些:

  • 工具箱/類庫:IQC的quantum++(c++,個人覺得把所有的門給定義到一個類的成員函數里去是一種很奇怪的寫法...);量子力學工具箱QuTiP(Python)里也有一些簡單的quantum circuit工具;一個稍微早一點的庫libquantum(c語言),你能直接在Debian系的源里找到這個庫
  • 主打某種量子編程語言的模擬器:Liquid(微軟,F#),quipper(haskell),qcl(c語言)
  • 工具軟體:QuIDDPro 這個是一個基於QuIDD編碼的軟體,只能用於非商業用途,而且不是開源的,而且你還得發郵件問作者要可執行文件。沒有嘗試反編譯過這個,不知道是用啥寫的,我猜是c語言?

為什麼要用經典計算機模擬量子計算機呢?

先定義一下什麼是有效的模擬:有效的模擬是指時間空間複雜度不會指數增長,而在多項式級別能夠完成的模擬。

那麼用經典計算機當然是不能有效模擬通用的量子計算機的,這個應該有很多地方都提到過了. 那麼現在數值模擬能模擬多少qubit呢?

我的筆記本配置如下:

4GB內存,Ubuntu16.04

G730M的顯卡,Intel Core i5-4200

純CPU計算可以跑出13個bit的絕熱計算,用的是我寫的一個小程序AdiaComput.jl里的算例(內存夠用),跑了兩天,GPU加速會快一些。這個小程序是QuCmp.jl里絕熱計算的部分單獨抽出來的,通過CUDArt.jl和CUSPARSE.jl兩個介面來支持GPU加速,不過由於用的是Julia的GC管理顯存,顯存爆得有些厲害。集群上可以跑得更多。

實用意義的話, 可能有很多人是不是會關心量子計算的模擬會不會像神經網路的模擬一樣有實用意義. 那麼答案是否定的, 因為我們沒辦法有效地用經典計算機模擬量子計算. 因為首先量子計算的一個killer application還是它的加速效果. 這和神經網路是不同的. 量子計算帶來的加速是因為它的物理實現, 是因為量子力學中有糾纏這樣的特性. (當然糾纏是不是帶來加速的原因這個是另外一個話題)你沒辦法用一台經典計算機獲得量子演算法的時間複雜度.

所以利用它們進行對其它方向/學科很有意義的數值模擬可能效果並不如tensor network, 密度泛函等相關的經典演算法. 也就不能給出一個殺手級的模擬結果(指量子計算所能帶來的一些quantum simulation的結果比如分子動力學的模擬等), 因為歸根到底用這些程序還是在做經典計算.

我認為為量子計算寫模擬器/程序類庫的意義是這樣的:

1.量子演算法的模擬和演示

2.探索物理層介面的標準, 為實驗和理論提供橋樑

3.探索量子編程語言的設計/同時也是在尋找某種量子物理的新的描述方式

4.為將來的實驗設計提供工具,可能會有些類似於現在的EDA(電子設計自動化, 計算機輔助設計)

5.探索量子操作系統/軟體的設計和標準

6.測試不同量子計算方案

7. ... 其它的因為並不是我所涉及的領域, 所以可能沒辦法說明

舉個例子, 比如某些時候一個演算法設計的時候用的是3bit的門,但是我們在物理實現的時候可能因為實驗條件, 技術的限制, 我們更希望都是單比特門和兩比特門, 那麼是否能等效呢? 答案是可以的, (http://cpc.cs.qub.ac.uk/summaries/AENX_v1_0.html) 而這個時候我們可能就希望有一個compiler程序自動地把這個演算法的設計轉換成單比特和兩比特的組合。於是這個時候量子計算的一些庫就很有意義了,數值模擬最初也是最重要的應用就是降低實驗成本。

再者, 你有了一個新的演算法, 但是你可能需要有一個數值結果, 那麼能有一個現成的模擬框架當然是很方便的. 因為一個量子物理的模擬程序很有可能是很耗計算資源的(隨著bit數指數增長). 這個時候把一些設計HPC(高性能計算)的工作交給更專業的人優化就很有必要, 也很節省時間. 所以一個模擬軟體或者程序是有必要的.

不過呢,有一個例外是在量子線路模型里有一種stabilizer circuit,它是指由Hadamard 門,相位門(不知道這麼翻譯對不對,因為實際上是轉過一個固定的相位),CNOT門組成的量子線路。根據一個蠻著名的定理Gottesman-Knill定理,我們知道能夠在經典計算機上有效地模擬它(參看前面)。而很巧的是,在發現這個定理之後若干年,因為量子糾錯的研究中會用到這些門,比如表面碼(surface code),one-way量子計算等。於是有效地模擬量子線路就變成了一個蠻有意義的話題。

寫在最後

所以, 它們的教育和學術意義會更大一些. 並且也不能夠去解決某些量子計算機才能勝任的工作(因為這往往意味著很大的計算量). 在商用量子計算機造出來之前(應該是至少有幾十個qubit的通用機), 它們的商業價值還不明顯.

當然你可以使用這個程序來學習量子計算會是一種很好的學習途徑.


很久以前玩過一會兒這個,納悶怎麼今天才出現在時間線上難道這個變成類似於IBM的「量子云計算機」那個東西(IBM Research Quantum Experience)了?點開一看果然是個是14年的老新聞。

這種所謂的量子計算機模擬,其實是線性代數計算器。

從名字可以看出來,playground。這東西是個玩具,給不明覺厲的人玩玩看看量子計算機能幹什麼。

量子計算的「模擬」和一般的工程學或者生物化學之類的裡面所說的「模擬」可能有點不大一樣。對於工程學或者生物化學之類的學科,「模擬」一般是指通過第一性原理,即使用還原論的思想,從最簡單的物理定律出發模擬出大尺度上的宏觀效應;或者是通過蒙特卡洛原理出發,來解決無法進行精確計算的問題。

而量子計算的模擬,至少在這個playground裡面,不過是個線性代數計算器罷了。因為對於n個qubit而言,在量子理論裡面是用一個2^n維的hilbert space空間的矢量描述的。每一個量子門操作都對應一個定義在Hilbert space空間的線性unitary變換。

一個典型的量子計算的運行過程包括:

    • 初始化你的Qubits。你會得到一個2^n維向量,比如(1,0,0,0,0,...)
    • 演化你的Qubits,即施以一串量子邏輯門。設計這一串邏輯門的過程就是量子計算的「編程」了
    • 測量最終的結果。一般是所有可能結果的概率值,實驗上大概是觀測出來一些譜之類的。

那麼「量子計算的模擬」,就是把這個一串矩陣相乘的過程用計算機算出來。畢竟這種2^n維空間用手計算是很蛋疼的。

n大了以後,計算機來計算也很蛋疼了。所以我們需要量子計算機。

當然n小的時候,還是可以用家用電腦算算的。


推薦閱讀:

傳統生物專業的碩士生,怎麼通過自學轉行到生物信息學領域?
有哪些生物信息方面大數據的可視化案例?請列舉。
動力學模擬蛋白質摺疊的研究,現在還存在什麼問題?
在 MD 安德森癌症中心學習是一種怎樣的體驗?
網上的生物信息學資源都有哪些?

TAG:生物信息學 | 量子計算理論 | 計算化學 | 計算材料學 | 量子計算機 |