系统约束与限制
- 该文档仅配套TensorFlow 2.6.5版本使用。
- 当前版本不支持float64/complex64/complex128/DT_VARIANT数据类型。
- 只支持变量(tf.Variable)资源相关操作在NPU执行。
- 只支持tf.function修饰的函数算子在NPU执行。
- 不支持训练脚本中同时使用tf.compat.v1接口和TF 2.6.5中eager功能相关的API。
- TensorFlow 2.6.5数据预处理过程默认在Host上执行,而变量需要下沉到Device上初始化。因此若数据预处理脚本中包含了变量,可能会在NPU上执行失败。为了解决此问题,应将包含变量的数据预处理代码嵌套在context.device('CPU:0')中,确保预处理代码中的变量在Host上初始化。
1 2 3 4 5 6
import tensorflow as tf from tensorflow.python.eager import context with context.device('cpu:0'): # 此处写数据预处理代码,以下仅为示例 x = tf.Variable([1, 2, 3]) y = tf.square(x)
- 如果使用Python的多进程包multiprocessing创建多进程,请不要使用fork方法,建议使用forkserver方法。
因为在Python3.8~Python3.11版本中如果使用fork方法,在创建子进程时可能会复制主进程的锁状态,而在子进程里再触发获取锁时,就会导致死锁,进而导致业务进程卡死。
父主题: 使用前必读