Created by: DannyIsFunny
【问题描述】:当前InferShape过程采用所有Shape&Lod信息的Hash值作为标记,判断是否是第一次InferShape。 业务方反应,当前InferShape采用的Hash算法存在Hash碰撞现象,即不同的Input算出相同的Hash值。 【尝试过的修改方法】:尝试改善Hash算法的实现方式:
- 1、改善增量Hash实现方法、与TensorFlow中的对应实现一致,业务方测试仍然存在Hash碰撞 #3573
- 2、修改为系统Hash实现,在测试脚本中未出现Hash碰撞现象,但较严格的Hash实现导致计算耗时增加,间接增加InferShape&Op->Run的耗时,增量无法接受。 #3600
【本PR工作】将用Hash 标记shape&Lod方法修改为直接存储Shape&Lod信息,进行前后数据比较。 优势:
- 不存在hash碰撞现象
- InferShape耗时降低:测试模型下 由 0.018ms降低至0.016ms 缺点:
- 每个op中保存了历史的Input shape&lod信息,增加内存占用,实现不够优雅,后续待改进(尽量使用Hash等标记方法实现)