机器学习模型一体化开发与部署实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. E
M
O
S
S
机器学习模型一体化开发与部署实践
2. MLOPS -- 模型开发部署工作流程
模型开发部署工作流程
1. 特征工程和模型训练
2. 模型测试
3. 模型部署
流程中的问题和痛点
1. 模型开发和部署代码不一致
2. 数分人员对模型无法实现E2E
3. 模型迭代周期长,扩容性差
4. 解耦模型开发和模型部署平台
3. MLFLOW四大模块
Tracking
用于记录代码/配置和结果
Model
机器学习模型的规范化描述文件
Project
模型部署文件,类似于dockerfile
Registry
模型版本跟踪和管理
4. EMOSS系统架构
5. 方案对比
MLFlow(社区版) EMOSS
模型部署 每个模型单独部署 一次部署,多次复用
单一的SOA服务入
口 无 支持, 利用SLB进行智能路由
Scale out 无 支持
性能压测 无 支持
监控和告警 无 支持
Docker发布 无 支持
A/B Testing 无 支持
6. 模型开发
开发入口统一 Jupyter Notebook+ git plugin
1. Set Mlflow Environment Variable
2. Implement class mlflow.pyfunc.PyFuncModel
3. Save model
4. Registe model
5. Local Testing
import os
os.environ["MLFLOW_S3_ENDPOINT_URL"] =
"http://xxxx.com"
os.environ["MLFLOW_TRACKING_URI"] =
"http://yyy.com"
os.environ["AWS_ACCESS_KEY_ID"] = "xxx"
os.environ["AWS_SECRET_ACCESS_KEY"] = "xxx"
os.environ['MLFLOW_TRACKING_USERNAME'] = "xxx"
os.environ['MLFLOW_TRACKING_PASSWORD'] = "xxx"
import mlflow
# Define the model class
class CustomModel(mlflow.pyfunc.PythonModel):
def __init__(self):
pass
MLFlow Server
def load_context(self, context):
pass
def predict(self, context, inputData):
return
7. 自助化测试
E
M
O
S
S
T
E
S
T
I
N
G
8. 测试结果
E
M
O
S
S
T
E
S
T
I
N
G
9. 模型注册和存储
1. 开发好的模型对象通过Mlflow Api 上传/注册
到Mlflow Server。
2. Mlflow Server 将模型的元数据保存
DB(Postgresql)中。
3. 模型对象最终存储在S3-compatible storage
(MinIO)中。
…
Notebook or IDE
Model Object
Upload/Download
Mlflow Server
Meta Data
Model Object
Storage
10. 模型服务
模型服务以RestAPI的形式向外通过模型预
测功能。
RestAPI基于FastAPI与uvicorn开发和运行。
RestAPI被打包成Docker Image。
RestAPI的打包、发布、扩容等操作都通过
Captain完成
11. 模型服务监控
12. 模型优化
业务背景/数据存储建模
1. 过滤掉不需要处理的数据。
2. 减少访问redis的次数:
3.
a) 使用mget/hget;
b) 避免重复redis key取数
c) 重新设计redis key;
模型调用参数
高效的数据处理或数据结构
1.
1. 使用numpy避免使用pandas
2. 编程优化
3. 使用线程池concurrent.futures并
BoostTree:XGBoost/LightGBM 模型
预测时候将模型启动线程数设为1:
a)
XGBoost :
model.set_param(‘nthread’,
1);
行任务
b)
LightGBM:
model.predict(row_input,**{‘n
使用线程池
um_thread’:’1’})
2.
神经网络:TensorFlow.keras 模型预测
时用的方法将predict([row_input])改为
__call__(row_input)或model(row_input)
13. Q&A
Thank you