|
|
@ -39,6 +39,7 @@ parser.add_argument('--epoch_size', type=str, default="2", help='Epoch_size: def
|
|
|
|
parser.add_argument('--print_per_steps', type=str, default="20", help='Print loss and time per steps: default 20')
|
|
|
|
parser.add_argument('--print_per_steps', type=str, default="20", help='Print loss and time per steps: default 20')
|
|
|
|
parser.add_argument('--run_distribute', type=ast.literal_eval, default=False, help='Run distribute')
|
|
|
|
parser.add_argument('--run_distribute', type=ast.literal_eval, default=False, help='Run distribute')
|
|
|
|
parser.add_argument('--dataset_path', type=str, default=None, help='Imagenet dataset path')
|
|
|
|
parser.add_argument('--dataset_path', type=str, default=None, help='Imagenet dataset path')
|
|
|
|
|
|
|
|
parser.add_argument('--mode', type=str, default="GRAPH", choices=["GRAPH", "PYNATIVE"], help='Execute mode')
|
|
|
|
parser.add_argument('--dtype', type=str, choices=["fp32", "fp16", "FP16", "FP32"], default="fp16",\
|
|
|
|
parser.add_argument('--dtype', type=str, choices=["fp32", "fp16", "FP16", "FP32"], default="fp16",\
|
|
|
|
help='Compute data type fp32 or fp16: default fp16')
|
|
|
|
help='Compute data type fp32 or fp16: default fp16')
|
|
|
|
args_opt = parser.parse_args()
|
|
|
|
args_opt = parser.parse_args()
|
|
|
@ -119,7 +120,11 @@ if __name__ == '__main__':
|
|
|
|
compute_type = str(args_opt.dtype).lower()
|
|
|
|
compute_type = str(args_opt.dtype).lower()
|
|
|
|
|
|
|
|
|
|
|
|
# init context
|
|
|
|
# init context
|
|
|
|
context.set_context(mode=context.GRAPH_MODE, device_target=dev, save_graphs=False)
|
|
|
|
if args_opt.mode == "GRAPH":
|
|
|
|
|
|
|
|
mode = context.GRAPH_MODE
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
mode = context.PYNATIVE_MODE
|
|
|
|
|
|
|
|
context.set_context(mode=mode, device_target=dev, save_graphs=False)
|
|
|
|
if args_opt.run_distribute:
|
|
|
|
if args_opt.run_distribute:
|
|
|
|
init()
|
|
|
|
init()
|
|
|
|
context.set_auto_parallel_context(device_num=get_group_size(), parallel_mode=ParallelMode.DATA_PARALLEL,
|
|
|
|
context.set_auto_parallel_context(device_num=get_group_size(), parallel_mode=ParallelMode.DATA_PARALLEL,
|
|
|
@ -174,10 +179,15 @@ if __name__ == '__main__':
|
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt, loss_scale_manager=loss_scale, metrics={'acc'},
|
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt, loss_scale_manager=loss_scale, metrics={'acc'},
|
|
|
|
amp_level="O2", keep_batchnorm_fp32=False)
|
|
|
|
amp_level="O2", keep_batchnorm_fp32=False)
|
|
|
|
# define callbacks
|
|
|
|
# define callbacks
|
|
|
|
|
|
|
|
if mode == context.PYNATIVE_MODE:
|
|
|
|
|
|
|
|
print_per_steps = 1
|
|
|
|
time_cb = MyTimeMonitor(total_batch, print_per_steps)
|
|
|
|
time_cb = MyTimeMonitor(total_batch, print_per_steps)
|
|
|
|
loss_cb = LossMonitor()
|
|
|
|
loss_cb = LossMonitor()
|
|
|
|
cb = [time_cb, loss_cb]
|
|
|
|
cb = [time_cb, loss_cb]
|
|
|
|
|
|
|
|
|
|
|
|
# train model
|
|
|
|
# train model
|
|
|
|
print("========START RESNET50 GPU BENCHMARK========")
|
|
|
|
print("========START RESNET50 GPU BENCHMARK========")
|
|
|
|
model.train(int(epoch_size * step_size / print_per_steps), dataset, callbacks=cb, sink_size=print_per_steps)
|
|
|
|
if mode == context.GRAPH_MODE:
|
|
|
|
|
|
|
|
model.train(int(epoch_size * step_size / print_per_steps), dataset, callbacks=cb, sink_size=print_per_steps)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
model.train(epoch_size, dataset, callbacks=cb)
|
|
|
|