昇腾社区首页
中文
注册

系统约束与限制

  • 该文档仅配套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方法,在创建子进程时可能会复制主进程的锁状态,而在子进程里再触发获取锁时,就会导致死锁,进而导致业务进程卡死。