AIMET 量化工具源代码(compile && install
2023-11-21 本文已影响0人
Epimenides
-
环境搭建
- Docker pull 拉取 镜像(注意这个是AIMET 的官方推荐编译安装的环境, 但是这个镜像会时常更新, 如果编译安装过程中出现了什么问题, 重新拉取镜像 AIMET 镜像地址(include tf torch gpu))
docker pull artifacts.codelinaro.org/codelinaro-aimet/aimet-dev:latest.torch-gpu
- 创建 docker 容器
# 指定变量 export AIMET_VARIANT="torch-gpu" # -v 后边的宿主机path 和 容器 path 需要按照用户自己的情况配置, 这边我用自己 114 上的帐号 zhchen 来 docker run -d --gpus all -it -v /data/zhchen/AIMET:/root --name=zhc_aimet artifacts.codelinaro.org/codelinaro-aimet/aimet-dev:latest.${AIMET_VARIANT} /bin/bash
-
clone 编译安装 AIMET
git clone https://github.com/quic/aimet.git
#!/bin/bash # set -x cd aimet mkdir -p ./ThirdParty/googletest pushd ./ThirdParty/googletest git clone https://github.com/google/googletest.git -b release-1.8.0 googletest-release-1.8.0 popd source packaging/envsetup.sh if [ ! -d "build" ]; then mkdir build && cd build else cd build fi # 我们目前用 torch 不用 tf 拉的镜像也是 torch 的, 所以把 tf 的开关关了 cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DENABLE_CUDA=ON -DENABLE_TORCH=ON -DENABLE_TENSORFLOW=OFF make -j8
root@59716574b8a7:~/aimet/build# make -j [ 5%] Built target MoDlQuantizationCuda [ 8%] Built target MoDlCompression [ 11%] Built target gtest [ 26%] Built target MoDlEqualization [ 53%] Built target MoDlQuantization [ 56%] Built target gtest_main [ 59%] Built target quant_info [ 63%] Built target PyModelOptimizations [ 71%] Built target OnnxCppOps [ 74%] Built target MoDlCompressionTest [ 77%] Built target MoDlEqualizationTest [ 95%] Built target MoDlQuantizationTest [ 97%] Built target TorchCppOps [100%] Built target OnnxTrainingExtensionCppTest [100%] Built target BuildTorchExtensions root@59716574b8a7:~/aimet/build# make install [ 5%] Built target MoDlQuantizationCuda [ 32%] Built target MoDlQuantization [ 35%] Built target gtest [ 38%] Built target gtest_main [ 56%] Built target MoDlQuantizationTest [ 59%] Built target MoDlCompression [ 61%] Built target MoDlCompressionTest [ 77%] Built target MoDlEqualization [ 80%] Built target MoDlEqualizationTest [ 84%] Built target PyModelOptimizations [ 87%] Built target quant_info [ 95%] Built target OnnxCppOps [ 98%] Built target OnnxTrainingExtensionCppTest [100%] Built target TorchCppOps [100%] Built target BuildTorchExtensions Install the project... -- Install configuration: "" -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/QuantizerFactory.hpp -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/Quantization.hpp -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/IQuantizer.hpp -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/TensorQuantizerOpFacade.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/GraphQuantizer.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/EncodingAnalyzerForPython.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/ITensorQuantizationSim.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/TensorQuantizationSimForPython.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/Fp16Quantization.hpp -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/TensorQuantizer.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlQuantization/IQuantizationEncodingAnalyzer.hpp -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlCompression -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlCompression/ISVD.hpp -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/CrossLayerScaling.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/HighBiasFold.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/CrossLayerScalingForPython.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/BiasCorrectionForPython.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/HighBiasFoldForPython.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/BatchNormFoldForPython.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/BatchNormFold.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/BiasCorrection.h -- Up-to-date: /root/aimet/build/staging/universal/lib/x86_64-linux-gnu/include/DlEqualization/def.h -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/libpymo.cpython-38-x86_64-linux-gnu.so -- Up-to-date: /root/aimet/build/staging/universal/lib/python -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/batch_norm_fold.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/qc_quantize_op.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/quantsim.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/meta -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/meta/connectedgraph.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/meta/product.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/meta/operations.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/quantsim_config -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/quantsim_config/quantsim_config.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/cross_layer_equalization.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_onnx/utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/libaimet_onnxrt_ops.so -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/libquant_info.cpython-38-x86_64-linux-gnu.so -- Up-to-date: /root/aimet/build/staging/universal/lib/python -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/batch_norm_fold.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/qc_quantize_op.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/adaround -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/adaround/adaround_weight.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/adaround/adaround_tensor_quantizer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/adaround/adaround_loss.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/adaround/activation_sampler.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/adaround/adaround_optimizer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/data_subsampler.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/model_validator -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/model_validator/validation_checks.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/model_validator/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/model_validator/model_validator.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/qc_quantize_recurrent.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/layer_database.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/pymo_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/model_preparer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/quantsim_straight_through_grad.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/elementwise_ops.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/weight_padding_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/quantsim.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/tensor_quantizer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/fp_quantization.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/meta -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/meta/graphmeta.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/meta/connectedgraph.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/meta/connectedgraph_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/meta/operation.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/meta/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/quantsim_config -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/quantsim_config/quantsim_config.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/quantsim_config/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/channel_pruning -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/channel_pruning/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/channel_pruning/channel_pruner.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/channel_pruning/weight_reconstruction.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/transformers -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/transformers/activation.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/transformers/utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/custom -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/custom/custom_modules.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/custom/custom_tensor_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/save_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/plotting_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/examples -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/examples/supervised_classification_pipeline.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/examples/mnist_torch_model.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/examples/mobilenet.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/examples/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/examples/test_models.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/plots.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/auto_quant.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/bn_reestimation.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/svd.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/svd_pruner_deprecated.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/svd_splitter.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/rank_selector.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/model_stats_calculator.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/svd_impl.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/svd_intf_defs_deprecated.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/layer_selector_deprecated.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/svd/svd_pruner.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/bias_correction.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/quant_analyzer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/compress.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/visualize_model.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/transformer_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/layer_selector.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/cross_layer_equalization.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/tensor_factory_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/torchscript_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/onnx_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/auto_quant_v2.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/auto_quant_diagnostics_template.css -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/compression_factory.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/arch_checker -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/arch_checker/constants.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/arch_checker/arch_checker.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/arch_checker/arch_checker_rules.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/arch_checker/arch_checker_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/auto_quant_diagnostics_template.html -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/defs.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/winnow -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/winnow/mask_propagation_winnower.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/winnow/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/winnow/winnow.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/winnow/module_reducer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/winnow/winnow_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/visualize_serialized_data.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_torch/utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/setup.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common -- Installing: /root/aimet/build/staging/universal/lib/python/aimet_common/AimetTensorQuantizer.cpython-38-x86_64-linux-gnu.so -- Up-to-date: /root/aimet/build/staging/universal/lib/python -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/cost_calculator.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/pruner.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/default_logging_config.json -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/model_module.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/input_match_search.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quant_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/layer_database.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/cache.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/compression_algo.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/package_info.py.in -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/connected_graph -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/connected_graph/connectedgraph.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/connected_graph/product.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/connected_graph/connectedgraph_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/connected_graph/operation.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/connected_graph/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim_config -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim_config/quantsim_config.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim_config/quantsim_config_schema.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim_config/default_config_per_channel.json -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim_config/default_config.json -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim_config/json_config_importer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quantsim_config/utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/graph_searcher.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/polyslice.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/plotting_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/channel_pruner.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/bokeh_plots.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/auto_quant.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/bias_correction.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/graph_pattern_matcher.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/statistics_util.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/quant_analyzer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/data_cache_utility.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/layer_selector.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/cross_layer_equalization.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/bin -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/bin/update_snpe_out_encoding_onnx_model -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/bin/update_snpe_out_encoding_tf_model -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/svd_pruner.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/comp_ratio_select.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/curve_fit.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/defs.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/winnow -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/winnow/mask_propagation_winnower.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/winnow/__init__.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/winnow/mask.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/winnow/module_reducer.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/winnow/mask_propagator.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/winnow/winnow_utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/utils.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/aimet_common/comp_ratio_rounder.py -- Up-to-date: /root/aimet/build/staging/universal/lib/python/setup.py -- Up-to-date: /root/aimet/build/staging/universal/Docs
-
Export AIMET 的环境变量
export PYTHONPATH=/root/aimet/build/staging/universal/lib/python:$PYTHONPATH