量子計算:突破 49 個量子比特模擬大關

如今,量子計算的發展來到了一個臨界點,開始解決其他更傳統的方式無法高效計算甚至無法計算的重要問題。想要跨過這個臨界點,我們需要構建、測試和運行能夠容納至少 50 個量子比特的可靠量子計算機。

量子計算:突破 49 個量子比特模擬大關

而要釋放這方面的潛能,科學和工程領域都需要實現巨大的飛躍。為了實現這種跨越,我們需要採用一些方法來測試量子設備,並對比觀察到的設備行為和期望的設備行為,從而隨著時間的推移不斷優化設備的設計、製造以及運行。尤其是,當測試某量子設備觀察到的測量結果是否與執行的量子電路的結果一致時,為了測試任意電路,你需要能夠針對這些結果,計算預期的量子振幅(用於描述系統行為的複雜數字)。量子電路可以看成是發送到量子設備以執行計算的指令集(量子門集)。

這個需求帶來了一個問題。在約 50 個量子比特級別,現有的量子振幅計算方法要麼需要的實際計算過多,要麼對內存有著極高的要求(即使現有的超級計算機也無法做到),甚至有時同時對計算和內存有著很高的要求。IBM 研究院今年組建了一支團隊,專門研究這個問題,目的在於建造擁有 49 個量子比特及以上規模的短型系統電路(short-depth)。作為該團隊的成員之一,我在一個看似毫不相關的情況下受到了重要啟發。

將量子門看成硬毛刷

量子比特是量子計算中基本的信息單位,就像傳統計算領域中的比特一樣。一個量子比特可以同時代表 0 和 1 兩種不同的狀態,而且,事實上它們是以一種加權組合的形式呈現(比如 37% 代表 0,63% 代表 1)。二個量子比特可以同時代表四個值:00、01、10 和 11,還是採用加權組合的形式。同理,三個量子比特可以同時代表 2^3 種狀態,即 8 個值:000、001、010、011、100、101、110 和 111。五十個量子比特能同時代表超過千萬億個值,而 100 個量子比特代表的值超過千萬億的二次方。

量子計算:突破 49 個量子比特模擬大關

五十個量子比特能同時代表超過千萬億個值,而 100 個量子比特代表的值超過千萬億的二次方。

在測量量子比特時,它們的量子態會“坍縮”至其中的一個值,而這些值的權重(即量子振幅)決定了觀察到這些值的概率。量子計算的巨大前景在於,它有望對呈指數級增長的潛在結果執行並行計算,產生量子態。這種情況下,期望的計算結果擁有較大的振幅,因此,在測量量子比特時,這些結果更有可能被觀察到。

我所說的這個看似不相干的時刻,其實就是有一天晚上,我在洗碗的時候,用了一把硬毛刷來清洗高腳杯。我突然發現,如果將應用在指定量子比特上的量子門放到一個柵極電路中來看,這些量子門就成了硬毛刷狀,而這些刷毛就是應用到這個量子比特上的糾纏的量子門。從數學上來看,這個佈滿量子門的“硬毛刷”就好比一個個張量以及刷毛到張量的索引。在數學中,一個張量基本上相當於計算機科學中的 N 維數組。

量子計算:突破 49 個量子比特模擬大關

這個發現很快讓我想到了將柵極電路拆解成單個的“硬毛刷”,一個硬毛刷對應一個量子比特,然後計算相應的張量,最後將每個量子比特的張量整合在一起,計算整個電路的量子振幅。第二天上午,我發現瞭如何只使用 1 GB 內存,拆分由 16 個量子比特組成的集群,從而計算出一個 64 量子比特深度為 10 的電路的振幅。之後,這個思路就像滾雪球一樣發展成更常規的方式,也就是將電路拆分成分支電路,分別單獨模擬分支電路,然後按照不同的命令將這些分支電路的結果整合在一起,計算出期望的振幅。

第二天上午,我發現瞭如何只使用 1 GB 內存,拆分由 16 個量子比特組成的集群,從而計算出一個 64 量子比特深度為 10 的電路的振幅。

最終,我們得到了一個計算量子振幅的方法,這要求我們在原有方法的基礎上大幅減少內存佔用,同時確保針對每個振幅執行的計算量與當前較先進的方法有可比性。通過結合使用張量切片和前面提到的按切片計算電路的輸出振幅的方法(而不必一次性計算或者保存所有振幅),我們可以滿足減少內存佔用方面的要求。

當計算測量結果的振幅時,只有那些對應實際測量結果的切片需要計算。換言之,為了根據測量結果評估量子設備的性能,你不必進行完整的模擬,而且隨著量子比特的數量快速增加,也無需耗費額外的計算成本。這是我們的方法的一個重要優勢。

但是,如果想要執行完整的模擬,我們的切片方法還有另一個優勢,那就是切片能夠以並行的方式完全獨立地進行計算,這意味著這些切片可以輕鬆地隔離開來,從而在由鬆散耦合的高性能計算資源組成的網絡中執行分佈式計算。這項功能徹底改變了完整模擬的經濟效應,讓我們能夠將不可能變為可能,成功模擬量子電路。

利用超級計算機,模擬 49 和 56 個量子比特電路

為了讓後面這種可能性變成現實,我們的研究團隊聯繫了勞倫斯利福莫爾國家實驗室 (Lawrence Livermore National Laboratory, LLNL)。通過藉助 LLNL 的超級計算機和最初由加州大學伯克利分校開發的 Cyclops Tensor Framework 對張量進行操作,我們首先選擇了模擬一個 49 量子比特深度為 27 的全隨機電路,該電路被視為所謂量子霸權的一個示例。在這個模擬過程中,計算步驟被分成 2^11 個切片,其中每個切片計算 2^38 個振幅,並且需要 4.5 TB 的容量來存儲張量值。切片計算在六組處理器(四架處理器為一組)中以並行的方式運轉,且每組處理器包含 4,096 個處理節點,共計佔用 64 TB 的內存。模擬 49 個量子比特電路一度被認為是不可能的事,因為如果採用以前的方法,需要用到 8 PB 的內存,這超過了現有超級計算機的能力範圍。

在接下來的演示中,我們選擇了深度為 23 且包含 46 個比特的通用隨機電路,而如果使用之前的方法,因為需要 1 EB 的內存,完全無法模擬這種電路。計算步驟被分成 2^191 個切片,其中每個切片計算 2^37 個振幅。但是在這次模擬中,出於演示的目的,我們選擇僅計算單個隨機所選切片的振幅;需要使用 3 TB 的內容來存儲張量值,並在兩架處理節點(2,048 個處理節點)上進行計算,總內存為 32 TB。

除了這些演示之外,我們還發現了對包含 49 個量子比特的電路進行分區的各種方法,確保只需 96 GB 的內存即可完成此次模擬,稍稍超出計算需求的兩倍。我們還發現了需要 162 GB 內存的分區方法,其中計算需求幾乎沒有任何增加。因此,我們現在可以在高端服務器的集群上進行這些模擬,而無需使用超級計算機。

模擬的進展將有助於推動量子硬件的進展

儘管我們的方法究竟能實現何種程度的計算量尚未確定,但毫無疑問的是,這種進展將有助於我們突破包含 49 個或更多量子比特的短型(short–depth)量子電路模擬方面的侷限。實際上,這些方法有助於我們測試和了解物理設備的運行情況,而且還有助於短型算法的開發和調試,用於解決採用量子計算相比傳統方法更具優勢的問題。

至少對於目前處於開發階段或圖紙設計階段的量子設備而言,是否能夠執行這些模擬的關鍵在於,如何通過經濟性的方式獲得計算資源量,而不是能否以物理方式實現這些模擬。舉例來說,在我們的 56 量子比特模擬中,之所以未能完成完全模擬,是因為我們在 Vulcan 上的時間分配已超時。毫無疑問,完全的 56 量子比特短型電路模擬現在已經可以實現。同時受孤立計算系統上可用資源所限制的模擬運行時間也完全不是問題。由於切片計算能以並行的方式進行,因此僅需最少量的通信即可分佈在鬆散耦合系統的網絡中,進而實現較強的可擴展性,充分利用所有的切片。基於雲的量子模擬最終可能還會實現超大量子電路的模擬。

量子計算:突破 49 個量子比特模擬大關

這是否意味著我們就不再需要實際的量子計算機?並非如此。實際的量子計算機必不可少。在特定類型的應用中,我們需要物理量子計算機來執行計算,這些量子計算機要麼需要過多內存,要麼需要在傳統計算機上以經濟性的方式實現超強的計算能力。此外,從某種程度上來說,我們將會發現,對於一些特定的應用,量子計算機相比傳統計算機更具優勢。

這並不是所謂的“量子霸權”概念,而是說量子計算技術已經發展到了“就緒”階段,使得我們能夠充分利用已經上線的量子硬件、軟件和工程設計功能。模擬已成為這種“量子就緒”階段中不可分割的一部分。

IBM Q 體驗可提供相關的資源,供我們進行學習和試驗,而作為 IBM Q 體驗的一部分,IBM 可以提供包含 5 個和 16 個量子比特的模擬器和實際硬件。此外我們還可提供量子 SDK,即量子信息軟件工具包 (QISKit),可輕鬆實現電路構建。為了幫助大家瞭解有關如何入門的更多信息,我們在 github 提供了 Jupyter notebook 示例。

隨著設備技術的發展,我們將會邁進一個量子優勢時代;在這個時代中,大量的企業、科學家和工程師將能夠充分利用量子硬件和量子計算能力,繼續解決日益複雜的問題。在這個量子優勢時代,無論是新量子算法的研究和開發,還是設備技術本身的發展,都需要藉助高級模擬功能。


分享到:


相關文章: