Machine Learning - A/B Test
A/B test 并不是机器学习独有的概念,事实上随处可见,来感受下我身上的俩例子… 前两天买了一箱咖啡,打开后大部分还依旧是喜欢的包装,但有一小部分新包装,同时收到了用户调查,问是否喜欢新包装… 还比如,老婆给做饭,掺了一些新牌子的大米,问我口感咋样… 相信你也应该能立刻联想到自己也在不知不觉中被动做了很多A/B Test… LOL
那么回到机器学习,当创建了两个模型,或者同一个但使用不同参数的模型,怎么evaluate哪个好哪个坏?这时就可以考虑使用 A/B test;可将待比较的模型同时部署,通过控制流量/traffic,来比较两个模型的实际效果;
下面一个简单例子来实际展示下A/B Test在 Machine Learning中的应用;
下面例子使用MLflow打包SKlearn模型文件,Seldon模型部署
模型训练
并不是数据科学家,算法部分直接使用官网例子,请不要见笑
先在本机Jupyter
内使用不同参数(红框)创建两个模型;
A/B TEST
下面我会将这两个模型,同时部署到Seldon
上,使用Istio
做流量分发管理;
可以看到红框处定义了,model-a 80%的traffic,model-b 20%的traffic;
now部署,稍作等待就会看到这里有2个pod,与model是1-1的;
同时,不仅是pod,service和endpoint也都一并1-1的启动了;
接下来就要看看Istio
作为Ingress
是否启用,同时traffic是否分发正确;注意,这里虽然是两个model,但公用一个 API URL;
首先我们用Postman
模拟用户的请求,先跑它个1000次;
因为要做predict
,需要参数,下面是单次预测结果;
运行的同时就可以去Istio
瞧瞧了,果然traffic是按照8-2分的,不欺我也;
万事具备,只欠evaluate了… 只是我的电脑实在不给力,这个时候歇菜…
不过最后一步就是看这两个model哪个好哪个坏了,类似与下图,只不过里面会有这两个model的数据,两种颜色哦,下次补个图…