基于云计算的机器¶
贯穿整个课堂,所有你已经尝试了迄今为止在本地运行模拟器——经典程序,运行在您的机器上,并“假装”的量子计算机。它可以运行一个电路很好正如您所看到的(虽然内存要求与每个量子位双打你添加到总电路)。然而,模拟仍然是一个经典的系统:它不运行任何速度比普通电脑,所以它不能模拟量子算法运行速度比其经典等价的。
来实际上利用量子算法提供的加速效果,我们需要一个真正的量子计算机工作真正的量子位。
幸运的是,今天这些设备实际存在。即使幸运,我们可以很容易地获得他们尝试了!
许多公司致力于量子计算机使用云。有些是公开的,但很多都是限于研究者和科学家。
这里列出了一些可用的量子计算平台:
类的这一部分,我们将使用IBM量子平台的选择。
IBM量子¶
IBM量子是一个非常成熟的平台由IBM cloud-accessible量子计算机维护。您可能已经猜到,因为他们保持Qiskit,他们非常容易Qiskit电路量子计算机上运行。在本节中,我们将运行的例子qiskit_reference.py
然后看看执行不同于模拟器。
请注意
根据IBM量子的最终用户许可协议,如果你在14岁以下,你是不允许使用他们的系统。你必须跟随一个同学。如果你14至17,但你可以用它你需要一个家长或监护人阅读EULA并接受它。
创建一个帐户¶
你要先访问https://quantum-computing.ibm.com创建一个新的帐户与IBM量子。这是一个相当简单的过程;所有你需要给你的电子邮件地址,你的名字,一个密码,和你的国家的起源:
一旦你做到了,你会收到一封电子邮件从他们一个验证码。进入,你会被提示EULA。这就是你需要一个家长或监护人如果你14和17岁之间。
当你接受了EULA,你会看到你的指示板:
在这里您可以查看你获得的量子计算机,你提交给作业队列的电路,完成了电路的结果,任何电路你救了你可以以后再运行它们。
探索一个IBM的量子计算机¶
让我们首先看电脑,你可以访问。
看看“IBM量子服务”窗格中,点击查看所有左上角的按钮:
这将带你到服务页面。一旦这里,点击系统对屏幕顶部的选项卡。这是一个列表的所有IBM量子的量子计算机。他们中的很多人都相对较大;的ibmq_manhattan
和ibmq_brooklyn
系统,例如,提供高达65量子位元!不幸的是,我们无法获得这些。
来看看我们做访问,点击所有系统(23)右上的并选择下拉您的系统(9):
这减少了机器的清单,你就可以使用。
让我们看看其中一个系统;例如,ibmq_santiago
。点击,右侧窗格中会弹出与机器的细节。它会像这样:
这是重要部分,你应该看看现在,用红色字母的图片:
- 答:这台机器有5个总量子位,量子体积32。量子体积只是一个相对指标”多么强大“量子计算机;我们将稍后进入特定的细节。
- b这张截图的时候,它已经在其15个工作队列。你可能想要比较队列为每台机器上选择一个运行时如果你不想等得太久之间提交一份工作并得到结果。
- c .这台机器本身支持把CNOT (CX),身份(ID),任意相移/ Z旋转(RZ),\ \√{X} \)(SX)和X盖茨。
- SX门口绕x轴旋转90°量子位的布洛赫球体。
- 一些你习惯的从这个列表(尤其是H)失踪。幸运的是,Qiskit编译器会自动转换电路中的任何盖茨在这个本地门集合,所以你不需要担心这样做手工翻译。每台机器支持一组通用的门,所以任何量子门可以表示成一个序列的本机盖茨。
- d .这些都是错误这台机器的统计数据。稍后我们将讨论错误。
- e .这是拓扑地图的机器。它显示了量子比特所连接的其他量子位。请注意,一些量子位不能直接与他人互动!例如,如果你想做一个把CNOT量子位0作为控制和量子位4作为目标,这些量子位的不能直接交互。你必须
交换(0,1)
,交换(1、2)
,交换(2、3)
然后做残雪(3、4)
为实现这一目标(一群紧随其后交换
盖茨再次把一切放回原来的顺序)。- Qiskit是编译器会自动为你做这个,但它是要知道当你构建你的电路。
好了,现在你更熟悉这台机器,让我们运行一个例子从我们的电路qiskit_reference.py
文件!
一个IBM机器上运行一个电路¶
在运行电路之前,你要保存您的IBM帐户的凭证,以便Qiskit可以使用它们。
回到你的主页。在那里你将看到一个标题为小面板你的API令牌。点击复制按钮复制您的帐户的访问密钥:
现在,在您的终端qiskit-env
加载、运行互动python
翻译。输入以下两行:
从qiskit进口IBMQIBMQ。save_account(<您的访问密钥>”)
但取代<您的访问密钥>
与复制的价值。这将节省你的关键,这样您就可以运行在IBM的计算机,而不需要粘贴在每个请求。
最后,退出解释器辞职()
。
做的,开放的qiskit_reference.py
在Visual Studio。头底部的代码,注释掉run_example_on_simulator
线,并取消run_example_on_hardware
线:
如果__name__= =“__main__ ':#评论这条线和取消注释以下行上本地运行电路模拟器# run_example_on_simulator (example_1)#取消注释这一行和评论上面的一个真正的量子机器上运行电路run_example_on_hardware(example_1)
如果你愿意,你也可以改变你的电脑上运行。被设置为使用的代码ibmq_santiago
和运行1024次迭代provider.get_backend ()
方法在run_example_on_hardware
方法:
提供者=IBMQ。load_account()后端=提供者。get_backend(“ibmq_santiago”)运行=执行(电路,后端,照片=1024年)结果=运行。结果()
随时更新这些设置来使用不同的后端,如果它有一个更短的运行队列或更多的迭代的一个更大的样本量。
保存您的更改,然后运行python qiskit_reference.py
执行程序。这将连接到IBM量子服务和电路添加到机器的队列。
去你的主页和看最近的工作面板。您应当会看到弹出一个新的工作,是这样的:
一旦你点击它,你会看到详细讯息面板:
在这里您可以监视的状态工作,估计时间,直到运行时,它的电路是什么样子,最后测量结果一旦完成运行。
注意,这个电路是更复杂的比原来的源代码,这是
电路。h(量子比特(0])电路。h(量子比特(1])电路。芝加哥气候交易所(量子比特(0),量子比特(1),量子比特(2])
这是因为Qiskit的编译器支持的每个门都分解成机器的本地门集(残雪
,ID
,RZ
,SX
,X
)和它占机器的拓扑限制(例如量子位2不能直接与量子位0)。也就是说,尽管这种电路相比,很难辨认它的源代码,它应该有相同的结果。在前面的小节中,我们测量了模拟器的输出:
测量了000 284次。测量了111 230次。测量了010 247次。测量了100 239次。
这是预期的,因为量子位0和1是在统一的叠加和有独立50%机会的状态,但量子位2是与他们纠缠,这样只有一个\ \(刃{1}\)如果两个量子位元也\ \(刃{1}\)。
一旦你的工作完成,你可以在工作中查看结果的页面或在python控制台。让我们看看真正的量子计算机的输出是什么样子:
测量了000 235次。测量了100 217次。测量了010 251次。测量110 28倍。测量001 19倍。测量101 20倍。测量011 31倍。测量了111 223次。
请注意
网站上的直方图将显示结果在低位优先的顺序,所以你得精神让他们如果你希望他们在高位优先顺序。
这是有趣的。我们的四个州应该看到有很高的(和大致相等)的输出,这是预期,但我们的四个州不应该看到似乎出现了几次。发生了什么事?
NISQ机器和量子错误¶
上面的结果是一个所谓的示范量子错误。这些错误发生的几个条件,但一些更常见的如下:
- 当门不做它应该做什么,或它主要是正确(如X门旋转179°量子位的X轴而不是满180°)
- 当环境本身干扰物理量子位(如流浪光子击中它,把它的状态)——这就是所谓的量子退相干
- 当测量门没有正确衡量一个量子位,返回错误的结果
不幸的是,今天的硬件系统开发都容易受到量子错误。为圣地亚哥
机,你可以看到其预期错误率(我们贴上详细信息页面D在截图探索一个IBM的量子计算机部分)。
正因为如此,今天通常被称为机器正在开发嘈杂的中间尺度量子(NISQ)电脑。这意味着他们非常容易受到量子“噪音”这样的(或错误),防止最后测量完全复制的理论结果。
这样的小电路,错误可以相对容易处理;因为“正确”的结果的频率远高于“不正确”的,是简单的过滤错误的。然而,因为这仅仅是有效的我们已经知道要寻找什么。
在更复杂的电路,如Grover或肖的算法,我们的地方不提前知道答案,量子错误很快占据了整个statevector和整个计算变成无用的中间的程序。这使得整个事情无法作为输出将随机噪声,它不会做任何更好的找到真正正确的答案比随机数字生成器。
今天总的来说,量子计算机的发展集中在两个主要领域:
- 设法增加更多的量子位,或增加量子位之间的连接性
- 想办法使量子比特或盖茨更有弹性,所以他们经历更少的错误
我们可以做一些聪明的操作软件帮助减少量子错误(如纠错码你探索实验室10和11)。然而,这些需要更多的量子位元比你可以访问所有的系统可以提供的例外墨尔本
机提供15个量子位。欢迎你来实现上的一些例子,并实现bit-flip代码是一种纠错结果如何变化,但注意墨尔本
机通常有一个队列的数以百计的工作,所以可能需要一些时间你可以实验。
目前,纠错编码引入更多比他们修复错误。在量子计算的一个主要里程碑的开发是一个系统足够低错误率,维修由纠错码可以克服自己的错误,从而提供一个灵活的执行平台,可以运行下去。
我们没有,但是我们越来越接近这个目标每一成就。