release commit
authorManu Mathew <a0393608@ti.com>
Tue, 21 Jan 2020 07:26:39 +0000 (12:56 +0530)
committerManu Mathew <a0393608@ti.com>
Tue, 21 Jan 2020 07:26:39 +0000 (12:56 +0530)
docs/Calibration.md
docs/Quantization.md

index c3aaa950a557f796a4d7fccef87275f77d29ee58..bbd339ba3aee1104691fa9335324d087e1f421ff 100644 (file)
@@ -1,6 +1,6 @@
 
-## Post Training Calibration For Quantization (not recommended now)
-Note: Although Calibration methods are described in detail here, this is not our recommended method as this does not yield the best results in some cases. There are specific scenarios where Quantization Aware is not possible (eg. to import a floating point model for embedded inference) and Calibration is mainly meant for such scenarios. However, Calibration methods are improving at a rapid pace and it is possible that Calibration methods will be good enough for all cases in the future - but for now, you can skip to the section on Quantization Aware as that is the recommended method.
+## Post Training Calibration (a.k.a. Calibration) For Quantization (this is not our recommended now)
+Note: Although Calibration methods for improving the Quantization accuracy are described in detail here, this is not our recommended method as this does not yield the best results in some cases. There are specific scenarios where Quantization Aware is not possible (eg. to import a floating point model for embedded inference) and Calibration is mainly meant for such scenarios. However, Calibration methods are improving at a rapid pace and it is possible that Calibration methods will be good enough for all cases in the future - but for now, you can go to the section on Quantization Aware Training as that is the recommended method.
 
 Post Training Calibration & Quantization can take a model trained in floating point and with a few steps convert it to a model that is friendly for quantized inference. Compared to the alternative (Trained Quantization), the advantages of this method are:
 - Calibration is fast - a typical calibration finishes in a few minutes.
@@ -36,7 +36,7 @@ As explained, the method of **Calibration does not need ground truth, loss funct
 The section briefly explains how to make use of our helper/wrapper module to do the calibration of your model. For further details, please see pytorch_jacinto_ai.engine.train_classification.py and pytorch_jacinto_ai.engine.train_pixel2pixel.py. The step by step process is as follows:
 
 ```
-from pytorch_jacinto_ai.xnn.quantize import QuantCalibrateModule
+from pytorch_jacinto_ai import xnn
 
 # create your model here:
 model = ...
@@ -44,8 +44,8 @@ model = ...
 # create a dummy input - this is required to analyze the model - fill in the input image size expected by your model.
 dummy_input = torch.rand((1,3,384,768))
 
-#wrap your model in QuantCalibrateModule. Once it is wrapped, the actual model is in model.module
-model = QuantCalibrateModule(model, dummy_input=dummy_input)
+#wrap your model in xnn.quantize.QuantCalibrateModule. Once it is wrapped, the actual model is in model.module
+model = xnn.quantize.QuantCalibrateModule(model, dummy_input=dummy_input)
 
 # load your pretrained weights here into model.module
 pretrained_data = torch.load(pretrained_path)
@@ -63,6 +63,7 @@ torch.save(model.module.state_dict(), os.path.join(save_path,'model.pth'))
 torch.onnx.export(model.module, dummy_input, os.path.join(save_path,'model.onnx'), export_params=True, verbose=False)
 
 ```
+
 Careful attention needs to be given to how the pretrained model is loaded and trained model is saved as shown in the above code snippet.
 
 Few examples of calibration are provided below. These commands are also listed in the file **run_quantization.sh** for convenience.<br>
index 41b65853e22c1cdb12f19e88a680bd934ef8969f..d138d550eb37cddbed56a0bbfc6f8045b287a27c 100644 (file)
@@ -34,7 +34,7 @@ A block diagram of Quantization Aware Training with QuantTrainModule is shown be
 #### How to use  QuantTrainModule
 In order to enable quantized training, we have developed the wrapper class pytorch_jacinto_ai.xnn.quantize.QuantTrainModule. A simple example for using this module is given in the script [examples/quantization_example.py](../examples/quantization_example.py) and calling this is demonstrated in [run_quantization_example.sh](../run_quantization_example.sh). The usage of this module can also be seen in pytorch_jacinto_ai.engine.train_classification.py and pytorch_jacinto_ai.engine.train_pixel2pixel.py. The following is a brief description of how to use this wrapper module:
 ```
-from pytorch_jacinto_ai.xnn.quantize import QuantTrainModule
+from pytorch_jacinto_ai import xnn
 
 # create your model here:
 model = ...
@@ -42,8 +42,8 @@ model = ...
 # create a dummy input - this is required to analyze the model - fill in the input image size expected by your model.
 dummy_input = torch.rand((1,3,384,768))
 
-#wrap your model in QuantTrainModule. Once it is wrapped, the actual model is in model.module
-model = QuantTrainModule(model, dummy_input=dummy_input)
+#wrap your model in xnn.quantize.QuantTrainModule. Once it is wrapped, the actual model is in model.module
+model = xnn.quantize.QuantTrainModule(model, dummy_input=dummy_input)
 
 # load your pretrained weights here into model.module
 pretrained_data = torch.load(pretrained_path)