I wouldn’t say it is a very commonly used operator in general for neural nets. But it is useful and we do want make sure we’re not making obvious mistake here.
That being said, advanced users do have access to all the “low level” functions like lu, svd, getr etc and can use the one they know fits best their use case.

So, even with added overhead to discover rank

Considering that we have both usecases, what would be the overhead here of checking the rank for people that have known non-invertible matrices?