模型部署总览与流程建议¶
当使用 MegEngine 完成模型的训练过程后,为了让模型可以实现它的价值,我们需要对模型进行“部署”, 即在特定的硬件设备和系统环境限制下,使用模型进行推理。
根据最终部署设备的不同,我们可能将会经历不同的部署路线:
计算硬件  | 
举例  | 
适用场景  | 
|---|---|---|
有 Python 环境的设备  | 
GPU 服务器  | 
希望尽量简单,不在意 Python 性能上的限制  | 
C / C++ 环境的设备  | 
任何设备,尤其是嵌入式芯片、TEE 环境等  | 
希望性能尽量高、资源占用低,能接受编译 C++ 库的复杂性  | 
NPU  | 
Atlas / RockChip / 寒武纪等芯片  | 
需要利用 NPU 的算力,接受稍复杂的转换步骤  | 
在下面这张流程图中,可以了解到不同部署路线中的几个基本步骤:
            graph LR
training_code[训练代码] ==> |tm.trace_module| tm_file[.tm 文件]
training_code .-> |dump| mge_file
tm_file ==> |dump| mge_file[.mge 文件]
mge_file ==> |load| litepy[Lite Python 运行时]
mge_file ==> |load| lite[Lite C++ 运行时]
tm_file -- mge_convert --> otherformat[其他格式: ONNX/TFLite/Caffe] -- NPU 厂商转换器 --> NPU
tm_file -- mge_convert 自带 NPU 转换器 --> NPU
        
注解
为了更好的选择模型部署,需要了解到以下几点:
最推荐的路线为训练代码 ->
.tm文件 ->.mge文件 -> Lite 执行;如果你的团队中存在研究员 / 工程人员的分工,建议以
.tm文件做为分界面 —— 研究员负责交付.tm模型(永久存档),工程人员负责后续的部署流程;如果你独立负责完整的训练到部署过程,且不在意长期存档模型。 为了快捷,可以直接从训练代码生成
.mge文件(即上述虚线),结果是等价的。
参见
mgeconvert : 适用于 MegEngine 的各种转换器。