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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容