Skip to content

Preconditioner and initial guess for backward pass in Krylov solvers #181

@gaspardbb

Description

@gaspardbb

Thanks a lot for this super nice library.

I'm using Lineax for the GMRES iterative solver, which I use with a preconditioner and a good initial guess.

    solver_out = lx.linear_solve(
        operator,
        rhs,
        lx.GRMES(...),
        options={'y0': x0, 'preconditioner': precond},
    )

I've been experiencing issues with convergence. Forward pass works fine, so I suspect issue comes from gradient computation.

My questions:

  1. I'm not 100% sure issue comes from the VJP computation since I don't know how to capture the variable of the backward pass. If you have pointers on that I'm happy to look into.
  2. Lineax is not using a preconditioner for the backward pass. Writing this issue, I realized this has been fixed in Fixes for preconditioned krylov solvers #162. Though, wouldn't x0.T be a good initial guess for the backward pass too?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions