Skip to main content

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

  1. "cut" a quantum circuit into subcircuits, called fragments,
  2. run the fragments (and minor variants thereof) on quantum hardware, and then
  3. 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 in circuit_ansatz.py and cutting_methods.py. By default, running this file will build a clustered random unitary circuit, and compute the fidelity of estimating this circuit's output using
    1. full circuit execution,
    2. the original circuit cutting method (also on the arXiv), and
    3. the method from our paper, maximum likelihood fragment tomography.
  • collect_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 in compute_fidelities.py. This script collects all simulation data for our paper.
  • plot_data.py: this script plots the data collected by collect_data.py to make the simulation figures in our paper.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

QSPLIT_MLFT-0.0.1-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

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

Hashes for QSPLIT_MLFT-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bfdf89cb2f5b7f0dcea7c836d10d59a6de60f30c0c7b1e906020ef652fd49443
MD5 ed49f33b5af604b957bb4dbc15991d43
BLAKE2b-256 9a2a7f081a1c552e4741dd4bb9179bace23abbc9d5e9c2efe17e47b201bda86b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page