随机基准
简介
随机基准测试(Randomized Benchmarking,RB)是量子计算中一种用于量子门性能评估的实验技术。它用于测量量子门的错误率,提供了关于量子计算系统的噪声水平和稳定性的信息。RB 是一种广泛使用的方法,用于评估量子设备的可靠性和错误率。
算法流程
在随机基准测试中,主要思想是通过对随机序列的一系列量子门操作进行测量,来评估量子门的错误率。这些随机序列的特点是它们会趋向于互相抵消,从而减少系统噪声的影响。通过比较实际测量结果和理论预期,可以估计出量子门的错误率。
实验过程如下:
生成随机序列:生成一系列随机的量子门序列,这些序列涵盖了不同的量子门操作和顺序。
实验操作:在量子设备上依次执行生成的随机序列。
测量结果:对每个随机序列,测量量子比特的状态,并记录测量结果。
1,2,3步的具体操作如下:
1,2,3步的具体操作
在Clifford群中随机需求m个门,构成一个序列; 计算该序列的等效 \(U\) 操作,该操作的逆 \(\mathrm{U}^{-1}\) 一定也在Clifford群中,将 \(\mathrm{U}^{-1}\) 添加到序列中作为第m+1个元素,构成一个完整的序列; 测量量子比特在该序列操作之后的0态(初态在0态)保真度 \(y_{mk}\) 。
分析:通过比较预期测量结果和实际测量结果,可以得出量子门的错误率。通常使用指数递减模型来分析错误率。
错误率估计:通过分析获得的数据,可以估计出不同量子门的平均错误率。
4,5步的具体操作
计算序列长度为m时的平均保真度 \(y_m=\frac{1}{K} \sum_1^K y_{m k}\) , 得到序列平均保真度y和序列长度m的关系,并用公式下面拟合:
\[\begin{aligned} y=A * p^m+B \end{aligned}\]门操作平均错误率 \(r_c\) 与拟合参数𝑝的关系:
\[\begin{aligned} r_c=(1-p) *\left(2^n-1\right) / 2^n \end{aligned}\]
随着Clifford门数量的增加,门序列的平均成功概率会下降,因为当重复应用包含错误的量子门时,整个门序列的错误概率会单调增加,在 RB 中,通常假设不同Clifford的噪声超算子相等,在此假设下,门序列的平均成功概率已被证明随Clifford门的数量呈指数衰减。
接口说明
1.单门随机基准测试: single_qubit_rb
。
- single_qubit_rb(config: QCloudTaskConfig, qubit: int, clifford_range: List[int], num_circuits: int, interleaved_gates: List[QGate] = []) Dict[int, float]
此函数用于执行单比特随机电路基准(Single Qubit Randomized Benchmarking)实验。
- 参数:
config (QCloudTaskConfig) -- QCloudTaskConfig 对象,表示云量子任务的配置。
qubit (int) -- 单比特量子比特索引。
clifford_range (List[int]) -- 包含 Clifford 门的序列长度范围的列表,用于指定不同长度的 Clifford 门序列。
num_circuits (int) -- 要执行的电路数量。
interleaved_gates (List[QGate], optional) -- 包含插入在 Clifford 门序列中的额外门的列表,默认为空列表。
- 返回:
包含单比特随机电路基准实验结果的字典,其中键是 Clifford 门序列长度,值是误差概率。
- 返回类型:
Dict[int,float]
- 抛出:
run_fail -- 执行单比特随机电路基准实验失败。
2.双门随机基准测试: double_qubit_rb
。
- double_qubit_rb(config: QCloudTaskConfig, qubit0: int, qubit1: int, clifford_range: List[int], num_circuits: int, interleaved_gates: List[QGate] = []) Dict[int, float]
此函数用于执行双比特随机电路基准(Double Qubit Randomized Benchmarking)实验。
- 参数:
config (QCloudTaskConfig) -- QCloudTaskConfig 对象,表示云量子任务的配置。
qubit0 (int) -- 双比特第一个量子比特索引。
qubit1 (int) -- 双比特第二个量子比特索引。
clifford_range (List[int]) -- 包含 Clifford 门的序列长度范围的列表,用于指定不同长度的 Clifford 门序列。
num_circuits (int) -- 要执行的电路数量。
interleaved_gates (List[QGate], optional) -- 包含插入在 Clifford 门序列中的额外门的列表,默认为空列表。
- 返回:
包含双比特随机电路基准实验结果的字典,其中键是 Clifford 门序列长度,值是误差概率。
- 返回类型:
Dict[int,float]
- 抛出:
run_fail -- 执行双比特随机电路基准实验失败。
实例
from pyqpanda import *
if __name__=="__main__":
# 设置随机线路中clifford门集数量
range = [ 5,10,15 ]
#设置用户真实apikey,需要确保有足够算力资源
online_api_key = "XXX"
#配置量子计算任务参数
config = QCloudTaskConfig()
config.cloud_token = online_api_key
config.chip_id = origin_72
config.open_amend = False
config.open_mapping = False
config.open_optimization = False
config.shots = 1000
#测量单比特随机基准
single_rb_result = single_qubit_rb(config, 0, range, 20)
#同样可以测量两比特随机基准
double_rb_result = double_qubit_rb(config, 0, 1, range, 20)
#对应的数值随设备噪声影响,噪声数值越大,所得结果越小,且随clifford门集数量增多,结果数值越小。
print(single_rb_result)
print(double_rb_result)
#运行结果:
# {5: 0.464, 10: 0.4535, 15: 0.437}
# {5: 0.1675, 10: 0.20750000000000002, 15: 0.198}
参考文献
[1] Easwar Magesan, J. M. Gambetta, and Joseph Emerson, Robust randomized benchmarking of quantum processes, https://arxiv.org/abs/1009.3639.
[2] Easwar Magesan, Jay M. Gambetta, and Joseph Emerson, Characterizing Quantum Gates via Randomized Benchmarking, https://arxiv.org/abs/1109.6887.