内容简介:同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流*延伸阅读
加入极市 专业CV交流群,与 6000+来自腾讯,华为,百度,北大,清华,中科院 等名企名校视觉开发者互动交流!更有机会与 李开复老师 等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流 。 点击文末“ 阅读原文 ”立刻申请入群~
来源:知乎专栏 -- 无痛的机器学习系统
https://zhuanlan.zhihu.com/p/65242220
已获作者授权,请勿二次转载
作为一个菜鸡小透明,贾扬清大神的点赞给了我无穷的动力。站在特别普通人的角度,谈一下如何入门机器学习系统,算是对过去一年的踩坑做一个总结。
总的来看,系统就是为了落地,层出不穷、琳琅满目的机器学习(基本就是深度学习)模型逐步走向实用化,会遇到各种各样的问题,去解决这些问题,机器学习系统应运而生。
过去小一年,在GitHub总结了一个相关资源的list:
https://github.com/HuaizhengZhang/Awesome-System-for-Machine-Learning
在总结的过程中,自己重新架构了这块的知识体系(基本上站在学术圈角度,工业大佬想法肯定更落地)。首先,机器学习分为若干阶段:数据收集和标定,处理数据,特征工程,编写模型,训练模型,模型管理,模型部署,其实每个阶段都对应着一种或多种机器学习系统,另外还有一些边缘计算AI系统,强化学习系统,AI视频系统,接下来也都分别说明。最后会站在菜鸡角度阐述一些问题的看法(何种语言?如何开始?...)
数据收集和标定 - Label System
这方面的突出工作是
polygonrnn++( http://www.cs.toronto.edu/~amlan/demo/ )这种,系统、system这个概念太广,精确点儿这类工作可以称作tool,深度学习对数据的需求无穷无尽,这样的工作再多也不嫌多。
处理数据 - Data Processing System
超高速处理图像数据的Halide编译器( https://halide-lang.org/ )是这一块的佼佼者,在很多很多相关项目中都能看到他的影子。个人另一个比较喜欢的工作是weld( https://www.weld.rs/ ),使用rust编写,抽象整个data science过程中的各种数据流,高端大气上档次。其它例如modin( https://github.com/modin-project/modin ),改一行代码就能提高pandas的运行效率这样的项目很多,不一一列举了。
特征工程 - Auto-Feature-Engineering System
深度学习的端到端让这块的需求一下子不如之前那么多,很多AutoML系统都提供了相关接口,例如
h2o (https://github.com/h2oai/h2o-tutorials/tree/master/best-practices/feature-engineering) ,感觉不太火,不进一步列举了。
编写模型 - Framework
这个是概念上最容易懂,做起来难到爆,非大神无法进入的领域,caffe(贾扬清),Tensorflow(Jeff Dean),PyTorch,MxNet(李沐,陈天奇),xgboost(陈天奇),无论是推动,还是创建,有了他们,生活更简单,看看libsvm的引用,编写user-friendly的 工具 是多么的促进相关领域的发展。
训练模型-Distributed Training System
这一块和分布式系统息息相关,这一年给我的感觉是这类系统的论文数量比另外的总和都多。我个人大体将这块分成了三部分。
第一部分就是分布式训练系统,类似于
Parameter Server
(https://www.cs.cmu.edu/~muli/file/parameter_server_osdi14.pdf) ,强无敌,还有我师兄最近的work,一分半钟在imagenet上训练
alexnet (https://arxiv.org/pdf/1902.06855.pdf) ,快就完事了。
第二部分是更好的并行机制
大神Jia Zhihao的metaflow
(https://arxiv.org/pdf/1807.05358.pdf) 可以瞻仰,提供了四种并行机制,然后用扎实的代码能力进行了实现
第三部分是如何在集群上更好的调度训练任务,让整体的训练时间缩短,去年听了HKU Wuchuan老师来我们组的talk,很精彩。这篇Optimus
(https://i.cs.hku.hk/~cwu/papers/yhpeng-eurosys18.pdf) 也被伯克利的课程收录了,相关的工作也是越来越多。
管理模型 - Model DB
深度学习的管理和可复现性简直头疼,Spark大神公司的MLflow (https://www.mlflow.org) 帮你管理整个模型的周期;MIT的
modelDB( https://mitdbg.github.io/modeldb/papers/hilda_modeldb.pdf )也能帮你进行模型的版本控制。
模型部署 - Model Deployment System
这块系统关注模型的预测(inference)阶段,我大体分成了三个部分。
第一部分是model serving system,这里面的佼佼者是Tensorflow-Serving,学术圈里比较出名的是
Clipper (https://www.usenix.org/system/files/conference/nsdi17/nsdi17-crankshaw.pdf) ,但是我们团队的试用体验不是很好。
第二部分是inference optimization,提升硬件的utilization,更好的model placement来加快模型运行,和network量化是完全不同的路子,这篇Dynamic Space-Time Scheduling for GPU Inference
(http://learningsys.org/nips18/assets/papers/102CameraReadySubmissionGPU_Virtualization%20(8).pdf)
可以一看
第三部分是编译器,不提了,知乎上相关讨论挺多的,TVM(又又又是陈天奇)独领风骚,各大公司也都有相关的project了。
走马观花的挑了一些文章,可以说系统支持了机器学习的全生命周期。再来谈一下看到的比较多的问题。
如何开始?
根据自己的知识体系,选择一个最接近的,正反馈稍微快一点的子领域。选择系统就意味着无法像深度学习的小伙伴一样一年3篇+,随便打开国内外系统大神的主页,两年做一个系统说不定还发不了好会都是很正常的现象,99%的代码跟论文无关,但是必须得做,不断擦干眼泪,不断上,所以选择自己入门快的领域,能让沮丧的时间短一点。
选定了就阅读优秀的相关源代码,这个过程感觉进步特别大,系统更注重现实意义,只要有价值,咬定不放松。
选择啥语言?
C++肯定是首选,效率是系统的要务。C++不太行咋办,我看到
Rust( https://www.weld.rs/),
Go( https://github.com/kubeflow/pipelines),
Jave( https://github.com/awslabs/mxnet-model-server)
都有相关的系统实现,系统还是要发现落地的痛点,
纯Python( https://github.com/mindsdb/mindsdb )也有,想点子,干就完事了。
未完待续,下篇文章补充一些其它应用系统,例如视频分析系统(视频数据大,应用ML model如何优化),强化学习系统(不同的范式,不同的架构)等等。
希望大家多提意见,共同进步。
*延伸阅读
点击左下角 “ 阅读原文 ”, 即可申请加入极市 目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群, 更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流, 一起来让思想之光照的更远吧~
觉得有用麻烦给个在看啦~
以上所述就是小编给大家介绍的《无痛的机器学习系统入门指南(一)?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Machine Learning
Kevin Murphy / The MIT Press / 2012-9-18 / USD 90.00
Today's Web-enabled deluge of electronic data calls for automated methods of data analysis. Machine learning provides these, developing methods that can automatically detect patterns in data and then ......一起来看看 《Machine Learning》 这本书的介绍吧!