{ "cells": [ { "cell_type": "markdown", "id": "281f452f", "metadata": {}, "source": [ "# Evaluation on Pauli String Sum" ] }, { "cell_type": "markdown", "id": "b5a444b8", "metadata": {}, "source": [ "## Overview" ] }, { "cell_type": "markdown", "id": "73b70145", "metadata": {}, "source": [ "We need to evaluate the sum of many Pauli string terms on the circuit in various quantum algorithms, the ground state preparation of a Hamiltonian $H$ in VQE is a typical example.\n", "We need to calculate the expectation value of Hamiltonian $H$, i.e., $\\langle 0^N \\vert U^{\\dagger}(\\theta) H U(\\theta) \\vert 0^N \\rangle$ and update the parameters $\\theta$ in $U(\\theta)$ based on gradient descent in VQE workflow. In this tutorial, we will demonstrate five arpproaches supported in ``TensorCircuit`` to calculate $\\langle H \\rangle$: \n", "\n", "1. $\\langle H \\rangle = \\sum_{i} \\langle h_{i} \\rangle$, where $h_{i}$ are the Pauli-string operators;\n", "\n", "2. Similar to 1, but we evaluate the sum of Pauli string via ``vmap``;\n", "\n", "3. $\\langle H \\rangle$ where $H$ is a sparse matrix;\n", "\n", "4. $\\langle H \\rangle$ where $H$ is a dense matrix;\n", "\n", "5. the expectation value of the Matrix Product Operator (MPO) for $H$.\n", "\n", "We consider the transverse field ising model (TFIM) as the example, which reads\n", "$\n", "H = \\sum_{i} \\sigma_{i}^{x} \\sigma_{i+1}^{x} - \\sum_{i} \\sigma_{i}^{z},\n", "$\n", "where $\\sigma_{i}^{x,z}$ are Pauli matrices of the $i$-th qubit." ] }, { "cell_type": "markdown", "id": "8cf5e5e5-cd06-47cb-831a-5ef79216df84", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 1, "id": "d47fc431", "metadata": {}, "outputs": [], "source": [ "import time\n", "from functools import partial\n", "import numpy as np\n", "import tensorflow as tf\n", "import tensornetwork as tn\n", "import optax\n", "import tensorcircuit as tc\n", "\n", "K = tc.set_backend(\"tensorflow\")\n", "\n", "xx = tc.gates._xx_matrix # xx gate matrix to be utilized" ] }, { "cell_type": "code", "execution_count": 2, "id": "95049a99", "metadata": {}, "outputs": [], "source": [ "n = 10 # The number of qubits\n", "nlayers = 4 # The number of circuit layers" ] }, { "cell_type": "markdown", "id": "8a8b70bb-a312-4934-813a-035547ca8090", "metadata": {}, "source": [ "## Parameterized Quantum Circuits" ] }, { "cell_type": "code", "execution_count": 3, "id": "087d85b4-0db9-428c-b3d9-0b2d7076db67", "metadata": {}, "outputs": [], "source": [ "# Define the ansatz circuit to evaluate the Hamiltonian expectation\n", "def tfim_circuit(param):\n", " c = tc.Circuit(n)\n", " for j in range(nlayers):\n", " for i in range(n - 1):\n", " c.exp1(i, i + 1, unitary=xx, theta=param[2 * j, i])\n", " for i in range(n):\n", " c.rz(i, theta=param[2 * j + 1, i])\n", " return c" ] }, { "cell_type": "code", "execution_count": 4, "id": "6f4fea9e", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# the circuit ansatz we utilized is shown as below, the two-qubit gate is in ladder layout\n", "tfim_circuit(K.zeros([2 * nlayers, n])).draw(output=\"mpl\")" ] }, { "cell_type": "markdown", "id": "80cc3f92-4d76-470d-b1c0-65c2736c6383", "metadata": {}, "source": [ "## Main Optimization Loop\n", "\n", "VQE train loop (value and grad function agnostic) is defined below." ] }, { "cell_type": "code", "execution_count": 5, "id": "7ae7e2f0-4a42-405c-b4bd-63f5d1ca8ef9", "metadata": {}, "outputs": [], "source": [ "# We define the universal train_step function for different approaches evaluating the Pauli string sum\n", "def train_step(vf, maxiter=400):\n", " param = K.implicit_randn(shape=[2 * nlayers, n], stddev=0.01)\n", " if K.name == \"tensorflow\":\n", " opt = K.optimizer(tf.keras.optimizers.Adam(1e-2))\n", " else: # jax\n", " opt = K.optimizer(optax.adam(1e-2))\n", " vgf = tc.backend.jit(tc.backend.value_and_grad(vf))\n", " time0 = time.time()\n", " _ = vgf(param)\n", " time1 = time.time()\n", " print(\"staging time: \", time1 - time0)\n", " times = []\n", " for i in range(maxiter):\n", " time0 = time.time()\n", " e, grad = vgf(param) # energy and gradients\n", " time1 = time.time()\n", " times.append(time1 - time0)\n", " param = opt.update(grad, param)\n", " if i % 200 == 0:\n", " print(e)\n", " print(\"running time: \", np.mean(times))\n", " return e" ] }, { "cell_type": "markdown", "id": "99343a0a", "metadata": {}, "source": [ "## 1. Pauli-string Operators Sum" ] }, { "cell_type": "code", "execution_count": 6, "id": "8e6f96a5", "metadata": {}, "outputs": [], "source": [ "# Sum the Pauli string expectation in a plain way\n", "def tfim_energy(c, j=1.0, h=-1.0):\n", " e = 0.0\n", " n = c._nqubits\n", " for i in range(n):\n", " e += h * c.expectation_ps(z=[i]) # \n", " for i in range(n - 1): # OBC\n", " e += j * c.expectation_ps(x=[i, i + 1]) # \n", " return K.real(e)" ] }, { "cell_type": "code", "execution_count": 7, "id": "c4d4895d", "metadata": {}, "outputs": [], "source": [ "def vqe_tfim_v1(param):\n", " c = tfim_circuit(param)\n", " e = tfim_energy(c)\n", " return e" ] }, { "cell_type": "code", "execution_count": 8, "id": "41de16cd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "staging time: 29.903974294662476\n", "tf.Tensor(-9.9926815, shape=(), dtype=float32)\n", "tf.Tensor(-11.69182, shape=(), dtype=float32)\n", "running time: 0.004392582178115845\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_step(vqe_tfim_v1)" ] }, { "cell_type": "markdown", "id": "c9a56564", "metadata": {}, "source": [ "## 2. Vmap the Pauli-string Operators Sum" ] }, { "cell_type": "markdown", "id": "f89a2bbc", "metadata": {}, "source": [ "A string of Pauli operators acting on $n$ qubits can be represented as a length $n$ vector $v\\in\\{0,1,2,3\\}^n$, where the value of $v_i = j$ corresponds to $\\sigma_i^j$, i.e. Pauli operator $\\sigma^j$ acting on qubit $i$ (with $\\sigma^0 = I, \\sigma^1 = X, \\sigma^2 = Y, \\sigma^3 = Z$). For example, in this notation, if $n=3$ the term $X_1 X_2$ corresponds to $v = [0,1,1]$. We refer to such a vector representation of a Pauli string as a ``structure``, and a list of structures, one for each Pauli string term in the Hamiltonian, is used as the input to compute sums of expectation values in a number of ways.\n", "\n", "If each structure has an associated weight, e.g. the term $X_i X_{i+1}$ has weight $J_i$ in TFIM Hamiltonian, then we define a corresponding tensor of weights." ] }, { "cell_type": "code", "execution_count": 9, "id": "6114befa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 1.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 1.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 1.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 1.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 1.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 1.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 1.+0.j 1.+0.j]\n", " [3.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 3.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 3.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 3.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 3.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 3.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 3.+0.j 0.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 3.+0.j 0.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 3.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 3.+0.j]]\n", "[ 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j 1.+0.j\n", " -1.+0.j -1.+0.j -1.+0.j -1.+0.j -1.+0.j -1.+0.j -1.+0.j -1.+0.j -1.+0.j\n", " -1.+0.j]\n" ] } ], "source": [ "def measurement(s, structure):\n", " c = tc.Circuit(n, inputs=s)\n", " return tc.templates.measurements.parameterized_measurements(\n", " c, structure, onehot=True\n", " )\n", "\n", "\n", "measurement = K.jit(K.vmap(measurement, vectorized_argnums=1))\n", "\n", "structures = []\n", "for i in range(n - 1):\n", " s = [0 for _ in range(n)]\n", " s[i] = 1\n", " s[i + 1] = 1\n", " structures.append(s)\n", "for i in range(n):\n", " s = [0 for _ in range(n)]\n", " s[i] = 3\n", " structures.append(s)\n", "\n", "structures = tc.array_to_tensor(structures)\n", "weights = tc.array_to_tensor(\n", " np.array([1.0 for _ in range(n - 1)] + [-1.0 for _ in range(n)])\n", ")\n", "\n", "print(K.numpy(structures))\n", "print(K.numpy(weights))\n", "\n", "\n", "def vqe_tfim_v2(param):\n", " c = tfim_circuit(param)\n", " s = c.state()\n", " ms = measurement(s, structures)\n", " return K.sum(ms * K.real(weights))" ] }, { "cell_type": "code", "execution_count": 10, "id": "e2172976", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "staging time: 18.228847980499268\n", "tf.Tensor(-9.991278, shape=(), dtype=float32)\n", "tf.Tensor(-11.868717, shape=(), dtype=float32)\n", "running time: 0.00716902494430542\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_step(vqe_tfim_v2)" ] }, { "cell_type": "markdown", "id": "0a238264", "metadata": {}, "source": [ "## 3. Sparse Matrix\n", "\n", "The significant computational advantage in terms of space and time can be obtained if the Hamiltonian is sparse, in which case a sparse representation of the operator is preferable. This can be provided in a backend agnostic way by converting from a list of Pauli structures in a two-stage process.\n", "First, we convert it to a sparse numpy matrix in COO (COOrdinate) format, and then we convert it to coo sparse tensor on\n", "a given ML backend." ] }, { "cell_type": "code", "execution_count": 11, "id": "8309189e", "metadata": {}, "outputs": [], "source": [ "def vqe_tfim_template(param, op):\n", " c = tfim_circuit(param)\n", " e = tc.templates.measurements.operator_expectation(\n", " c, op\n", " ) # in operator_expectation, the \"hamiltonian\" can be a sparse matrix, dense matrix or mpo\n", " return e" ] }, { "cell_type": "code", "execution_count": 12, "id": "af85cd9e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<1024x1024 sparse matrix of type ''\n", "\twith 9988 stored elements in COOrdinate format>" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We first generate the Hamiltonian matrix as follows\n", "\n", "hamiltonian_sparse_numpy = tc.quantum.PauliStringSum2COO_numpy(structures, weights)\n", "hamiltonian_sparse_numpy" ] }, { "cell_type": "code", "execution_count": 13, "id": "2121f02d", "metadata": {}, "outputs": [], "source": [ "hamiltonian_sparse = K.coo_sparse_matrix(\n", " np.transpose(\n", " np.stack([hamiltonian_sparse_numpy.row, hamiltonian_sparse_numpy.col])\n", " ),\n", " hamiltonian_sparse_numpy.data,\n", " shape=(2**n, 2**n),\n", ")" ] }, { "cell_type": "code", "execution_count": 14, "id": "400e18b5", "metadata": {}, "outputs": [], "source": [ "vqe_tfim_v3 = partial(vqe_tfim_template, op=hamiltonian_sparse)" ] }, { "cell_type": "code", "execution_count": 15, "id": "2b7ef4a9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "staging time: 13.532029867172241\n", "tf.Tensor(-9.976083, shape=(), dtype=float32)\n", "tf.Tensor(-11.907323, shape=(), dtype=float32)\n", "running time: 0.002562386989593506\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_step(vqe_tfim_v3)" ] }, { "cell_type": "markdown", "id": "646f6b84", "metadata": {}, "source": [ "## 4. Dense Matrix" ] }, { "cell_type": "code", "execution_count": 16, "id": "5c937aa8", "metadata": {}, "outputs": [], "source": [ "hamiltonian_dense = K.to_dense(hamiltonian_sparse)" ] }, { "cell_type": "code", "execution_count": 17, "id": "9fcb0e81", "metadata": {}, "outputs": [], "source": [ "vqe_tfim_v4 = partial(vqe_tfim_template, op=hamiltonian_dense)" ] }, { "cell_type": "code", "execution_count": 18, "id": "f0d1cd69", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "staging time: 15.174713850021362\n", "tf.Tensor(-9.981074, shape=(), dtype=float32)\n", "tf.Tensor(-11.836525, shape=(), dtype=float32)\n", "running time: 0.0039513856172561646\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_step(vqe_tfim_v4)" ] }, { "cell_type": "markdown", "id": "e4d9c11e", "metadata": {}, "source": [ "## 5. MPO\n", "\n", "The TFIM Hamiltonian, as a short-ranged spin Hamiltonian, admits an efficient Matrix Product Operator representation.\n", "Again this is a two-stage process using TensorCircuit. We first convert the Hamiltonian into an MPO representation via the TensorNetwork or Quimb package." ] }, { "cell_type": "code", "execution_count": 19, "id": "50b89d1f", "metadata": {}, "outputs": [], "source": [ "# generate the corresponding MPO by converting the MPO in tensornetwork package\n", "\n", "Jx = np.array([1.0 for _ in range(n - 1)]) # strength of xx interaction (OBC)\n", "Bz = np.array([1.0 for _ in range(n)]) # strength of transverse field\n", "# Note the convention for the sign of Bz\n", "hamiltonian_mpo = tn.matrixproductstates.mpo.FiniteTFI(\n", " Jx, Bz, dtype=np.complex64\n", ") # matrix product operator in TensorNetwork\n", "hamiltonian_mpo = tc.quantum.tn2qop(hamiltonian_mpo) # QuOperator in TensorCircuit" ] }, { "cell_type": "code", "execution_count": 20, "id": "923908c1", "metadata": {}, "outputs": [], "source": [ "vqe_tfim_v5 = partial(vqe_tfim_template, op=hamiltonian_mpo)" ] }, { "cell_type": "code", "execution_count": 21, "id": "e02702cf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "staging time: 26.719671964645386\n", "tf.Tensor(-9.985788, shape=(), dtype=float32)\n", "tf.Tensor(-11.857734, shape=(), dtype=float32)\n", "running time: 0.00492021381855011\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_step(vqe_tfim_v5)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.0" } }, "nbformat": 4, "nbformat_minor": 5 }