From 8f887f4893f4b5eb847cd100a870a5fc970dc832 Mon Sep 17 00:00:00 2001
From: zmr
Date: Wed, 25 Sep 2024 11:12:27 +0900
Subject: [PATCH] Updated README to reflect new sym_qsp methods/use-cases.
---
README.md | 60 ++++++++++-----------
docs/ex_amplitude_amplifcation_sym_qsp.png | Bin 0 -> 51555 bytes
docs/ex_min_example_cosine.png | Bin 0 -> 65036 bytes
docs/ex_poly_thresh_sym_qsp.png | Bin 0 -> 54460 bytes
docs/ex_qsp_symbolic_fit.png | Bin 0 -> 59089 bytes
pyqsp/main.py | 1 +
6 files changed, 31 insertions(+), 30 deletions(-)
create mode 100644 docs/ex_amplitude_amplifcation_sym_qsp.png
create mode 100644 docs/ex_min_example_cosine.png
create mode 100644 docs/ex_poly_thresh_sym_qsp.png
create mode 100644 docs/ex_qsp_symbolic_fit.png
diff --git a/README.md b/README.md
index b8c04841..1d2c7176 100644
--- a/README.md
+++ b/README.md
@@ -13,8 +13,7 @@ In their most basic forms, QSP/QSVT give a recipe for a desired spectral transfo
- Having computed a good polynomial approximation, and checking that it obeys certain mild conditions, use one among many efficient *classical* algorithms to compute the sequence of single-qubit rotations (the *QSP phases*) interspersing applications of the controlled unitary (the *QSP signal*) corresponding to the polynomial approximation.
- Run the corresponding sequence of gates as a quantum circuit, interleaving QSP signals and phases, followed by a measurement in a chosen basis.
-> [!NOTE]
-> The theory of QSP is not only under active development, but comprises multiple subtly different conventions, each of which can use different terminology compared the barebones outline given here. These included conventions for how the *signal* is encoded, how the *phases* are applied, the basis to measure in, whether one desires to transform eigenvalues or singular values, whether the classical algorithm to find these phases is exact or iterative, and so on.
+> :round_pushpin: The theory of QSP is not only under active development, but comprises multiple subtly different conventions, each of which can use different terminology compared the barebones outline given here. These included conventions for how the *signal* is encoded, how the *phases* are applied, the basis to measure in, whether one desires to transform eigenvalues or singular values, whether the classical algorithm to find these phases is exact or iterative, and so on.
>
> Regardless, the basic scheme of QSP and QSVT is relatively fixed: given a specific circuit ansatz and a theory for the polynomial transformations achievable for that ansatz, generate those conditions and algorithms relating the *achieved function* and *circuit parameterization*. Understanding the bidirectional map between phases and polynomial transforms, as well as the efficiency of loading linear systems into quantum processes, constitutes most of the theory of these algorithms.
@@ -23,8 +22,7 @@ This package provides such conditions and algorithms, and automatically treats a
- :sparkles: The `tf` method employs TensorFlow + Keras, and finds QSP phase angles using straightforward (but sometimes slow) optimization techniques.
- :key: The `sym_qsp` method employs an iterative, quasi-Newton method to find QSP phases for a special, lightly-restricted sub-class of QSP protocols whose phases are symmetric. In comparison with the above two techniques, this method is almost invariably quick, numerically stable, and should suit most applications. It is based off work in [Efficient phase-factor evaluation in quantum signal processing](https://arxiv.org/abs/2002.11649), and Matlab implementations in the [QSPPACK repository](https://github.com/qsppack/QSPPACK). See the affiliated `CITATION` file for a full list of references.
-> [!WARNING]
-> As methods for numerically handling QSP protocols have been refined, we have tried to update this repository to reflect leading methods. Along the way, we have also had to lightly deprecate older methods (which may still be in use by others who use this repository). In the sections that follow, we try to give special attention to where a new user might begin to use this repository in the most frictionless way.
+> :warning: As methods for numerically handling QSP protocols have been refined, we have tried to update this repository to reflect leading methods. Along the way, we have also had to lightly deprecate older methods (which may still be in use by others who use this repository). In the sections that follow, we try to give special attention to where a new user might begin to use this repository in the most frictionless way.
***
@@ -56,8 +54,7 @@ where $P$ and $Q$ are polynomials of degree $n$ and $n-1$ respectively, with def
As stated, this package can generate QSP phases in both conventions. The impediment to immediately freely working between both conventions is that if one wants a certain polynomial $P_x(a) = \langle 0|U_x|0\rangle$ in the $W_x$ convention, one cannot just use the phases generated for this polynomial in the $W_z$ convention. Instead, first the $Q_x(a)$ corresponding to $P_x(a)$ is needed to complete the full $U_x$. From this one can compute $P_z(a) = \langle 0|U_z|0\rangle = P_x(a) + Q_x(a)$. Computing the QSP phases for *this* $P_z(a)$ in the $W_z$ convention yields the desired QSP phases for $P_x(a)$ in the $W_x$ convention.
-> [!WARNING]
-> In addition to specifying the signal unitary and the signal processing phase rotations, the implicit measurement basis must also be specified. In this codebase the default basis is $|\pm\rangle$ (i.e., the $X$ Pauli's eigenbasis), though the code also allows for the computational basis (e.g., when using `tf` optimization method to generate the phase angles). For information on this, see the `--measurement` option below.
+> :warning: In addition to specifying the signal unitary and the signal processing phase rotations, the implicit measurement basis must also be specified. In this codebase the default basis is $|\pm\rangle$ (i.e., the $X$ Pauli's eigenbasis), though the code also allows for the computational basis (e.g., when using `tf` optimization method to generate the phase angles). For information on this, see the `--measurement` option below.
The guiding principle to take away from the discussion above is the following: the choice of circuit convention can change the conditions required of the achieved polynomial transforms (e.g., their parity, degree, boundary conditions, etc.). That said, the *classical* subroutines used to find good polynomial approximations remain mostly unchanged, and for most applications the restrictions on achieved functions are not crucial for performance.
@@ -121,7 +118,9 @@ response.PlotQSPResponse(
The method specified above works well up to above `polydeg=100`, and is limited mainly by the out-of-the-box method `numpy` uses to compute Chebyshev interpolants. If the `Chebyshev` object fed into `QuantumSignalProcessingPhases` has had its coefficients computed some other way (e.g., analytically as in the approximation of the inverse function), this method can work well into the thousands of phases.
-
+
+
+
### A mélange of methods for phase finding and plotting
@@ -149,41 +148,43 @@ This was generated by running `pyqsp --plot --tolerance=0.01 --seqargs 3 invert`
The sign function is also often useful to implement, e.g. for oblivious amplitude amplification. Running instead
```python
-pyqsp --plot-positive-only --plot --polyargs=19,10 --plot-real-only --polyname poly_sign poly
+pyqsp --plot --seqargs=19,10 --method sym_qsp poly_sign
```
-yields QSP phases for a degree `19` polynomial approximation, using the error function applied to `kappa * a`, where `kappa` is `10`. This also gives a plotted response function:
+yields QSP phases for a degree `19` polynomial approximation, using the error function applied to `kappa * a`, where `kappa` is `10`. This method also uses the `sym_qsp` method, which is more numerically stable and faster than the default `laurent` method. This also gives a plotted response function:
-
+
A threshold function further generalizes on the sign function, e.g., as used in distinguishing eigenvalues or singular values through windowing. Running
```python
-pyqsp --plot-real-only --plot --polyargs=20,20 --polyname poly_thresh poly
+pyqsp --plot --seqargs=20,20 --method sym_qsp poly_thresh
```
yields QSP phases for a degree `20` polynomial approximation, using two error functions applied to `kappa * 20`, with a plotted response function:
-
+
-In addition to approximations to piecewise continuous functions, the smooth trigonometric functions sine and cosine functions also often appear, e.g., in Hamiltonian simulation. Running:
+In addition to approximations to piecewise continuous functions, the smooth trigonometric functions sine and cosine functions also often appear, e.g., in Hamiltonian simulation. Running the following:
```python
-pyqsp --plot --func "np.cos(3*x)" --polydeg 6 --plot-qsp-model polyfunc
+pyqsp --plot --func "np.cos(3*x)" --polydeg 6 sym_qsp_func
```
produces QSP phases for a degree `6` polynomial approximation of `cos(3*x)`, with the plotted response function:
-
+
-This last example also shows how an arbitrary function can be specified (using a `numpy` expression) as a string, and fit using an arbitrary order polynomial (may need to be even or odd, to match the function), using optimization via tensorflow, and a keras model. The example also shows an alternative style of plot, produced using the `--plot-qsp-model` flag.
+This last example also shows how an arbitrary function can be specified (using a `numpy` expression) as a string, and fit using an arbitrary order polynomial (with parity automatically detected, and the fit rejected in the case of indefinite parity), using optimization internal to `numpy`.
-> :construction: The above examples are all run using either the `laurent` or `tf` methods as introduced earlier. Recent additions to the codebase (as of `09/01/2024`) have allowed a third method, `sym_qsp` to be used, which also comprises new classical approximation subroutines, which search for the best Chebyshev expansion matching a desired piecewise continuous function at the *Chebyshev points* of a given order. A special section will be devoted to discussing best practices for this method, which generally outperforms the first two.
+> :construction: The above examples are all run using the `laurent` method introduced earlier.[^3] Recent additions to the codebase (as of `09/01/2024`) have allowed a third method, `sym_qsp` to be specified, as in the [previous full example](#a-guide-within-a-guide), which also comprises new classical approximation subroutines that search for the best Chebyshev expansion matching a desired piecewise continuous function at the *Chebyshev nodes* of a given order. This method generally outperforms the `laurent` and `tf` methods discussed above and in the footnote referenced at the opening of this paragraph, at the cost of achieving the polynomial as only the imaginary part of a single matrix element rather than as an amplitude directly.
+
+[^3]: In earlier version of this repository, direct optimizations over QSP protocols using TensorFlow and Keras could be performed by specifying `--method tf` within the command line. While functions related to this method still work when called (e.g., the plotting option `--plot-qsp-model`), their tests have been currently silenced and the dependent packages moved from `base_requirements.txt` to `tf_requirements.txt`. Overall, while generally effective, such methods are often slower and more prone to mis-optimization than `sym_qsp`, and so for a new user we recommend the latter. For a guide of sorts to using the `tf` methods, see the deprecated test file `pyqsp/test/test_qsp_models.py`.
## An overview of codebase structure
-- `angle_sequence.py` is the main module of the algorithm.
+- `angle_sequence.py` is the main module of the algorithm, containing the omnibus method `QuantumSignalProcessingPhases` which takes a polynomial and a series of options, and returns either the `phiset`, or the `(phiset, reduced_phiset, parity)` in the case of `method=sym_qsp`.
- `LPoly.py` defines two classes `LPoly` and `LAlg`, representing Laurent polynomials and Low algebra elements respectively.
- `completion.py` describes the completion algorithm: Given a Laurent polynomial element $F(\tilde{w})$, find its counterpart $G(\tilde{w})$ such that $F(\tilde{w})+G(\tilde{w})*iX$ is a unitary element.
- `decomposition.py` describes the halving algorithm: Given a unitary parity Low algebra element $V(\tilde{w})$, decompose it as a unique product of degree-0 rotations $\exp\{i\theta X\}$ and degree-1 monomials $w$.
@@ -192,11 +193,13 @@ This last example also shows how an arbitrary function can be specified (using a
- `poly.py` provides some utility polynomials, namely the approximation of 1/a using a linear combination of Chebyshev polynomials
- `main.py` is the main entry point for command line usage
- `qsp_model` is the submodule providing generation of QSP phase angles using tensorflow + keras
+- `sym_qsp_opt` contains the optimization methods used for optimizing over symmetric QSP objects, which are also defined and handled in this module.
-> :construction: Recent additions to this codebase exist in the same folder as the above main `*.py` files, named `sym_qsp_opt.py` and the currently exploratory `sym_qsp_plotting.py`, as well as tests for these new files in `test/test_sym_qsp_optimization.py` which is automatically run with the other tests, and might serve as a good best-practices read-through for the curious. The Chebyshev interpolation methods mentioned above have been added as internal arguments throughout `poly.py` using the `chebyshev_basis` (Boolean) flag and `cheb_samples` (positive integer) argument.
+> :construction: Recent additions to this codebase exist in the same folder as the above main `*.py` files, i.e., the abovementioned `sym_qsp_opt.py` and the currently exploratory `sym_qsp_plotting.py` and `sym_qsp_phase_gen.py`, as well as tests for these new files in `test/test_sym_qsp_optimization.py` which is automatically run with the other tests, and might serve as a good best-practices read-through for the curious. An executable full example as referenced in []() is also given in `sym_qsp_min_example.py`.
+>
+> The Chebyshev interpolation methods mentioned above have been added as internal arguments throughout `poly.py` using the `chebyshev_basis` (Boolean) flag and `cheb_samples` (positive integer) argument. When calling `sym_qsp` methods from the command line, these flags and arguments are automatically set.
-> [!WARNING]
-> The code is structured such that TensorFlow is not imported by default, as its dependencies, size, and overall use have become cumbersome for most applications. If `qsp_model` and its derived methods are used, then TensorFlow is required. Currently tests for this module have also been silenced, and TensorFlow dependent functionality is not being actively maintained.
+> :warning: The code is structured such that *TensorFlow* is not imported by default, as its dependencies, size, and overall use have become cumbersome for most applications. If `qsp_model` and its derived methods are used, then TensorFlow is required. Currently tests for this module have also been silenced, and *TensorFlow* dependent functionality is not being actively maintained, though has not been disabled.
## Package requirements
@@ -204,9 +207,9 @@ This package can be run entirely without TensorFlow if the `qsp_model` code is n
## Unit tests
-A series of unit tests is also provided. These can be run using `python setup.py test`.
+A series of unit tests is also provided. These can be run using `pytest pyqsp/test/`.
-As the `qsp_model` code depends on having TensorFlow installed, the unit tests for this code take a while; as such they are turned off by default. To enable unit tests for this code, un-comment the corresponding file `test/test_qsp_models.py` after running `export PYQSP_TEST_QSP_MODELS=1`. The `qsp_model` code unit tests can be run by themselves, after un-commenting the file, using `python setup.py test -s pyqsp.test.test_qsp_models`.
+> :warning: As the `qsp_model` code depends on having TensorFlow installed, the unit tests for this code take a while; as such they are turned off by default. To enable unit tests for this code, un-comment the corresponding file `test/test_qsp_models.py` after running `export PYQSP_TEST_QSP_MODELS=1`. The `qsp_model` code unit tests can be run by themselves, after un-commenting the file, using `python setup.py test -s pyqsp.test.test_qsp_models`.
## Programmatic usage
@@ -243,7 +246,7 @@ We can also plot the response given by a given QSP angle sequence, e.g. using:
pyqsp.response.PlotQSPResponse(ang_seq, target=poly, signal_operator="Wx")
```
-### Computing QSP phases faster with the `sym_qsp` method
+### Computing QSP phases even faster with the `sym_qsp` method
In the same paradigm as the above `laurent` and `tf` methods, we have also introduced the iterative phase finding algorithm discussed earlier under the `sym_qsp` method. Using this method is compatible with the original `QuantumSignalProcessingPhases` method by passing the name of the method, and setting `chebyshev_basis=True`.
@@ -254,8 +257,7 @@ from pyqsp.angle_sequence import QuantumSignalProcessingPhases
Note that here, unlike in the standard case, we return the full phases (analogous to `ang_seq` in the above examples), the reduced phases as used in the original reference [Efficient phase-factor evaluation in quantum signal processing](https://arxiv.org/abs/2002.11649), and the polynomial parity. When using the `sym_qsp_func` option in the command line, just the full phases are returned.
-> [!WARNING]
-> Throughout the codebase, there are multiple conventions in which polynomials can be represented; (1) polynomials in the standard basis, (2) polynomials in the Chebyshev basis, and (3) Laurent polynomials in the standard basis.
+> :warning: Throughout the codebase, there are multiple conventions in which polynomials can be represented; (1) polynomials in the standard basis, (2) polynomials in the Chebyshev basis, and (3) Laurent polynomials in the standard basis.
>
> The `numpy` package can natively handle polynomials in the standard basis and Chebyshev basis through the `numpy.polynomial.polynomial` and `numpy.polynomial.chebyshev` packages, which can also be cast to one another with standard methods, e.g.,
> ```python
@@ -294,8 +296,7 @@ Other benefits of the `sym_qsp` method appear when we approximate a scaled versi
-> [!NOTE]
-> Previously the computation of QSP phases to approximate 1/x was limited by two factors: (1) the instability of direct polynomial completion methods in the `laurent` approach, and (2) integer overflow errors resulting from computing coefficients of the analytic polynomial approximation in a naïve way. The plot above has been generated in a way which avoids both issues, and its degree can be easily pushed into the hundreds. The plot above uses `d = 155`.
+> :round_pushpin: Previously the computation of QSP phases to approximate 1/x was limited by two factors: (1) the instability of direct polynomial completion methods in the `laurent` approach, and (2) integer overflow errors resulting from computing coefficients of the analytic polynomial approximation in a naïve way. The plot above has been generated in a way which avoids both issues, and its degree can be easily pushed into the hundreds. The plot above uses `d = 155`.
Finally, we can move away from functions for which we have analytic descriptions of their Chebyshev expansions to general piecewise continuous functions for which we numerically compute Chebyshev interpolants. One such example is the step function, plotted analogously below.
@@ -305,8 +306,7 @@ Finally, we can move away from functions for which we have analytic descriptions
As in the case of trigonometric cosine and inverse, the step function's approximation is also excellent within the specified region, and far more forgiving in its generation than with the earlier `laurent` method.
-> [!NOTE]
-> The final plot given above is generated in a fairly simple way, but relies on a few, user-programmable inputs which we discuss with a subsection of the code given in `pyqsp/sym_qsp_plotting.py` below. The code given here is prefaced in the original file by proper imports, and the QSP phases generated by the Newton solver are used to generate the plots with further methods.
+> :round_pushpin: The final plot given above is generated in a fairly simple way, but relies on a few, user-programmable inputs which we discuss with a subsection of the code given in `pyqsp/sym_qsp_plotting.py` below. The code given here is prefaced in the original file by proper imports, and the QSP phases generated by the Newton solver are used to generate the plots with further methods.
>
> :warning: Note that the arguments `chebyshev_basis` (a Boolean) and `cheb_samples` are both used here. The `chebyshev_basis` flag ensures that the behind-the-scenes optimization methods used in finding polynomial approximations work in the more stable Chebyshev basis, and that Chebyshev basis coefficients are returned. The `cheb_samples` argument chooses the number of Chebyshev node interpolation points with which this classical fit is computed; to prevent aliasing issues *it is best to choose `cheb_samples` to be greater than `degree`, which specifies the degree of the polynomial approximant*. Here `delta` scales as the approximate inverse gap between the regions where the desired function takes the extreme values 1 and -1.
diff --git a/docs/ex_amplitude_amplifcation_sym_qsp.png b/docs/ex_amplitude_amplifcation_sym_qsp.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca3ac6ee53c15ae915ef3e2498f88c866d26ea17
GIT binary patch
literal 51555
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%0D4+`cw7Q;&C8~$xqTf(2ZTxv%?{Ae3!^tYWj#Wn
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