CANN TensorFlow适配器:当tf.matmul跑在昇腾NPU上时在底层发生了什么去年底协助某互联网公司做TensorFlow业务迁移,他们的推荐系统用了大量tf.sparse.split()和tf.strings操作。原以为跟PyTorch一样,把.gpu()改成.npu()就完事。结果一跑,一个sparse.split算子直接报错,还有tf.strings相关的预处理层完全不支持。花了两天时间才搞清楚,TensorFlow适配器的算子覆盖跟PyTorch适配器的逻辑不同——它是基于图模式做的算子映射,而不是eager模式的算子重写。