搜索引擎主题模型优化(纯Python执行引擎(Executionengine)用于CGO运行Retiarii实验)
优采云 发布时间: 2021-10-28 15:15搜索引擎主题模型优化(纯Python执行引擎(Executionengine)用于CGO运行Retiarii实验)
执行引擎
执行引擎用于运行 Retiarii 实验。NNI 支持三种执行引擎,用户可以根据自己的模型变异定义类型和跨模型优化需求选择具体的引擎。
纯 Python 执行引擎
纯 Python 执行引擎是默认引擎。如果用户是 NNI NAS 的新手,我们推荐使用这个执行引擎。纯 Python 执行引擎在内联突变 API 的范围内发挥着神奇的作用,而无需触及用户模型的其余部分。因此,它对用户模型的要求最低。
现在需要一步使用这个引擎。
在整个 PyTorch 模型之外添加 @nni.retiarii.model_wrapper 装饰器。
注解
在 PyTorch 模型中,您应该始终使用 super().__init__() 而不是 super(MyNetwork, self).__init__() 因为后者在模型装饰器方面存在问题。
基于图的执行引擎
对于基于图形的执行引擎,它使用 TorchScript 将用户定义的模型转换为图形表示(称为图形 IR),其中每个实例化的模块模型都转换为子图。然后将变异应用于图以生成新图。每个新图都被转换回 PyTorch 代码并在用户指定的训练服务上执行。
在某些情况下,用户可能会发现 @basic_unit 非常有帮助。@basic_unit 这里的意思是模块不会转成子图,而是转成单个图节点作为基本单元。
@basic_unit 通常用于以下情况:
使用基于图的执行引擎需要三个步骤:
如果您的模型中有@nni.retiarii.model_wrapper,请将其删除。
将 config.execution_engine ='base' 添加到 RetiariiExeConfig。execution_engine的默认值是'py',它是一个纯Python执行引擎。
如有必要,请按照上述指南添加@basic_unit。
为了导出最佳模型,基于图的执行引擎支持通过运行 exp.export_top_models(formatter='code') 导出最佳模型的源代码。
CGO 执行引擎
CGO 执行引擎在基于图的执行引擎的基础上进行跨模型优化。此执行引擎将在 v2.4 中发布。