前言
相信对于各位沉迷调参日益消瘦的ML学习者, 看到自己训练的模型越来越堪用, 心里总会时不时地想: 如果模型能跑在线上并提供个界面让人操作, 而不是黑乎乎的终端, 那该是多炫的事情. 且不论对外提供多厉害的服务, 即使作为演示, 显然也更高大上些. 另外, 我们还可以把一些对数据的操作封装为服务, 方便沉淀和积累, 利于提高平时的效率. 脸皮厚一点可以说, 要实现 Machine Learning as a Service, :-D.
然而, 各位ML学习者平时一般更专注与算法和模型开发, 很多时候是写各种从头跑到尾的大脚本. 要把模型部署到线上, 一开始可能觉得无从下手. 所以, 在本文, 我打算分享下一个简单的前后端分离的 Service 框架, 并一步步演示如何搭建前端, 后端, 以及通过Restful API, WebSocket/STOMP(ML常涉及前后端实时交互, 仅无状态的Restful API是不够的)和xmlRPC实现其相互间交互, 希望可以给大家提供一些参考.
本文的最终产物点击这里: www.mlaas.xyz. 前端, 后端, DB都搭在阿里云的一个ECS上(当然你页可以分开部署), 购买和备案了一个域名并解析到这台ECS. 具体使用的模块如下:
客观来说, 这个框架还是很简陋的, 模型静态部署, 控制和数据共用一个通道. 若往后精力和时间允许, 我会再一写一篇文章, 介绍并实现一个基于Spark和MaxCompute的支持在线训练, 模型动态部署, 数据/控制分离的框架.
== 未完待续 ==