我是半路出家开始做一点麻辣系统的(mlsys)的。熟悉我的朋友知道,我的主攻方向是数据算法,比如异常检测、集成学习等。
因此我一直比较在意的是如何用系统的方法加速现有的数据挖掘算法...也就是system for ML(当然与之对应的还有ML for system,主要是用ML的方法来解决系统里面的问题)。
我的故事挺有意思的,或许对出身ML但想做点MLsys有点启发(或许没有)。太长不看的话,我认为考虑如何用已有的(软件、硬件)系统来提升传统机器学习算法,尤其是非深度学习算法是个性价比很高的事情。欲知详情,请接着往下看。
18年的时候我发现异常检测这么个重要领域连个Python工具库都没有,都没法调包。于是写了PyOD,结果是意外也是注定的得到了不少关注,现在被下载了400万次和5000 GitHub star,还水了个JMLR小短文贡献了不少引用。但值得注意的是,这个虽然有些系统优化,但本质还是好的软件设计和写代码,不算研究。
19年的时候我刚开始读博,课程上做了个项目,就是考虑怎么加速PyOD,快速的在CPU上训练大量的异常检测模型。而阴差阳错的,我竟然使用了一些系统的方法来解决这个问题,虽然都是比较直观和非底层的优化。比如在并行训练的时候,平衡任务的调度,这样每个子进程可以几乎同时完成等。又比如对数据进行降维,比如对一些训练好的模型进行蒸馏。20年做完这个叫做SUOD的系统投了出去,初出茅庐的新手运气让这个工作被MLsys’21接收了(Accelerating Large-Scale Unsupervised Heterogeneous Outlier Detection)。但必须承认的是,这个工作还很浅,但的确帮助了我自学入门。似乎是冥冥中的一种缘分。
21年我上了Tianqi Chen的machine learning system课程(15-884 | Home),读了更多相关文章。20年底刚好搭讪了Zhihao Jia,于是又开始了一段新的旅程。他给我看了微软OSDI‘20上的一篇文章,里面介绍了一个系统hummingbird (HB)(https://www.usenix.org/conference/osdi20/presentation/nakandala),简单来说HB这个系统可以把像scikit-learn上面训练的CPU模型编译成tensor operation,这样就可以用GPU加速了!而编译完的程序可以在像PyTorch这样的成熟系统上部署,直接就能用。
用GPU加速各种传统算法(非深度学习的),比如异常检测!这个点子让我眼前一亮,因为PyOD和SUOD都是基于CPU的,因此速度都不快,也很难扩展(scale out)。
退一步说,为什么现在是使用GPU来解决传统ML问题的好时间?首先GPU成本降下来了(现在不好买是因为市场),性能比CPU在解决ML问题上(尤其是基于tensor运算的)强很多。第二是软件生态成熟。在PyTorch和TensorFlow的加持下,我们不需要自己写cuda,可以直接调用,难度低了很多。第三还是基于成熟的框架,我们可以很简单的扩展到多张卡上(虽然多卡的效率会因为communication而有所损失)。
相当于从CPU迁移到GPU可以同时提供「加速」和「扩展」,且不用费心写CUDA。这岂不是一石二鸟?
在这个基础上,很多传统的ML算法,比如聚类、异常检测,甚至分类算法都可以被GPU通用加速了。于是我们最近提出了首个支持多种算法(如LOF, kNN, ABOD等)的GPU异常检测系统 PyTOD。
简单来说PyTOD把大量的异常检测算法抽象成了8个张量算子(tensor operators),相当于一种编译,并针对GPU进行深度优化,具体技术包括automatic batching, provable quantization等。因此虽然我们只优化了8个模块(下图最下面一行),但可以加速(无数个)异常检测算法,甚至其他机器学习算法,只要能被拆解为我们的模块。更多的想法和背后的原理欢迎查看我们的arxiv预印本:https://arxiv.org/abs/2110.14007
使用最底层的8个和中间的6个深度优化模块,我们可以实现各种算法,不限于异常检测本身。比如我们可以把一个算法分解为这几个模块的组合。
与PyOD对比(基于CPU),PyTOD的速度平均快11倍,可以用1块普通GPU在1小时内完成百万样本的检测任务。现阶段我们正在逐步放出代码,具体可以查看https://github.com/yzhao062/pytod。
因此对于偏ML这边的朋友来说,考虑如何用已有系统提升各种ML算法,尤其是非深度学习算法是个性价比很高的事情。而且我认为这个方向对于工业界很多应用都是有意义的,比如业界的风控和各种检测深度学习只占了一小部分。更重要的是,这东西几乎没什么人在做。毕竟它不仅需要你了解一些系统知识,更需要你对机器学习算法的深刻理解,因此反而是low hanging fruit。
最后的最后,欢迎关注一下我们正在完善的PyTOD(GitHub - yzhao062/pytod: TOD: Tensor-based Outlier Detection)。
你不star,我不star,阿调何时能出道!
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有