预测时候CPU跑的结果与GPU跑的结果完全不同
Created by: yzhw9981
使用python预测,CPU跑的结果与GPU跑的结果完全不同 paddle版本171 GPU环境为paddlecloud默认的GPU环境配置 CPU环境为paddlecloud默认的CPU环境配置 均为单机单卡(单CPU)
为了排除程序上可能潜在的问题,使用训练模式,置lr=0.0,batchsize为相同的值,load预训练好的模型文件后,step1的得出的softmax后向量GPU与CPU有巨大的差异,CPU结果看起来完全是错的,GPU结果正常。
附代码初始化环境的部分。具体业务代码如果需要后续通过hi的方式提供 def main(args): config = PageTransformerConfig(args.config_path) config.print_config()
if args.use_cuda:
#gpu
dev_list = fluid.cuda_places()
place = dev_list[0]
dev_count = len(dev_list)
else:
#cpu
place = fluid.CPUPlace()
dev_count = int(os.environ.get('CPU_NUM', multiprocessing.cpu_count()))
exe = fluid.Executor(place)
trainers = 1
trainer_id = 0
if args.is_distributed and args.use_cuda:
trainers = int(os.getenv("PADDLE_TRAINERS_NUM", "0"))
trainer_id = int(os.getenv("PADDLE_TRAINER_ID", "0"))
#declare pyreader
reader = PageTransformerReader(
max_seq_len=args.max_seq_len,
random_seed=args.random_seed)
if not (args.do_train or args.do_val or args.do_test):
raise ValueError("For args `do_train`, `do_val` and `do_test`, at "
"least one of them must be True.")
startup_prog = fluid.Program()
if args.random_seed is not None:
startup_prog.random_seed = args.random_seed