paddlex 内部的代码设计模式

使用Registry 注册模型信息

注册和查询工具:

1
2
3
4
get_registered_model_info = MODEL_INFO_REGISTRY.query
get_registered_suite_info = SUITE_INFO_REGISTRY.query
register_model_info = MODEL_INFO_REGISTRY.register_record
register_suite_info = SUITE_INFO_REGISTRY.register_record

suite_info 会注册 model_name 关联的 model class 、config class , runner class model_info 会注册 所属的 suite_info, model_name, config_path, model 支持的 api 类型(train/eval/predict/export … )

参考代码:

使用 Metadata 机制通过继承元类实现模型类的注册

便于通过model_name 查找关联的Python 实现类

模型创建

_create_mode(model_name, config)

参考:

  1. 根据 Registry 注册的模型信息查找 模型的 config 文件地址
  2. 根据 model_name 查找 通过Metadata 机制注册的 model 实现类
  3. config + model 实现类 —> 创建类的实例