torch-mlir/frontends/pytorch/csrc/builder
Sean Silva d66e8fe1f8 Get simple quantized model importing.
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.
2021-05-20 11:28:20 -07:00
..
acap_dispatch.cpp Significantly restructure torch/aten import design. 2021-05-19 13:37:39 -07:00
acap_dispatch.h Significantly restructure torch/aten import design. 2021-05-19 13:37:39 -07:00
class_annotator.cpp [cleanup] Put the root class type for exportPath first. 2021-04-01 18:40:03 -07:00
class_annotator.h [cleanup] Put the root class type for exportPath first. 2021-04-01 18:40:03 -07:00
debug.cpp Delete old PyTorch 1.3 type dispatch oriented code paths. 2020-11-12 22:27:05 -08:00
debug.h Delete old PyTorch 1.3 type dispatch oriented code paths. 2020-11-12 22:27:05 -08:00
func_builder.cpp Significantly restructure torch/aten import design. 2021-05-19 13:37:39 -07:00
func_builder.h Significantly restructure torch/aten import design. 2021-05-19 13:37:39 -07:00
function_importer.cpp Bump llvm-project to 6d263b6f1c97fe6c45c75443e7daf6cd0c1c4222 2021-05-10 18:06:15 -07:00
function_importer.h Basic infra for annotate shapes and dtypes on arguments. 2021-04-01 18:40:03 -07:00
ivalue_importer.cpp Get simple quantized model importing. 2021-05-20 11:28:20 -07:00
ivalue_importer.h Add ability to annotate TorchScript classes. 2021-02-25 11:28:34 -08:00
mlir_utils.h Significantly restructure torch/aten import design. 2021-05-19 13:37:39 -07:00
module_builder.cpp Improve diagnostic handler 2021-05-20 11:28:20 -07:00
module_builder.h Add ability to annotate TorchScript classes. 2021-02-25 11:28:34 -08:00
node_importer.cpp Significantly restructure torch/aten import design. 2021-05-19 13:37:39 -07:00
node_importer.h Properly model "derefinement". 2021-03-03 15:09:44 -08:00
op_builder.cpp Add prim::Print and fix prim::CallMethod 2021-02-10 15:15:56 -08:00
op_builder.h Add prim::Print and fix prim::CallMethod 2021-02-10 15:15:56 -08:00
python_bindings.cpp Add recognition/folder/lowering for aten::__is__, aten::ne.int, and aten::dim 2021-04-30 10:57:02 -07:00
torch_to_mlir_utils.cpp Get simple quantized model importing. 2021-05-20 11:28:20 -07:00
torch_to_mlir_utils.h Significantly restructure torch/aten import design. 2021-05-19 13:37:39 -07:00