文档
注册

什么是Scope融合

为了实现高性能的计算,往往需要对子图中的小算子进行融合,使得融合后的大算子(多对一场景)或小算子组合(多对多场景)可以充分利用硬件加速资源。

在TensorFlow框架中,通过TensorFlow的作用域函数tf.name_scope(),可以将不同的对象及操作放在由tf.name_scope()指定的作用域中,便于在tensorboard中展示清晰的逻辑关系图:

import tensorflow as tf;   
tf.reset_default_graph()

#定义一块名为xx_name_scope的区域,并在其中工作
with tf.name_scope('xx_name_scope'):   
     a = tf.constant(1,name='my_a')    
     b = tf.Variable(2,name='my_b') 
     c = tf.add(a,b,name='my_add')      
print("a.name = "+a.name) 
print("b.name = "+b.name) 
print("c.name = "+c.name)

# 保存graph用于tensorboard绘图
with tf.Session() as sess:
   sess.run(tf.global_variables_initializer())
   writer = tf.summary.FileWriter("./test",sess.graph)
   print(sess.run(c))
writer.close()

输出结果:

a.name = xx_name_scope/my_a:0 
b.name = xx_name_scope/my_b:0 
c.name = xx_name_scope/my_add:0

从输出结果可以看出,在tf.name_scope()下的所有对象和操作,其name属性前都加了xx_name_scope,用以表示这些内容全在其范围下。

从tensorboard中也可以看到Scope信息:

Scope融合是一种基于Scope来进行融合的能力,把Scope内的多个小算子替换为一个大算子或多个算子组合,以实现效率的提升。例如将tf.layernorm生成的layernorm/batchnorm和layernorm/moments这两个Scope,融合为LayerNorm算子。

当前除了支持基本的Scope内所有算子融合外,还支持更加灵活的融合配置, 例如嵌套式识别、并列式识别、Scope+普通算子识别,如图1所示。

图1 Scope融合支持的场景
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词