Created by: DannyIsFunny
Paddle-Lite添加Predictor全部参数共享和部分参数共享接口:(Parl&FeedGR业务验证有效)
-
CxxPredictor->Clone()
: 全部参数共享,模型中所有的权重参数共享(Scope中保存的Persistable参数)。 实现方法:Cloned_Predictor
与原有Predictor
共享一个root_scope
(保存权重参数的Scope)指针,但是两个的exec_scope
为两者各自私有。 -
CxxPredictor->Clone(const std::string& param_list )
: 部分参数共享,param_list
中的参数不共享,其余的权重参数共享。 实现方法:实现全部参数共享Clone()
,将不共享的权重参数拷贝一份到私有的exec_scope
中,Predictor参照参数时会先查找exec_scope
(即被私有化的成员),实现部分参数共享。
其余修改:Predictor
中为了实现参数共享修改部分参数的属性
-
cpp::ProgramDesc program_desc_;
--- >std::shared_ptr<cpp::ProgramDesc> program_desc_;
-
const Scope* exec_scope_;
--->Scope* exec_scope_;
-
Predictor raw_predictor_;
--->std::shared_ptr<Predictor> raw_predictor_;
参数共享和部分参数共享设计链接:http://agroup.baidu.com/paddle-infer/md/article/2685025