下载
中文
注册

V1版本控制流算子导致内存不足

问题现象

模型执行时报错,内存超过31G,导致内存分配不足。

原因分析

发现该网络的图结构中有switch->merge的V1控制结构,是因为当网络中的分支结构较多,且采用V1版本的控制流算子可能会影响内存复用的效果,导致内存不足。

解决方案

将网络中的TensorFlow V1版本的控制流算子转换为V2版本。
  • 方式一(推荐):修改网络脚本,在import tensorflow as tf后增加如下两条指令,将TensorFlow V1版本的控制流算子转换为V2版本。
    1
    2
    tf.enable_control_flow_v2()
    tf.enable_resource_variables()
    
  • 方式二:配置环境变量,将V1版本的控制流算子转换为V2版本。
    export ENABLE_FORCE_V2_CONTROL=1

    注意:使用该环境变量,可能会存在V1版本控制流算子到V2版本控制流算子转换失败的场景,例如网络脚本中带ref控制算子的场景。