无痛的机器学习系统入门指南(一)?

栏目: 数据库 · 发布时间: 5年前

内容简介:同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流*延伸阅读

加入极市 专业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如何优化),强化学习系统(不同的范式,不同的架构)等等。

希望大家多提意见,共同进步。

无痛的机器学习系统入门指南(一)?

*延伸阅读

点击左下角 阅读原文 ”, 即可申请加入极市 目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群, 更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流, 一起来让思想之光照的更远吧~

无痛的机器学习系统入门指南(一)?

觉得有用麻烦给个在看啦~    无痛的机器学习系统入门指南(一)?


以上所述就是小编给大家介绍的《无痛的机器学习系统入门指南(一)?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编写可维护的JavaScript

编写可维护的JavaScript

扎卡斯 / 李晶、郭凯、张散集 / 人民邮电出版社 / 2013-4 / 55.00元

《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。《编写可维护的JavaScript》内容涵盖了编码风格、编程技巧、自动化、测试等几方面,既包括具体风格和原则的介绍,也包括示例和技巧说明,最后还介绍了如何通过自动化的工具和方法来实现一致的编程风格。 《编写可维护的Ja......一起来看看 《编写可维护的JavaScript》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具