:code:`skerch` ================================== **Sketched linear operations for** `PyTorch `_. Consider a matrix or linear operator :math:`A \in \mathbb{C}^{M \times N}`, typically of intractable size and/or very costly measurements :math:`v \to Av`. In many cases, such large operators feature a much smaller but hidden sub-structure (such as low-rank or banded), which allows for an approximation :math:`\hat{A}` of scalable size. Typical examples of this are kernel matrices for large datasets, Hessian matrices for deep learning, large-scale datasets and the throughput of high-resolution simulations. But obtaining :math:`\hat{A}` through traditional compression methods is not feasible, since we would need to fully store or scan :math:`\hat{A}` first. Instead, we *directly obtain* :math:`\hat{A}` from just a few random :math:`y_i = A v_i` measurements, or *sketches* (i.e. :math:`v_i` follows some random distribution). Luckily, this is possible for a variety of :math:`\hat{A}` structures, and the :math:`A v_i` measurements are typically parallelizable, allowing us to work at large scales. From an operational point of view, sketched methods only require the ability to draw a few matrix-vector measurements in the form :math:`Av, vA`. In Python, and for finite dimensions, this means providing an ``A.shape`` attribute and implementing the *matrix-multiplication* ``@`` operation. One core advantage of ``skerch`` is that this is the *only* requirement that :math:`A` needs to fulfill (unlike other libraries which require ``A`` to implement more attributes and/or operations). In code, we just need to ensure that ``A`` satisfies the following interface: .. code-block:: python class MyLinOp: def __init__(self, shape): self.shape = shape def __matmul__(self, x): return "... implement A @ x ..." def __rmatmul__(self, x): return "... implement x @ A ..." Any operator implementing this interface will run on ``skerch`` routines such as diagonalizations, operator norms and triangular approximations. Other advantages of ``skerch``: * Built on top of PyTorch, naturally supports CPU and CUDA, as well as complex datatypes. Very few dependencies otherwise * Rich API for matrix-free linear operators, including matrix-free noise sources (Rademacher, Gaussian, SSRFT...) * Efficient parallelized and distributed computations * Support for out-of-core operations via HDF5 * A-posteriori verification tools to test accuracy of sketched approximations modular and extendible design, for easy adaption to new settings and operations * Modular and extendible design See the API docs and examples for illustrations of the above points. .. seealso:: * `[HMT2009] `_: Nathan Halko, Per-Gunnar Martinsson, Joel A. Tropp. 2011. *“Finding Structure with Randomness: Probabilistic Algorithms for Constructing Approximate Matrix Decompositions”*. SIAM Review, 53 (2): 217-288. * `[BWZ2016] `_: Christos Boutsidis, David P. Woodruff, and Peilin Zhong. 2016. *“Optimal Principal Component Analysis in Distributed and Streaming Models”*. ACM Symposium on Theory of Computing. * `[TYUC2018] `_: Joel A. Tropp, Alp Yurtsever, Madeleine Udell, Volkan Cevher. 2018. *“Practical Sketching Algorithms for Low-Rank Matrix Approximation”*. SIAM Journal on Matrix Analysis and Applications 38 (4). * `[TYUC2019] `_: Joel A. Tropp, Alp Yurtsever, Madeleine Udell, Volkan Cevher. 2019. *“Streaming Low-rank Matrix Approximation with an Application to Scientific Simulation”*. SIAM Journal on Scientific Computing 41 (4): A2430–63. * `[BN2022] `_: Robert A. Baston, Yuji Nakatsukasa. 2022. *“Stochastic diagonal estimation: probabilistic bounds and an improved algorithm”*. CoRR abs/2201.10684. * `[ETW2024] `_: Ethan N. Epperly, Joel A. Tropp, Robert J. Webber. 2024. *“XTrace: Making the most of every sample in stochastic trace estimation”*. SIAM Journal on Matrix Analysis and Applications. * `[FSMH2025] `_ Andres Fernandez, Frank Schneider, Maren Mahsereci, Philipp Hennig. 2025. *“Connecting Parameter Magnitudes and Hessian Eigenspaces at Scale using Sketched Methods”*. Transactions on Machine Learning Research. * `[DEOFTK2025] `_ Felix Dangel, Runa Eschenhagen, Weronika Ormaniec, Andres Fernandez, Lukas Tatzel, Agustinus Kristiadi. 2025. *“Position: Curvature Matrices Should Be Democratized via Linear Operators”*. arXiv 2501.19183. .. toctree:: :maxdepth: 2 :caption: Getting Started getting_started .. toctree:: :maxdepth: 2 :caption: Examples examples/index .. toctree:: :maxdepth: 2 :caption: API skerch .. toctree:: :maxdepth: 2 :caption: For Developers for_developers .. .. toctree:: :maxdepth: 2 :caption: Indices modindex genindex