Skip to content
Snippets Groups Projects
  1. Dec 08, 2019
  2. Dec 03, 2019
  3. Dec 02, 2019
  4. Nov 28, 2019
  5. Nov 27, 2019
  6. Nov 25, 2019
    • Neta Zmora's avatar
      Resnet50 early-exit update · 8b341593
      Neta Zmora authored
      Update the definition of the exits using info from Haim.
      
      This is still very unsatsifactory because we don't have working
      examples to show users :-(
      8b341593
  7. Nov 17, 2019
  8. Nov 16, 2019
    • Neta Zmora's avatar
      Add README.md files for APG and DropFilter · 70e26735
      Neta Zmora authored
      70e26735
    • Neta Zmora's avatar
      Remove duplicate YAML file · 49933144
      Neta Zmora authored
      49933144
    • Neta Zmora's avatar
      Cifar models: remove explicit parameters initialization · 6913687f
      Neta Zmora authored
      except for the case of VGG, our parameter initialization code was
      matched the default pytorch initialization (per torch.nn operation),
      so writing the initialization code ourselves can only lead to
      more code and maintenance; and also we would not benefit from
      improvements that occur at the pytorch level (e.g. if FB finds a
      better initialization for nn.conv2d than today's kaiming init, we
      would not benefit).
      The VGG initialization we had was "suspicious" and so reverting
      to the default seems reasonable.
      6913687f
  9. Nov 14, 2019
    • Guy Jacob's avatar
      Update required PyTorch version check · fbdbe35a
      Guy Jacob authored
      fbdbe35a
    • Guy Jacob's avatar
      PyTorch 1.3 Support (#426) · b8b4cf32
      Guy Jacob authored
      * summary_graph.py:
        * Change ONNX op.uniqueName() to op.debugName()
        * Removed scope-naming workaround which isn't needed in PyTorch 1.3
      * Tests:
        * Naming of trace entries changed in 1.3. Fixed SummaryGraph unit
          test that checked that
        * Adjusted expected values in full_flow_tests
        * Adjusted tolerance in test_sim_bn_fold
        * Filter some new warnings
      Unverified
      b8b4cf32
  10. Nov 13, 2019
    • Neta Zmora's avatar
      enable load_checkpoint when chkpt_file has an initial component of ~ · 80cab7e6
      Neta Zmora authored
      Prevent exception when loading checkpoints from a home directory
      80cab7e6
    • Neta Zmora's avatar
      Distiller versioning - fix dual version strings · cadd07eb
      Neta Zmora authored
      Two strings represented the library version: one in distiller.__init__.py
      and one in setup.py.
      This can lead to two difference version string values.
      The fix: have distiller.__init__.py read the version string from the
      package installation.
      This assumes that we've installed distiller properly, but we've been
      making this assumption for a long time in our code (e.g. how we do
      imports of distiller from the `tests` directory).
      cadd07eb
    • Neta Zmora's avatar
      image_classifier.py: fix printout when using early-exit · 81d561e0
      Neta Zmora authored
      When performing EE validation, the validation loop prints
      an annoying and redundant log of the iteration number - remove this.
      81d561e0
    • Guy Jacob's avatar
    • Bar's avatar
      image_classifier.py: PTQ stats collection and eval in same run (#346) · fb98377e
      Bar authored
      * Previous implementation:
        * Stats collection required a separate run with `-qe-calibration`.
        * Specifying `--quantize-eval` without `--qe-stats-file` triggered
          dynamic quantization.
        * Running with `--quantize-eval --qe-calibration <num>` only ran
          stats collection and ignored --quantize-eval.
      
      * New implementation:
        * Running `--quantize-eval --qe-calibration <num>` will now 
          perform stats collection according to the calibration flag,
          and then quantize the model with the collected stats (and
          run evaluation).
        * Specifying `--quantize-eval` without `--qe-stats-file` will
          trigger the same flow as in the bullet above, as if 
          `--qe-calibration 0.05` was used (i.e. 5% of the test set will
          be used for stats).
        * Added new flag: `--qe-dynamic`. From now, to do dynamic 
          quantization, need to explicitly run:
          `--quantize-eval --qe-dynamic`
        * As before, can still run `--qe-calibration` without 
          `--quantize-eval` to perform "stand-alone" stats collection
        * The following flags, which all represent different ways to
          control creation of stats or use of existing stats, are now
          mutually exclusive:
          `--qe-calibration`, `-qe-stats-file`, `--qe-dynamic`,
          `--qe-config-file`
      fb98377e
  11. Nov 11, 2019
    • Neta Zmora's avatar
      Pruning with virtual Batch-norm statistics folding (#415) · c849a25f
      Neta Zmora authored
      * pruning: add an option to virtually fold BN into Conv2D for ranking
      
      PruningPolicy can be configured using a new control argument fold_batchnorm: when set to `True`, the weights of BatchNorm modules are folded into the weights of Conv-2D modules (if Conv2D->BN edges exist in the model graph).  Each weights filter is attenuated using a different pair of (gamma, beta) coefficients, so `fold_batchnorm` is relevant for fine-grained and filter-ranking pruning methods.  We attenuate using the running values of the mean and variance, as is done in quantization.
      This control argument is only supported for Conv-2D modules (i.e. other convolution operation variants and Linear operations are not supported).
      e.g.:
      policies:
        - pruner:
            instance_name : low_pruner
            args:
              fold_batchnorm: True
          starting_epoch: 0
          ending_epoch: 30
          frequency: 2
      
      * AGP: non-functional refactoring
      
      distiller/pruning/automated_gradual_pruner.py – change `prune_to_target_sparsity`
      to `_set_param_mask_by_sparsity_target`, which is a more appropriate function
      name as we don’t really prune in this function
      
      * Simplify GEMM weights input-channel ranking logic
      
      Ranking weight-matrices by input channels is similar to ranking 4D
      Conv weights by input channels, so there is no need for duplicate logic.
      
      distiller/pruning/ranked_structures_pruner.py
      -change `prune_to_target_sparsity` to `_set_param_mask_by_sparsity_target`,
      which is a more appropriate function name as we don’t really prune in this
      function
      -remove the code handling ranking of matrix rows
      
      distiller/norms.py – remove rank_cols.
      
      distiller/thresholding.py – in expand_binary_map treat `channels` group_type
      the same as the `cols` group_type when dealing with 2D weights
      
      * AGP: add example of ranking filters with virtual BN-folding
      
      Also update resnet20 AGP examples
      Unverified
      c849a25f
  12. Nov 10, 2019
  13. Nov 08, 2019
  14. Nov 07, 2019
  15. Nov 06, 2019
  16. Nov 05, 2019
  17. Nov 03, 2019
  18. Oct 31, 2019
Loading