菜单

模型导出与优化

相关源文件

本文档涵盖了 PaddleOCR 的模型导出与优化系统,该系统将训练好的模型从动态计算图转换为优化的静态推理模型。导出过程处理动态到静态的转换、特定算法的优化以及为跨不同平台部署生成的推理配置。

有关训练流程和模型架构的信息,请参阅 训练流程模型架构 有关部署特定信息,请参阅 部署与推理

导出流程概述

模型导出系统通过一个处理各种算法和优化要求的、多阶段的流程,将训练好的 PaddleOCR 模型转换为随时可部署的推理模型。

导出流程

导出过程始于 export() 函数,该函数负责协调模型转换、优化和配置文件生成。该流程处理单个模型和包含多个子模型的蒸馏模型。

来源: ppocr/utils/export_model.py423-551

动态到静态转换

dynamic_to_static() 函数将 PaddlePaddle 的动态计算图转换为针对推理优化的静态图。此转换需要特定算法的输入规范,并处理各种模型架构。

特定算法的输入规范

在静态转换期间,不同的算法需要特定的输入张量形状和配置。系统会自动检测算法并应用适当的规范。

来源: ppocr/utils/export_model.py169-365

核心导出函数

导出系统围绕几个关键函数构建,这些函数处理转换过程的不同方面。

功能目的关键参数
export()主导出协调器config, base_model, save_path
export_single_model()单模型导出model, arch_config, save_path, quanter
dynamic_to_static()图转换model, arch_config, input_shape
dump_infer_config()配置生成config, path, logger
apply_to_static()训练时转换model, config, logger

导出函数依赖

导出过程涉及多个协调的函数调用,用于模型构建、优化和配置生成。

来源: ppocr/utils/export_model.py423-551 ppocr/utils/export_model.py368-408

特定算法的优化

导出系统为不同的 OCR 算法提供了专门的处理,每种算法在输入形状、处理模式和优化策略方面都有独特的要求。

文本识别模型

识别模型导出路径

文本识别模型根据其架构类型需要不同的输入规范和字符字典处理。

来源: ppocr/utils/export_model.py194-307 ppocr/utils/export_model.py432-471

文档理解模型

文档理解导出配置

文档理解模型需要复杂的、多模态的输入规范和专门的预处理配置。

来源: ppocr/utils/export_model.py309-330 ppocr/utils/export_model.py267-307

导出标志和运行时优化

导出系统在代码库中广泛使用 is_export 标志来启用与训练行为不同的、特定于部署的优化。

导出标志传播

导出标志对模型组件的影响

导出标志会跨不同模型组件触发优化,从而实现静态操作模式和优化推理路径。

来源: ppocr/modeling/backbones/rec_resnetv2.py88-135 ppocr/modeling/heads/rec_latexocr_head.py277-285

Padding 优化

导出系统包含了专门的 Padding 函数,可在推理过程中更有效地处理动态形状。

组件训练模式导出模式
StdConv2dSamepad_same()pad_same_export()
MaxPool2dSame动态 Padding带张量的静态 Padding
注意力机制动态掩码静态掩码操作

来源: ppocr/modeling/backbones/rec_resnetv2.py279-299 ppocr/modeling/backbones/rec_resnetv2.py302-314

推理配置生成

dump_infer_config() 函数生成 YAML 配置文件,这些文件为导出的模型指定了预处理、后处理和部署参数。

推理配置组件

推理配置包括预处理变换、后处理参数、字符字典和硬件加速设置。

动态形状配置

系统根据模型算法和预期的部署场景自动生成适当的动态形状配置。

来源: ppocr/utils/export_model.py41-166 ppocr/utils/export_model.py53-108

PIR 和遗留 IR 支持

PaddleOCR 同时支持新的 PIR(Program Intermediate Representation)和遗留 IR 系统,可根据 PaddlePaddle 版本和环境标志自动选择。

IR 系统选择逻辑

导出系统根据 PaddlePaddle 版本和配置标志自动选择合适的中间表示。

来源: ppocr/utils/export_model.py388-404

与训练系统的集成

导出功能通过 apply_to_static() 函数与训练系统集成,该函数支持算法的静态图训练。

训练时静态转换

训练时静态图转换

系统支持特定算法的静态图训练,需要预定义的输入形状和序列长度。

来源: ppocr/modeling/architectures/__init__.py38-145