IBM Quantum Experience使用体验

IBM在17年开放了量子计算云平台(IBM Quantum Experience),允许用户通过网络使用IBM的量子计算机。IBM Q普通账号是免费的。本文简单介绍使用python来操作IBM的量子计算机,并运行一个测试代码。 

本文假定读者对量子计算有一定了解。如果你是新手,可以先看IBMQ Beginners Guide, 如果你非常感兴趣,可以看

《Quantum Computation and Quantum Information》, Michael A.Nielsen and Isaac L.Chuang. 

1.平台上的机器

IBM Quantum Experience网址,现在平台上有5个量子计算机。

 

机器 qubit数目 开放人群
ibmqx2 5 all users
ibmqx4 5 all users
ibmqx5 16 all users
QS1_1 20 hubs, partners, IBM Q members 
ibmq_20_tokyo 20 hubs, partners, IBM Q members 
ibmq_qasm_simulator 经典计算机模拟 all users

由于机器的物理结构,对CNOT的使用有一定的限制,详见Devices

2. qiskit安装和使用

使用python库qiskit来操纵以上量子计算机。参考自qiskit tutorialInstallationQiskit Documentation

个人认为比较重要的信息CircuitOperation

1.安装

pip install qiskit

注:他们更新得很频繁,qiskit需要及时更新,并且注意看文档。可能会出现几周前能运行的代码,今天就报错了。更新使用

pip install --upgrade qiskit

2.代码样例

参考自Example。首先建两个文件

Qconfig.py里写个人信息。APItoken在IBMQ注册后,点击右上角用户名,再点击My account,里面的advanced---APItoken,点generate即可。‘hub’, 'group', 'project'只有使用20-qubit的两个机器,并且有相应权限时才需要填。

# Before you can use the jobs API, you need to set up an access token.
# Log in to the Quantum Experience. Under "Account", generate a personal 
# access token. Replace 'PUT_YOUR_API_TOKEN_HERE' below with the quoted
# token string. Uncomment the APItoken variable, and you will be ready to go.

APItoken = 'xxx'

config = {
    'url': 'https://quantumexperience.ng.bluemix.net/api',

    # If you have access to IBM Q features, you also need to fill the "hub",
    # "group", and "project" details. Replace "None" on the lines below
    # with your details from Quantum Experience, quoting the strings, for
    # example: 'hub': 'my_hub'
    # You will also need to update the 'url' above, pointing it to your custom
    # URL for IBM Q.
    'hub': None,
    'group': None,
    'project': None
}

if 'APItoken' not in locals():
    raise Exception('Please set up your access token. See Qconfig.py.')

IBMQ_example.py里代码作用是,使用5-qubit的'ibmqx4'。在第一个qubit上使用Hadamard门,再在第一,二个比特上使用CNOT门,最后测量两个比特,输出结果。

from qiskit import ClassicalRegister, QuantumRegister
from qiskit import QuantumCircuit, execute
from qiskit.tools.visualization import plot_histogram


qr=QuantumRegister(2) #创建两个量子寄存器和两个经典寄存器
cr=ClassicalRegister(2)
qc=QuantumCircuit(qr,cr) #创建量子电路

qc.h(qr[0]) #在第一个量子比特上使用Hadamard门
qc.cx(qr[0],qr[1]) #第一个qubit为control,第二个qubit为target,使用CNOT门

qc.measure(qr[0],cr[0])

import Qconfig
qx_config={'APItoken':Qconfig.APItoken, 'url':Qconfig.config['url']}
from qiskit import register, available_backends, get_backend

register(qx_config['APItoken'],qx_config['url'])
shots_sim = 100 #实验执行100次

backend = 'ibmqx4' #选择机器
job_sim = execute(qc, backend, shots=shots_sim)
stats_sim = job_sim.result().get_counts() 

返回的结果是,意思是100次实验中有48次测得“11”,有52次测得“00”。

3. Tips

1. Classical register的个数需和quantum register个数一致,否则会报错。

2.  Keep in mind the coherence time of qubits 。使用过深的量子电路可能会报错“timeout”。

3. 使用量子计算机需要排队,运行时需要等会儿。另外,使用维修状态的机器会报错。机器状态见Devices

4. 使用量子计算机会消耗积分,积分不够会报错。普通用户积分上限是20,研究者用户是150。Researcher申请链接

    测试的时候可以选择backend = 'ibmq_qasm_simulator'。

4.后记

本文只是个测试。希望能用IBMQ设计更有趣的实验。最近看了篇有趣的论文,希望有空能实现~O(∩_∩)O~~

 

 

 

 

 

 

 

 

 


,是20-qubit

 

 

 

展开阅读全文

没有更多推荐了,返回首页