原文作者:David Matthews
想亲手玩一把新技术吗?以下工具将帮助你迈开第一步。
在新手眼里,使用IBM的在线“量子体验”(Quantum Experience)工具构建的电路,看起来就像是计算机科学的入门教程。计算的基础元件逻辑门排列在数字“画布”上,将输入转换为输出。
但这是一个量子电路,逻辑门修改的不是经典的二进制位1或0,而是量子计算的基本单位量子比特。与二进制位不同,量子比特能够以1和0的“叠加态”存在,只有在被测量时才会解析为其中一个。量子计算还利用了量子纠缠等特性,在量子纠缠中,改变一个量子比特的状态也会改变另一个量子比特的状态,即使两个量子比特相距遥远。
这些特性使量子计算机能够比经典计算机更快地解决某类问题。例如,化学家可以使用量子计算机建模,加速鉴定出新的催化剂。
插图:The Project Twins
可是,这一前景距离我们仍很遥远。即使是当今最快的量子计算机也不超过100量子比特,并且受到随机错误的影响。2019年,谷歌证明其一台54量子比特的量子计算机能在几分钟内解决一个经典计算机需要1万年才能解决的问题(参见:量子优越性的首次实验演示,你看懂了吗?| 内附三分钟讲解视频)。但这种“量子优越性”只存在于极少数情况下。加拿大达尔豪斯大学的数学家、量子计算专家Peter Selinger估计,需要几千量子比特的计算机才能对化学系统进行有效的建模。
东京庆应义塾大学的量子计算研究员Sara Metwalli表示:“目前量子计算机所处的阶段有点像20世纪80年代末的经典计算机,现在做的大部分工作都是为了证明量子计算将来有能力解决人们关注的问题。”
快速发展的领域
尽管如此,取得进展的速度很快。IBM希望到2023年建造一台1000量子比特的计算机,量子计算的支持者激动地探讨着该领域已经迈向成熟。对于那些想看看量子计算究竟有什么了不起的,越来越多的在线教程、编程语言和模拟器让他们比以往任何时候都更容易进行量子计算。
经典计算机背后的数字逻辑众所周知:例如,1 AND 0 = 0。但是量子计算机的灵活性要大得多,研究人员必须掌握量子比特状态的数学表达方式,才能理解量子比特的行为方式。“量子计算本质上是矩阵向量乘法内里是线性代数。”华盛顿州的微软研究院量子计算组首席经理Krysta Svore说。
加州圣何塞IBM研究院量子应用、算法和理论团队高级经理Jeannette Garcia说,科学家还需要考虑量子电路。这些电路从左到右运行,看起来有点像音乐五线谱,在通过测量揭示其状态前,这些电路可直观地表示量子比特是如何通过逻辑门(类似于构建电子电路的AND门、OR门、NOT门)进行转换的。IBM的Quantum Experience允许用户拖放逻辑门,在Web浏览器中创建自己的电路,并在真正的量子计算机上远程运行。
量子语言
在此基础上,专门的软件框架和编程语言还能让研究人员模拟、执行、探索他们设计的量子电路。2020年的一篇综述(B. Heimet al. Nature Rev. Phys.2, 709722; 2020)就描述了其中几种语言。
微软、IBM和谷歌都创建了大量利用Python编程语言的工具Q#、Qiskit、Cirq,并且已经构建了用户友好型开发环境,提供了充足的文档来帮助程序员开始。例如,微软创建了一个完整的量子开发工具包(QDK),包含代码库、调试器和资源估算器,资源估算器可提前检查算法需要多少量子比特。
参与其中的不仅仅是科技巨头,位于加州伯克利的Rigetti Computing公司拥有一个31量子比特的计算机,还发布了一个名为“Forest”的量子软件开发工具包,其中包括一个名为pyQuil的Python库。总部设在英国的剑桥量子计算公司(Campidge Quantum Computing)已经推出了tket,以及相关的pytket库。
另一个选择是Silq,这是瑞士联邦理工学院(ETH)一个小组去年发布的一种语言。共同创作者Benjamin Bichsel说,它的主要优势之一是“不计算”(uncomputation)。该语言会自动重置量子程序使用的临时值,而不是强制程序员手动完成这种枯燥的工作。
一个不那么用户友好的选择是Quipper。与Python不同,Quipper不是一种“命令式”语言在这种语言中,程序会详细描述一系列改变软件状态的步骤,Quipper的开发者之一Selinger说。相反,它是“函数式”语言,更类似于一系列数学函数。Selinger说:“你从不更新任何东西,没有变量。”
Selinger表示,虽然Quipper的函数性质对目前的小型设备不能拿来就用,但它最终使之更容易从数学上验证量子程序是否有漏洞,并真正解决你想要它解决的问题。但它也会增加这种语言的难度。Selinger说:“如果你想让非专业人士(如化学家)尝试量子计算,那么最好降低门槛,从大多数人已经熟悉的编程语言开始。”他建议使用Qiskit或其他某种基于Python的命令式语言。
真正的量子计算机主要掌握在一些私营科技公司的手里,这些公司会以各种条件提供该硬件的访问权限。
IBM免费提供5量子比特的计算机,但要使用该公司更强版的计算机,研究机构需要加入它的量子网络(Quantum Network),网络成员包括大学、实验室和公司。Garcia说,尽管IBM还没有公开定价,但确实为那些“有很酷研究想法并希望使用设备进行尝试”的科学家颁发了“访问奖”(access award)。例如,芝加哥大学的一个研究小组去年11月宣布,他们利用IBM的机器探索了“激子凝聚”(exciton condensate)这种高导电量子系统(L. M. Sageret al. Phys. Rev. Res.2, 043205; 2020)。
微软通过其新的Azure Quantum量子云平台,提供对其他公司的量子计算机的访问。Svore说,目前正处于免费的“有限预览”(limited preview)阶段,研究机构可以申请成为早期采用者。
谷歌不出售其量子计算机的访问权限。但是谷歌量子计算合作和程序团队负责人Markus Hoffmann表示,任何有切实计划要在谷歌硬件上部署实验的科学家都应该与谷歌取得联系。常驻德国慕尼黑的Hoffmann说:“根据研究对领域的影响力,我们将找到实现实验的方法。”
英国布里斯托大学的量子计算研究员Ashley Montanaro通过AWS(亚马逊网络服务)运行其量子程序;AWS是一个云计算平台,可以连接到其他公司的量子设备。他提醒说,测试一个量子电路大约需要1美元,但由于研究人员想要测试的量子电路可能有成千上万个,“成本可能会大增。”
从模拟开始
好奇的科学家还可以通过一个在经典计算机上模拟量子计算机的模拟器,开展实验。例如,微软的QDK有一个内置模拟器,可以在笔记本电脑上模拟一个30量子比特的计算机。
“我给所有人的建议是:从模拟器开始。”Thomas O’Brien说。他是谷歌量子人工智能(Quantum AI)研究团队的欧洲量子算法和应用程序负责人,常驻慕尼黑。“模拟器的可预测性高很多。它可以让你真正看到量子状态。”检查真正的量子计算机的状态只会让它崩溃,使故障排除变得困难,他说。杂乱的背景热或磁场很容易使量子比特脱离其现有状态。
但是Montanaro建议说,如果条件允许,研究人员仍应该在真正的量子计算机上运行他们的程序,以便熟悉其有噪音、容易出错的行为。“这样你就能知道一些你无法从模拟中知道的东西。”他说。
随着研究的进步和量子设备的改进,这种问题将会减少。但即便如此,量子计算机也不太可能取代经典计算机,而是会被嵌入更大的经典架构中,处理它们可以高速解决的问题让速度实现指数级提升。
研究人员仍要寻找潜在的问题,寻找工作还没有结束。“这确实是个大问题,我认为回答的唯一方法就是摸索。”Eric Johnston说。他是《量子计算机编程》(Programming Quantum Computers,2019年)的合著者,常驻美国波士顿。“如果你懂一些经典计算,你会发现量子计算中有很多等待探索的领域,你绝不会感到无聊。”