mirror of https://github.com/llvm/torch-mlir
d66e8fe1f8
This is enough to import the program and get it through the compilation pipeline. It of course fails at the VerifyBackendContract pass since there is a lot missing, but the final IR for a simple quantized MLP is looking pretty decent already: [IR](https://gist.github.com/silvasean/f76bccd76e9b193d396cfb2f9a11f54d) Main changes: - Add support for importing torch quantized tensors, including `torch.per_tensor_affine.create` op and `!torch.qint8` element type. - Add support for importing `LinearPackedParamsBase` (basically a weight + optional bias, but requires `torch.linear_params.create` op + `!torch.LinearParams` type to model it). This was less painful than I expected, as it has the necessary methods to opaquely unpack itself. I factored things so it should be easy to extend to other custom classes like `ConvPackedParamsBase`. - Add minimal boilerplate for importing `quantized::*` ops, with `quantized::linear` being a motivating example. - Add e2e test with simple quantized MLP (courtesy of @phoenix-meadowlark). This is somewhat of an abuse of `!numpy.ndarray` / `tensor`, as really the proper semantics of `!torch.qint8` dtype on a Torch tensor is "check the quantizer object of the tensor for side data (scale/offset, possibly per-channel) that defines the full semantics of the tensor". We don't have any such notion of "side data" for `!numpy.ndarray` / `tensor`, let alone anything that would have the associated behavior of keying off the dtype to determine if the side data is present. This will be fixed by a proper `!torch.tensor` type. |
||
---|---|---|
.. | ||
acap_dispatch.cpp | ||
acap_dispatch.h | ||
class_annotator.cpp | ||
class_annotator.h | ||
debug.cpp | ||
debug.h | ||
func_builder.cpp | ||
func_builder.h | ||
function_importer.cpp | ||
function_importer.h | ||
ivalue_importer.cpp | ||
ivalue_importer.h | ||
mlir_utils.h | ||
module_builder.cpp | ||
module_builder.h | ||
node_importer.cpp | ||
node_importer.h | ||
op_builder.cpp | ||
op_builder.h | ||
python_bindings.cpp | ||
torch_to_mlir_utils.cpp | ||
torch_to_mlir_utils.h |