def main(): args = parse_args() if args.amp: import os os.environ['AMP'] = "1" cfg = get_config(args.config, overrides=args.override) _, world_size = get_dist_info() parallel = world_size != 1 if parallel: paddle.distributed.init_parallel_env() if args.test: test_model(cfg, weights=args.weights, parallel=parallel) elif args.train_dali: train_dali(cfg, weights=args.weights, parallel=parallel) elif args.multigrid: train_model_multigrid(cfg, world_size, validate=args.validate) else: train_model(cfg, weights=args.weights, parallel=parallel, validate=args.validate, fleet=args.fleet, amp=args.amp)
def main(): args = parse_args() cfg, model_name = _trim(get_config(args.config, show=False), args) print(f"Building model({model_name})...") model = build_model(cfg) assert osp.isfile( args.pretrained_params ), f"pretrained params ({args.pretrained_params} is not a file path.)" if not os.path.isdir(args.output_path): os.makedirs(args.output_path) print(f"Loading params from ({args.pretrained_params})...") params = paddle.load(args.pretrained_params) model.set_dict(params) model.eval() model = to_static(model, input_spec=[ paddle.static.InputSpec(shape=[ None, args.num_seg, 3, args.img_size, args.img_size ], dtype='float32'), ]) paddle.jit.save(model, osp.join(args.output_path, model_name)) print( f"model ({model_name}) has been already saved in ({args.output_path}).")
def main(): args = parse_args() cfg, model_name = _trim(get_config(args.config, show=False)) print(f"Building model({model_name})...") model = build_model(cfg) params_info = paddle.summary(model, (1, 8, 3, 224, 224)) print(params_info)
def main(): args = parse_args() cfg = get_config(args.config, overrides=args.override) dataset = build_dataset((cfg.DATASET.test, cfg.PIPELINE.test)) _, world_size = get_dist_info() parallel = world_size != 1 if parallel: paddle.distributed.init_parallel_env() model = build_model(cfg.MODEL) test_model(model, dataset, cfg, args.weights, world_size)
def main(): args = parse_args() cfg, model_name = _trim(get_config(args.config, show=False), args) print(f"Building model({model_name})...") model = build_model(cfg) img_size = args.img_size num_seg = args.num_seg #NOTE: only support tsm now, will refine soon params_info = paddle.summary(model, (1, num_seg, 3, img_size, img_size)) print(params_info) if args.FLOPs: flops_info = paddle.flops(model, [1, num_seg, 3, img_size, img_size], print_detail=True) print(flops_info)
def main(): args = parse_args() cfg = get_config(args.config, overrides=args.override) _, world_size = get_dist_info() parallel = world_size != 1 if parallel: paddle.distributed.init_parallel_env() if args.test: test_model(cfg, weights=args.weights, parallel=parallel) else: train_model(cfg, weights=args.weights, parallel=parallel, validate=args.validate)
def main(): args = parse_args() cfg, model_name = trim_config(get_config(args.config, show=False)) print(f"Building model({model_name})...") model = build_model(cfg.MODEL) assert osp.isfile( args.pretrained_params ), f"pretrained params ({args.pretrained_params} is not a file path.)" if not os.path.isdir(args.output_path): os.makedirs(args.output_path) print(f"Loading params from ({args.pretrained_params})...") params = paddle.load(args.pretrained_params) model.set_dict(params) model.eval() input_spec = get_input_spec(cfg.INFERENCE, model_name) model = to_static(model, input_spec=input_spec) paddle.jit.save(model, osp.join(args.output_path, model_name)) print( f"model ({model_name}) has been already saved in ({args.output_path}).")
def main(): args = parse_args() cfg = get_config(args.config, show=False) model_name = cfg.model_name print(f"Inference model({model_name})...") InferenceHelper = build_inference_helper(cfg.INFERENCE) if args.enable_benchmark: assert args.use_gpu is True # HALF precission predict only work when using tensorrt if args.use_fp16 is True: assert args.use_tensorrt is True predictor = create_paddle_predictor(args) # get input_tensor and output_tensor input_names = predictor.get_input_names() output_names = predictor.get_output_names() input_tensor_list = [] output_tensor_list = [] for item in input_names: input_tensor_list.append(predictor.get_input_handle(item)) for item in output_names: output_tensor_list.append(predictor.get_output_handle(item)) test_num = 500 test_time = 0.0 if not args.enable_benchmark: # Prepare input inputs = InferenceHelper.preprocess(args.input_file) # Run inference for i in range(len(input_tensor_list)): input_tensor_list[i].copy_from_cpu(inputs[i]) predictor.run() output = [] for j in range(len(output_tensor_list)): output.append(output_tensor_list[j].copy_to_cpu()) # Post process output InferenceHelper.postprocess(output) else: # benchmark only for ppTSM for i in range(0, test_num + 10): inputs = [] inputs.append( np.random.rand(args.batch_size, 8, 3, 224, 224).astype(np.float32)) start_time = time.time() for j in range(len(input_tensor_list)): input_tensor_list[j].copy_from_cpu(inputs[j]) predictor.run() output = [] for j in range(len(output_tensor_list)): output.append(output_tensor_list[j].copy_to_cpu()) if i >= 10: test_time += time.time() - start_time #time.sleep(0.01) # sleep for T4 GPU fp_message = "FP16" if args.use_fp16 else "FP32" trt_msg = "using tensorrt" if args.use_tensorrt else "not using tensorrt" print("{0}\t{1}\t{2}\tbatch size: {3}\ttime(ms): {4}".format( model_name, trt_msg, fp_message, args.batch_size, 1000 * test_time / test_num))