{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Readout Error Mitigation via Parametric Compilation\n", "\n", "This notebook walks through how to run 2Q **Max-Cut QAOA** on a noisy QVM, using _parametric compilation_ and pyQuil's `Experiment` framework. It shows how to use the framework to run a variational hybrid algorithm (VHA) with *readout symmetrization*, and then use the results of a _readout calibration_ to correct for readout error and improve algorithm results. This notebook is copied partially from the [rigetti/qcs-paper](https://github.com/rigetti/qcs-paper) repository, where it was used to produce **Figure A1** from [_A quantum-classical cloud platform optimized for variational hybrid algorithms_](https://scirate.com/arxiv/2001.04449)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from tqdm import tqdm\n", "\n", "from pyquil import get_qc, Program\n", "from pyquil.gates import CNOT, H, MEASURE, RESET, RZ\n", "from pyquil.experiment import ExperimentSetting, Experiment, correct_experiment_result\n", "from pyquil.paulis import sZ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulate Max-Cut QAOA on a Noisy QVM" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [], "source": [ "q0, q1 = (0, 1)\n", "shots = 500\n", "gammas = np.linspace(-np.pi / 2, np.pi / 2, 100)\n", "qc = get_qc(\"2q-noisy-qvm\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define Max-Cut QAOA `Experiment`" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RESET\n", "DECLARE gamma REAL[1]\n", "H 0\n", "H 1\n", "CNOT 0 1\n", "RZ(2*gamma) 1\n", "CNOT 0 1\n", "H 0\n", "H 1\n", "RZ(pi/4) 0\n", "RZ(pi/4) 1\n", "H 0\n", "H 1\n", "\n" ] } ], "source": [ "p = Program()\n", "p += RESET()\n", "gamma = p.declare(\"gamma\", \"REAL\")\n", "p += H(q0)\n", "p += H(q1)\n", "p += CNOT(q0,q1)\n", "p += RZ(2*gamma, q1)\n", "p += CNOT(q0,q1)\n", "p += H(q0)\n", "p += H(q1)\n", "p += RZ(np.pi/4, q0)\n", "p += RZ(np.pi/4, q1)\n", "p += H(q0)\n", "p += H(q1)\n", "p.wrap_in_numshots_loop(shots)\n", "print(p)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "zz_zz = ExperimentSetting(in_state=sZ(0)*sZ(1), out_operator=sZ(0)*sZ(1))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "shots: 500\n", "active reset: enabled\n", "symmetrization: -1 (exhaustive)\n", "calibration: 1 (plus_eigenstate)\n", "program:\n", " DECLARE gamma REAL[1]\n", " H 0\n", " H 1\n", " CNOT 0 1\n", " RZ(2*gamma) 1\n", " ... 2 instrs not shown ...\n", " H 1\n", " RZ(pi/4) 0\n", " RZ(pi/4) 1\n", " H 0\n", " H 1\n", "settings:\n", " 0: Z0_0 * Z0_1→(1+0j)*Z0Z1" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qaoa = Experiment(settings=[zz_zz], program=p)\n", "qaoa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Collect data using readout symmetrization" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 100/100 [00:17<00:00, 5.60it/s]\n" ] } ], "source": [ "results = []\n", "for gamma in tqdm(gammas):\n", " results.append(qc.experiment(qaoa, memory_map={\"gamma\": [gamma]}))\n", "\n", "means = np.array([result[0].expectation for result in results])\n", "stderrs = np.array([result[0].std_err for result in results])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Perform readout calibration on the $ZZ$ observable" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[ExperimentResult[Z0_0 * Z0_1→(1+0j)*Z0Z1: 0.76 +- 0.01453635624310347]]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "calibrations = qc.calibrate(qaoa)\n", "calibrations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correct for noisy readout using calibration results" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "results_corrected = []\n", "for r in results:\n", " results_corrected.append([correct_experiment_result(r[0], calibrations[0])])\n", "\n", "means_corrected = np.array([result[0].expectation for result in results_corrected])\n", "stderrs_corrected = np.array([result[0].std_err for result in results_corrected])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the simulated data" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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Qcux33jjDSorK1ulYh41apQlVDI6nYKK8UjvQ5E+Vbk71RBNXjHkFVsURAZgUw9dzJnDBvPwshWtph+K8vM5c9jgTj3ujBkzuOaaa3jhhRd45pln+NGPfsTMmTMZN24cl156KXfffTc//OEPmT59OpMmTSI/P7/V/oWFhS3/h+tb+LVFzudHbg/38WsLF9cKhUKICEuWLGnTryQORapnz54x+zQ1NXHuuedSWVnJb3/725b2sNz33HMPRx99dMxxDKOrSUUCpIwhDgfNcNIo3bGBhkVjs9ZhMxcwRaGLCfshPLh0OU2hEOUlJV0W9XDYYYdx2GGHccMNN3DKKafwwAMPMG7cOC644AK+973v8dvf/pZly5bxyCOPdLosfowYMQJV5f33329xWowmbI1ItnLnNddcw8aNG1m8eHErZaRfv37ss88+rFu3jokTJ/ruO3ToUGpqanj33XfZd999AXjllVdaKUeGYcRBUHVJrx5FUBRE8/p7kR575JbSlAWYopAGRg2o5J8bnOm/K1I4b9iwgXvvvZczzjiDyspK1q9fz/Lly7nyyisBKCsr49xzz+W6667juOOO46CDDup0mfw4+OCDueCCC5g8eTK/+tWvGDlyJFu2bOGll17igAMO4KyzzmK//fZDRHj22Wc5/fTTKSkpoVevXnGNP2PGDKZPn87zzz9PY2Mj77/v3mrC0ww333wz3/72tykrK+PUU09tcfqsqalhypQpjBkzhiFDhjBx4kSmTZtGXV0d1157LQUF9jMyjEQIdND06lE0LBrrGwVBfQ302KNLZTUsPLJbUFpayltvvcW5557LwQcfzKRJk7jgggu44YYbWvpccsklNDY2cskll6RRUvcwv+iii/j+97/PkCFDGD9+PAsXLmS//fYDoLKykptvvpkf/ehH9OvXj6uuuirusRcsWEBdXR3HH388FRUVLUs4fPLSSy9l+vTpPPTQQxx22GEce+yx3Hfffey///6AK+701FNPEQqFGDVqFBMnTuTHP/4xPXr0SP2JMLod3SkrYUHFePIPmQp5nr9ScUXrolVBUxOhRkvIlAZEfcLIujtVVVVaXV3tu+2NN95g6NChHT5GphWFevTRR7niiit47733KC0tTbc4OUeqrhsjN3Fpmq0OQpiGRWP9pyYiSbAiptE+IrJUVav8tplFIU1cN/qojFASduzY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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig_qvm = plt.figure(figsize=(8, 6))\n", "plt.errorbar(gammas, means, yerr=stderrs, color=\"#66acb4\", fmt=\"o\", label=\"symmetrized\")\n", "plt.errorbar(gammas, means_corrected, yerr=stderrs_corrected, color=\"#f8ba2b\", fmt=\"o\", label=\"corrected\")\n", "plt.title(rf\"Simulated Max-Cut QAOA: $\\langle ZZ \\rangle$ vs. $\\gamma$ ($\\beta = \\pi/8$)\", fontsize=16)\n", "plt.xlabel(r\"Ansatz Angle $\\gamma$\", fontsize=16)\n", "plt.ylabel(r\"Expectation Value $\\langle ZZ \\rangle$\", fontsize=16)\n", "plt.legend(fontsize=14)\n", "plt.ylim(-1, 1);" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 4 }