打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
以下所述参考官方《Cambricon Pytorch ⽤⼾⼿册 发布 0.7.0 》(2019年9月30日版),基于MLU100进行离线推理。
根据手册7.3节模型持久化中,对模型进行离线推理保存,再次运行时不需再次编译。
traced_model = jit.trace(mlu_model, example_input) traced_model(example_input) traced_model.save("model.pt") new_traced_model = jit.load("model.pt")
这样操作之后,进行推理时无法得到正确的计算结果,并且会有以下警告:
CNML: 6.6.0 6480416 CNRT: 3.12.0 71850d5 2021-04-19 07:43:35.238567: [cnrtWarning] [14771] [Card : NONE] Failed to initialize CNDEV. Host manage interface disabled [I export.cpp:630] method mluSave [I interpreter.cpp:663] [MLU Serialization]: Total mem used of offline model is 56047116. dataloader len: 36 2021-04-19 07:44:15.097436: [cnrtError] [15741] [Card : 0] MLU unfinished. cnrtStream fail.
而直接离线,不进行推理模型保存,可以得到正确结果(操作如下)。但是每次推理之前都要进行trace耗费大量时间。
trace_model = torch.jit.trace(model,example_input, check_trace=False)
请问,离线保存模型该如何操作才能保证网络模型计算正确?或者上述离线操作中有何错误?
热门帖子
精华帖子