Greetings! First time poster, here and a relative newcomer to PyTorch (but already loving it!). I am Aart Bik, and I am the tech lead of the MLIR Sparsifier team at Google. You can find more details about this team following the link, but in a nutshell, we think that sparsity should be a property, viz a type, and not a tedious implementation concern, and that a “sparse compiler”, aka sparsifier, should deal with all low level details of exploiting sparsity. These ideas have been fully worked out in MLIR for a CPU pipeline, with some GPU acceleration ramping up as well.
As such, we are very interested connecting a machine learning “front end” with our MLIR sparsifier “backend” (please forgive the very broad way of using those terms), and torch.sparse seems to fit our philosophy quite well, keeping the operator semantics (more or less) separate from the actual sparsity of their operands.
We have started to explore whether we can connect the torch.sparse data types with the MLIR sparse tensor types (the latter providing a superset of the former, since we use a TACO-flavored way of defining sparse tensor types). For this, torch-mlir seems to make the most sense for us.
One of the tasks that probably requires minor changes inside the PyTorch framework itself is propagating the sparsity layout metadata somehow a bit further than currently seems to be the case, so that we can further propagate the layout while building the tensor IR in the torch dialect tensors of torch-mlir.
In any case, I just wanted to introduce myself and put this project on your radar screen. Please expect a lot of questions to follow. Also, your initial ideas are of course welcome already as well!
Nice “emeeting” you all!