paddle_lite_opt 3.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
#!/usr/bin/env python
# Copyright @ 2020 Baidu. All rights reserved.
""" python wrapper file for Paddle-Lite opt tool """
from __future__ import print_function
import paddlelite.lite as lite
import argparse


def main():
    """ main funcion """
    a=lite.Opt()
    parser = argparse.ArgumentParser()
    parser.add_argument("--model_dir", type=str, required=False,\
        help="path of the model. This option will be ignored if model_file and param_file exist")
    parser.add_argument("--model_file", type=str, required=False,\
        help="model file path of the combined-param model.")
    parser.add_argument("--param_file", type=str, required=False,\
        help="param file path of the combined-param model.")
    parser.add_argument("--optimize_out_type", type=str, required=False,default="naive_buffer",\
        choices=['protobuf', 'naive_buffer'], \
        help="store type of the output optimized model. protobuf/naive_buffer.")
    parser.add_argument("--optimize_out", type=str, required=False,\
        help="path of the output optimized model")
    parser.add_argument("--valid_targets", type=str, required=False,default="arm",\
        help="The targets this model optimized for, should be one of (arm,opencl, x86), splitted by space.")

   # arguments of help information
    parser.add_argument("--print_supported_ops", type=str, default="false",\
        help="{true, false}\
               Print supported operators on the inputed target")
    parser.add_argument("--print_all_ops", type=str, default="false",\
        help="{true, false}\
               Print all the valid operators of Paddle-Lite")
    parser.add_argument("--print_model_ops", type=str, default="false",\
        help="{true, false}\
               Print operators in the input model")
    parser.add_argument("--display_kernels", type=str, default="false",\
        help="{true, false}\
               Display kernel information")

   # arguments of strip lib according to input model
    parser.add_argument("--record_tailoring_info", type=str, default="false",\
        help="{true, false}\
               Record kernels and operators information of the optimized model \
               for tailoring compiling, information are stored into optimized  \
               model path as hidden files")
    parser.add_argument("--model_set", type=str, required=False,\
        help="path of the models set. This option will be used to specific \
              tailoring")

    args = parser.parse_args()
    """ input opt params """
    if args.model_dir is not None:
         a.set_model_dir(args.model_dir)
    if args.model_set is not None:
         a.set_modelset_dir(args.model_set)
    if args.model_file is not None:
         a.set_model_file(args.model_file)
    if args.param_file is not None:
         a.set_param_file(args.param_file)
    if args.optimize_out_type is not None:
         a.set_model_type(args.optimize_out_type)
    if args.optimize_out is not None:
         a.set_optimize_out(args.optimize_out)
    if args.valid_targets is not None:
         a.set_valid_places(args.valid_targets)
    if args.param_file is not None:
         a.set_param_file(args.param_file)
    if args.record_tailoring_info == "true":
         a.record_model_info(True)
    """ print ops info """
    if args.print_all_ops == "true":
         a.print_all_ops()
         return 0
    if args.print_supported_ops == "true":
         a.print_supported_ops()
         return 0
    if args.display_kernels == "true":
         a.display_kernels_info()
         return 0
    if args.print_model_ops == "true":
         a.check_if_model_supported(True);
         return 0
    if ((args.model_dir is None) and (args.model_file is None or args.param_file is None) and (args.model_set is None)) or (args.optimize_out is None):
         a.executablebin_help()
         return 1
    else:
         a.run()
         return 0
if __name__ == "__main__":
    main()