例如模型上线,可以使用在线的统一服务接口或者是离线统一数据表来提供实时数据和T+1的离线数据。例如Python的Flask服务,或者直接用Seldon,kserve等模型发布服务。或者是hive计算离线数据。基本可以实现一套代码通用全部场景。
参考对应的kserver代码kserve/python/xgbserver/xgbserver/model.py at master · kserve/kserve · GitHub
import pickle
class Model:
def __init__(self):
self._model = pickle.loads( open("model.pickle", "rb") )
def predict(self, X):
output = self._model(X)
return output
模型训练阶段,则可以提供可修改模型的优化配置参数文件,以及对应的训练数据和预测数据的地址,就可以复用多个场景,一套代码通用全部场景。
(
learning_rate =0.1,
n_estimators=1000,
max_depth=5,
min_child_weight=1,
gamma=0,
subsample=0.8,
colsample_bytree=0.8,
objective= 'binary:logistic',
nthread=4,
scale_pos_weight=1,
seed=27
)
特征和数据挖掘阶段,则考虑多个场景中的相同性,对共性的做代码提取,对非共性的提供可配置的文件,并且是多场景,很多特征其实是可以复用,并且不会大规模更新特征,则可以复用特征获取脚本。这个场景是可能是一个场景或者一个品牌一套特征和数据挖掘的流程,N个品牌的代码。
目标确定阶段,同样根据多个场景的相同性,开发标签模模版,例如大促是固定的 开始时间到结束时间,订单范围是限定某些特定渠道,用户范围是限定某些用户,这个就需要有很强的灵活性,例如大促一套,商品一套,门店一套,甚至不同品牌还需要各自一套逻辑,N个品牌*M个商品的代码。
参考文献
1. GitHub - kserve/kserve: Standardized Serverless ML Inference Platform on Kuberneteshttps://github.com/SeldonIO/seldon-core
2. GitHub - kserve/kserve: Standardized Serverless ML Inference Platform on Kubernetes