Scope融合实现方案
Scope融合实现方案包括Scope融合规则注册、Scope融合规则创建和执行。
Scope融合实现方案

- ScopePass Register:用于融合规则注册。
 - OpParser-Plugin Register:用于融合算子Parser注册,将Scope内的TensorFlow算子映射成适配昇腾AI处理器的融合算子。普通算子映射也是由该模块完成。
 
Scope融合规则注册
在ATC模型转换或者在TensorFlow框架内执行图时,系统会将“Ascend-cann-toolkit安装目录/ascend-toolkit/latest/opp/built-in/framework/”下的融合规则插件so(包括所有内置融合规则和自定义融合规则)自动加载到ScopePass Register。在后续Parser执行阶段可根据该融合规则的使能状态,决定是否创建并执行。
     图1 Scope融合规则注册机制
     
    
   
    Scope融合规则创建和执行
     图2 Scope融合规则执行流程
     
    
    
    - TensorFlow Parser在模型解析过程中,调用ScopePassManager提供的能力,将GraphDef里的Node信息、Scope信息用Scope融合的数据类型表示出来,从上到下的层级为ScopeGraph、ScopeTree、Scope,生成ScopeGraph。
 - TensorFlow Parser创建并执行Scope融合,最后将最终匹配结果保存到ScopeGraph。主要包括以下几步:
      
- TensorFlow Parser根据已注册的融合规则的使能状态,创建Scope融合规则。
 - 获取已创建的Scope融合规则,用全图的Scope,按照融合规则注册的先后顺序,逐一去匹配这些规则,如果匹配到则设置对应Scope的类型。
        
 
         如果用户自定义融合规则的名称和内置融合规则名称一样,则按照用户自定义融合规则匹配。
 - 对上一步匹配到的Scope按Scope的连接关系等进行进一步筛选。例如上一步得到的Scope并不一定是最终目标融合的Scope,而需要筛选出有并列关系的Scope,或者筛选出有嵌套关系的Scope等。
 - 对最终匹配到的Scope设置融合结果,包含融合节点的名字、类型、输入、输出、描述等。
 - 将融合结果保存到第1步生成的ScopeGraph中。
 
 - TensorFlow Parser后续流程会根据融合结果信息,执行添加节点、连接节点关系、构造IR Graph等操作。
 
关键数据结构
     ScopeGraph、ScopeTree等数据结构提供了Scope融合所需的各种能力和数据保存功能,接口定义请参见Scope融合规则开发接口,关键类的作用简介请参考表1。 
     
      
      
       
     
    
   | 
           类名  | 
         
           作用简介  | 
         
           参考文档  | 
        
|---|---|---|
| 
           Scope  | 
         
           Scope类型和属性定义。  | 
         |
| 
           ScopeTree  | 
         
           存储所有Scope信息的一个树结构,可以查询Scope相关的子Scope和Node信息。  | 
         |
| 
           ScopeGraph  | 
         
           包含ScopeTree,同时定义了Scope关系匹配计算的成员函数,以及Scope融合识别的最终结果。  | 
         |
| 
           ScopePattern  | 
         
           Scope匹配规则,目前主要包括以下三种: 
  | 
         |
| 
           ScopeBaseFeature  | 
         
           以上三种匹配规则的基类,定义三种匹配规则的基本操作。  | 
         |
| 
           ScopeBasePass  | 
         
           用户自定义融合规则的基类,提供接口定义、通用执行流程、与通用规则匹配流程的实现。  | 
         |
| 
           ScopesResult  | 
         
           用于保存经过进一步匹配和筛选后最终留下来的Scope。  | 
         |
| 
           FusionScopesResult  | 
         
           保存融合结果,包括设置融合算子名称、类型、输入、输出、描述、内部算子组合信息(多对多场景)等。  | 
         |
| 
           ScopeUtil  | 
         
           提供通用工具类函数。  | 
         |
| 
           ScopeAttrValue  | 
         
     父主题: 基本概念