| | --- |
| | library_name: matrixpfn |
| | tags: |
| | - preconditioner |
| | - sparse-linear-systems |
| | - graph-neural-network |
| | - pytorch |
| | --- |
| | |
| | # matrixpfn-base |
| |
|
| | GNN-based learned preconditioner for sparse linear systems. |
| |
|
| | **Version**: 20260309-0350 |
| |
|
| | ## Usage |
| |
|
| | ```python |
| | import numpy as np |
| | from scipy.io import mmread |
| | from matrixpfn import MatrixPFN |
| | |
| | pfn = MatrixPFN.from_pretrained("Csed-dev/matrixpfn-base") |
| | |
| | A = mmread("matrix.mtx") # any scipy sparse matrix |
| | b = A @ np.random.randn(A.shape[0]) |
| | |
| | result = pfn.solve(A, b) # accepts scipy sparse directly |
| | print(f"Converged: {result.converged} in {result.iterations} iterations") |
| | ``` |
| |
|
| | ## Architecture |
| |
|
| | | Parameter | Value | |
| | |-----------|-------| |
| | | Network | ContextResGCN | |
| | | Layers | 24 | |
| | | Embed | 128 | |
| | | Hidden | 512 | |
| | | Context pairs | 10 | |
| | | Parameters | 2,056,706 | |
| | | dtype | float32 | |
| |
|
| | ## Training |
| |
|
| | - **epochs**: 5000 |
| | - **best_loss**: 0.006055 |
| | - **loss_function**: l1_direct |
| | - **batch_size**: 256 |
| | - **matrices_per_epoch**: 4 |
| | - **domains**: diffusion, diffusion_advection, graph_laplacian, elasticity, stokes, sbm, spectral_stress, variable_diffusion, variable_advection, enhanced_diffusion, enhanced_advection, random_sparse, directed_power_law |
| | - **grid_sizes**: [16, 24, 32, 48] |
| | |
| | ## Benchmark |
| | |
| | | domain | grid | converged | avg_iters | avg_residual | |
| | |--------|------|-----------|-----------|--------------| |
| | | diffusion | 16x16 | 0/20 | 300.0 | 3.96e-02 | |
| | | diffusion | 24x24 | 0/20 | 300.0 | 3.40e-02 | |
| | | diffusion | 32x32 | 0/20 | 300.0 | 2.43e-02 | |
| | | diffusion | 48x48 | 0/20 | 300.0 | 3.41e-02 | |
| | | diffusion | 64x64 | 0/20 | 300.0 | 4.11e-02 | |
| | | diffusion_advection | 16x16 | 0/20 | 300.0 | 3.69e-02 | |
| | | diffusion_advection | 24x24 | 0/20 | 300.0 | 2.91e-02 | |
| | | diffusion_advection | 32x32 | 0/20 | 300.0 | 2.59e-02 | |
| | | diffusion_advection | 48x48 | 0/20 | 300.0 | 2.95e-02 | |
| | |