
ctcdflow代码框架
流程框架
1 |
st1=>start: ctcdflow framework |
framework概述
framework基于python的argparse的子命令方式,将各个step的任务处理进行了解耦
以下是framework下的目录架构除tools目录外其他每个目录代表ctcd流程中的某一步step,与该操作相关的所有代码文件都聚合到该目录下,每一个step作为一个插件接入到framework里。
├── engine_deploy
├── model_deploy
├── model_evaluate
├── model_predict
├── model_prepare
├── model_recycle
├── model_train
├── serving_check
└── tools
如果需要新增子命令时,只需要遵循相关的插件定义方式即可
1 |
OP_DICT = { |
然后具体到每个Step内部,代码结构如下:
├── factory.py
├── op.py
├── base
├── fm
├── lr
op.py:
其中op.py中定义了step接入framework的方式,其中包括
- 定义framwork中与该step相关的输入参数
- 定义framwork调用该step时的入口操作函数
1
2
3
4
5
6
7
8
9
10
11
12class ():
def set_argument(subparser):
subparser.add_argument('--model_name',help = "model name")
subparser.add_argument('--model_version',help= "model version")
subparser.set_defaults(func = ModelPrepareOp.run)
def run(args):
module_logger.info("args:%s" % args)
instance = ModelPrepareFactory.create(args.model_source)
instance.init(args)
instance.process()
factory.py:
因为每个step执行时,根据某些类型不一致,具体的执行流程也不一致,以上述例子为例,不同的算法对应不同的执行流程。所以在这里定义了定义了工厂类,根据入参来反射查找对应的执行类
base:
base目录下存储了通用的操作定义,所有具体执行类的基础类接口interface也在此定义;具体执行类必须继承自interface接口进行重载实现。在上述例子中fm与lr目录下即存放了具体执行子类的代码逻辑
step 操作说明
model_prepare
模型准备,在weips模式下,内部流程包括模型保存、模型转化、模型库注册等
model_evaluate
模型评估
model_deploy
模型部署




近期评论