Quantinuum H1代量子計算機淺探

2022 年 2 月 22 日,Quantinuum 宣布與 IBM 達成協議,與劍橋量子計算有限公司(Cambridge Quantum Computing Limited)一起擴展 IBM 量子中心,為客戶提供更多訪問 IBM 量子計算系統的機會,以推動和開發量子生態系統。IBM 對 Quantinuum 的投資得到了 IBM Ventures 的推動。

Quantinuum 公司簡介
2021 年 11 月 30 日,霍尼韋爾量子解決方案公司(HQS)與劍橋量子公司(CQC)合并成立了新公司—— Quantinuum,它是目前全球最大的獨立集成量子計算公司。這兩家公司,霍尼韋爾基于離子阱捕獲技術打造了最高性能的量子硬件;劍橋量子公司則是量子軟件、操作系統和網絡安全領域的先驅,所以它們一同成立的新公司可謂實力雄厚。

公司 logo

Quantinuum 的理念是在科學的引領和企業的推動下,加速量子計算的發展。并旨在以與平臺無關的方式加速量子計算發展以及量子技術的創新,為經典計算機無法解決的一些最棘手的問題提供現實世界的量子解決方案。Quantinuum 希望通過一流的量子軟件與最高性能的硬件結合,借助集成的全棧技術,將真正的量子計算產品和解決方案帶入大型高增長市場。此外,Quantinuum 還希望能夠利用其力量,在制藥、醫療保健、材料科學、網絡安全、能源轉型和技術方面取得突破,以幫助緩解氣候變化。

Quantinuum 項目簡介
硬件:H1 量子計算機
Quantinuum H1 代量子計算機,全稱為 Quantinuum H1 陷落離子量子計算機,由霍尼韋爾提供支持。憑借高保真、完全連接的量子比特以及中間電路測量和量子比特重用等功能,Quantinuum 的系統使量子開發人員能夠更深入的設計電路,這也能加速在研究方向上的發展。

Quantinuum 發展計劃

Quantinuum H1 一代目前由兩臺計算機 H1-1 和 H1-2 組成,可通過云完全訪問,并與各種軟件框架兼容,而 H1 代量子計算機在發展速度上可以說非常迅速。2021 年 7 月,H1-1 型號的量子計算機率先實現了 1024 的實測量子體積(量子體積是 IBM 推出的一個度量標準,用于衡量量子計算系統的整體能力和性能,是目前較為權威的指標),在當時也屬于業內的較高水準。

在 2021 年 12 月 31 日,H1-2 型號的離子阱量子計算機實現了 2048 量子體積,達成第一臺通過 2048 基準測試的量子計算機的里程碑。短短四個月后,Quantinuum 就將系統模型 H1-2 的性能翻了一番,成為第一臺實現 4096 量子體積的商用量子計算機。

就在 2022 年 6 月 14 日,Quantinuum 宣布對其系統模型 H1 技術進行重大升級,新升級的 H1-1 量子計算機已經過廣泛的測試,這些改進大大提高了其計算能力,能夠在不犧牲性能的情況下運行比以前更復雜的計算。升級的內容包括將量子位由 12 個擴展到 20 個完全連接的量子位,保真度保持在 99.7%-99.8%之間,同時保留其較低的雙量子比特門誤差和關鍵功能,如中電路測量、量子比特重用、量子條件邏輯和全對全鏈接等操作;此外,Quantinuum 還將柵極區的數量從三個增加到五個,使 H1-1 能夠同時完成更多的量子操作,并增加可以并行完成的量子操作的數量等等。而 H1 量子計算機的第二個版本 H1-2 將會在今年晚些時候進行類似的升級。
升級成果圖

目前來看,Quantinuum 對于 H1 代量子計算機功能和性能不斷地迭代升級,兌現了 Quantinuum 的前身 —— 霍尼韋爾在2020年3月做出的承諾:在未來五年內,每年都將其俘獲離子技術的性能提高一個數量級。

軟件:TEKT
TKET 是 Quantinumm 開發的軟件開發工具包,用于創建和執行基于門的量子計算機的程序,可以解決化學、材料科學、金融和優化方面的重要問題。它具有很不錯的平臺兼容性,其電路優化例程允許用戶從當今任何嘈雜中型量子(NISQ)設備中優化量子電路和操作。TEKT 是開源的,可以通過 PyTKET Python 軟件包訪問,它的擴展模塊提供了與許多量子計算機、經典模擬器和流行的量子軟件庫等等設備的兼容性。

從量子技術的發展歷史上看,因為受限于量子計算機的硬件需求,開發人員主要通過在經典計算機上模擬和評估量子算法,并驗證和確認在量子計算機上運行生成的數據和結果。而量子計算機容易受到噪聲影響和干擾,經典模擬器很難解釋這種噪聲,因為它們無法模仿真實量子設備的物理操作,這就限制了他們預測量子電路在實際量子硬件上表現的準確性,使得事先識別和修復錯誤的問題變得更加困難。

所以在 TEKT 中,可以自動處理 NISQ 設備的許多特性,從而降低了使用量子計算機的障礙。它使用戶能夠構建電路而不必擔心設備架構,并能夠提供更大且更具表現力的門環。除了減小電路尺寸外,TEKT 還提供了降低 NISQ 器件噪聲和提高整體性能的工具,能夠產生更真實的數據,更好地了解量子電路如何執行。同時 TEKT 提供的拓展模塊可以使其適配眾多流行的量子軟件包,包括 Qiskit、Cirq、Pennylane 和 pyQuil 等等。

Quantinuum H1 項目實例
Quantinuum 的通用量子計算機使用的是可移動的離子作為陷落離子量子耦合器中的量子比特。系統模型 H1-1 由霍尼韋爾公司提供,它的門組包括單量子位的 RX、RY、RZ 和雙量子位的 ZZ 門。CX 門可以很容易地通過單量子位操作的組合來實現與一個 ZZ 的結合。此外,該系統還有一個高度精確的復位門操作可供用戶使用。

實驗中,平均單量子比特門保真度為 99.994(3) %,全連接量子比特的平均雙量子比特門保真度為 99.81(3)%,測量保真度為 99.72(5) %。Quantinuum 團隊在測試中運行了 200 個電路,每個電路運行 100 次,使用標準 QV 優化技術,每個電路平均產 152.97 個雙量子比特門。系統模型 H1-2 成功實現 4096 個量子體積基準,69.04 %的時間輸出重結果,超過了 2/3 閾值,置信度大于 99.99 %。

為了探究和了解 H1 代量子計算機的實際性能,這里我們可以選用 TEKT 提供的拓展模塊來調用 Quantinuum H1 的后端接口pytket-quantinuum,模擬在這臺量子計算機上的一些操作。
比如最有代表性的量子電路創建:首先使用以下命令安裝:

pip install pytket-quantinuum

我們可以直接使用在 pytket 中內置的本地量子電路接口,來進行電路的創建:

from pytket import Circuit
c = Circuit(2,2) # define a circuit with 2 qubits and 2 bits
c.H(0)           # add a Hadamard gate to qubit 0
c.Rz(0.25, 0)    # add an Rz gate of angle 0.25*pi to qubit 0
c.CX(1,0)        # add a CX gate with control qubit 1 and target qubit 0
c.measure_all()  # measure qubits 0 and 1, recording the results in bits 0 and 1

我們此次安裝pytket-quantinuum拓展模塊可使用以下方法:

from quantinuum import QuantumCircuit
qc = QuantumCircuit()
# ...
from pytket.extensions.quantinuum import quantinuum_to_tk
c = quantinuum_to_tk(qc)

順便一提,如果有其他需求,除了可以接入pytket-quantinuum模塊,還可以嘗試嵌入其他框架代碼語言,比如 Qisket、Cirq 等等:

from pytket.qasm import circuit_from_qasm
c = circuit_from_qasm("my_qasm_file.qasm")

拓展模塊安裝完畢,我們可以運行一個 Quantinuum 進行中電路測量的示例,運行代碼如下:

from pytket.circuit import Circuit, Qubit, Bit, OpType, reg_eq
from pytket.circuit.display import render_circuit_jupyter

# Set up Repetition Code with mid-circuit measurement and corrections

# 2    1    0 = data: data qubits
# *----*----*
#   ZZ   ZZ
#   1    0    = syndromes
#   0    0    = ancillas

# Set up circuit object
circuit = Circuit(name="Repetition Code")

# Reserve registries

# Add qubit register, the data qubits
data = circuit.add_q_register("data", 3)

# Add qubit register, the ancilla qubit
ancilla = circuit.add_q_register("anc", 1)

# Add classical registers for the syndromes
syndrome = circuit.add_c_register("syndrome", 2)

# Add classical registers for the output
output = circuit.add_c_register("output", 3)

# Prepare the logical state
# Qubits always start in |0> and logical |0> == |000>.
# So we already start in logical |0>.

# Syndrome Extraction
circuit.add_gate(OpType.Reset, ancilla)
circuit.CX(data[0], ancilla[0])
circuit.CX(data[1], ancilla[0])
circuit.Measure(ancilla[0], syndrome[0])

# Syndrome Extraction
circuit.add_gate(OpType.Reset, ancilla)
circuit.CX(data[1], ancilla[0])
circuit.CX(data[2], ancilla[0])
circuit.Measure(ancilla[0], syndrome[1])

# Correction
# # if(syndromes==1) -> 01 -> check 0 bad -> X on qubit 0
circuit.X(data[0], condition=reg_eq(syndrome, 1))

# # if(syndromes==2) -> 10 -> check 1 bad -> X on qubit 2
circuit.X(data[2], condition=reg_eq(syndrome, 2))

# # if(syndromes==3) -> 11 -> check 1 and 2 bad -> X on qubit 1
circuit.X(data[1], condition=reg_eq(syndrome, 3))

# Measure out data qubits
circuit.Measure(data[0], output[0])
circuit.Measure(data[1], output[1])
circuit.Measure(data[2], output[2])

render_circuit_jupyter(circuit)

需要注意的是,為了獲取 Quantinuum API,我們需要登錄注冊的賬號,驗證設備狀態:

from pytket.extensions.quantinuum import QuantinuumBackend

machine = 'H1-1E'

QuantinuumBackend.login()
backend = QuantinuumBackend(device_name=machine)

print(machine, "status:", backend.device_state(device_name=machine))

在 pyket 包含許多優化電路的功能,比如在有需求的情況下,盡可能地減少門的數量,并為量子計算機的原始門集重新合成電路。這里電路由get_compiled_circuit編譯,包含優化門處理,并將電路重新合成為 Quantinuum 的本地門組,利用optimisation_level設置了編譯過程中的優化級別。

compiled_circuit = backend.get_compiled_circuit(circuit, optimisation_level=1)

render_circuit_jupyter(compiled_circuit)

在以上步驟調試好后,我們可以進行量子電路設置并運行了:

n_shots = 100
handle = backend.process_circuit(compiled_circuit, 
                                 n_shots=n_shots)
print(handle)

輸出結果為:

('97611b5f87ab4e559d885ac77189a5fb', 'null')

后端調用:

status = backend.circuit_status(handle)
print(status)

輸出結果:

CircuitStatus(status=<StatusEnum.COMPLETED: 'Circuit has completed. Results are ready.'>, 
message="{'name': 'Repetition Code', 'submit-date': '2022-04-07T20:46:37.217088', 
'result-date': '2022-04-07T20:47:17.522960', 'queue-position': None, 'cost': '7.04', 'error': None}", 

error_detail=None, completed_time=None, queued_time=None, 
submitted_time=None, running_time=None, cancelled_time=None, 
error_time=None, queue_position=None)

最后生成 json 文件:

import json 
result = backend.get_result(handle)
with open('pytket_mcmr_example.json', 'w') as file:
    json.dump(result.to_dict(), file)

對于運行結果,我們需要進行分析處理。一般我們會對原始結果應用投票來決定我們得到 0 和 1 的次數。首先,定義一個多數投票函數:

def majority(result):
    """ Returns whether the output should be considered a 0 or 1. """
    if result.count(0) > result.count(1):
        return 0
    elif result.count(0) < result.count(1):
        return 1
    else:
        raise Exception('count(0) should not equal count(1)')

接著處理輸出:

result_output_cnts = result.get_counts([output[i] for i in range(output.size)])

result_output_cnts

輸出結果為:

Counter({(0, 0, 0): 96, (0, 0, 1): 2, (0, 1, 0): 1, (1, 0, 0): 1})

對結果進行數據統計:

zeros = 0  # Counts the shots with majority zeros
ones = 0  # Counts the shots with majority ones
for out in result_output_cnts:
    m = majority(out)
    
    if m == 0:
        zeros += result_output_cnts[out]
    else:
        ones += result_output_cnts[out]

一個邏輯零被初始化,所以我們的錯誤率應該是

p = ones / n_shots
print(f'The error-rate is: p = {p}')

最終我們可以得到這次試驗中的錯誤率統計:

The error-rate is: p = 0.0

IBM 與 Quantinuum 合作如本文開頭所說,最近 IBM 投資了 Quantinuum。對于 Quantinuum 來說,能夠擴大對 IBM Quantum 硬件和軟件方面的支持,包括 IBM 最近宣布的 127 量子位處理器“Eagle”,以及 IBM 的量子專業知識和 開發者工具包 Qiskit,同時也能讓 IBM 為 H1 代量子計算機進行更好的優化,,為客戶提供更多訪問 IBM 量子計算機的機會。這兩家公司的合作,勢必會為量子行業的系統生態帶來積極的促進作用,加速量子計算的發展和量子技術的創新,為經典計算機無法解決的一些棘手問題提供現實世界的量子解決方案。

參考鏈接:
1. Quantinuum |產品|H1 https://www.quantinuum.com/products/h1
2. IBM 投資 Quantinuum https://cambridgequantum.com/quantinuum-and-ibm/
3. pytket 1.3.0 文檔 https://cqcl.github.io/tket/pytket/api/getting_started.html

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容