Divide and Compute with Maximum Likelihood Tomography
Project description
Circuit cutting with maximum likelihood fragment tomography
This repository contains the codes used for numerical experiments in this work (also on the arXiv) on circuit cutting.
In a nutshell, circuit cutting is a compiler-level quantum computing a technique for reducing the size of quantum circuits and mitigating the buildup of quantum errors. The benefits of circuit cutting come at the cost of a classical computing overhead that is exponential in the number of "cuts" that are made to a circuit. This technique is therefore best suited for circuits with a "clustered" structure that allows them to be split into subcircuits using a small number of "cuts".
The basic idea behind circuit cutting is to
- "cut" a quantum circuit into subcircuits, called fragments,
- run the fragments (and minor variants thereof) on quantum hardware, and then
- recombine fragment data via classical post-processing to reconstruct the output of the original circuit. In the present work, "output" means "probability distribution over the outcomes of measurement in the computational basis".
Our main contributions to circuit cutting are summarized in the abstract of our paper:
We introduce maximum likelihood fragment tomography (MLFT) as an improved circuit cutting technique for running "clustered" quantum circuits on quantum devices with a limited number of qubits. In addition to minimizing the classical computing overhead of circuit cutting methods, MLFT finds the most likely probability distribution for the output of a quantum circuit, given the measurement data obtained from the circuit's fragments. We demonstrate the benefits of MLFT for accurately estimating the output of a fragmented quantum circuit with numerical experiments on random unitary circuits. Finally, we show that circuit cutting can estimate the output of a clustered circuit with higher fidelity than full circuit execution, thereby motivating the use of circuit cutting as a standard tool for running clustered circuits on quantum hardware.
Contents
All codes in this repository are written in Python 3, version >=3.8.13
. Python package requirements are specified in requirements.txt
.
The contents of this repository are as follows:
circuit_ansatz.py
: this file contains a method to construct the "random clustered circuit" used in our paper, and to identify the locations at which this circuit should be cut.cutting_methods.py
: this file contains the primary methods used for (a) cutting a circuit into fragments, (b) performing maximum-likelihood fragment tomography, and (c) recombining fragment models to reconstruct the probability distribution over measurement outcomes for the full, uncut circuit.compute_fidelities.py
: this file can be considered a "demo" script for the methods incircuit_ansatz.py
andcutting_methods.py
. By default, running this file will build a clustered random unitary circuit, and compute the fidelity of estimating this circuit's output usingcollect_data.py
: this script simulates circuits with varying qubit, fragment, and shot (or repetition) numbers, and computes the fidelity with which these circuits' outputs can be estimated using the same methods as incompute_fidelities.py
. This script collects all simulation data for our paper.plot_data.py
: this script plots the data collected bycollect_data.py
to make the simulation figures in our paper.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file QSPLIT_MLFT-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: QSPLIT_MLFT-0.0.1-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfdf89cb2f5b7f0dcea7c836d10d59a6de60f30c0c7b1e906020ef652fd49443 |
|
MD5 | ed49f33b5af604b957bb4dbc15991d43 |
|
BLAKE2b-256 | 9a2a7f081a1c552e4741dd4bb9179bace23abbc9d5e9c2efe17e47b201bda86b |