ML Sys 是说系统方向上关注机器学习这类任务的研究。虽然关注这个方向的人很多都是机器学习背景,但我个人更觉得它更多是系统上的一个子方向。所以在知识结构上,你首先得学一学系统。
大家的回答里面很好的概括了机器学习和深度学习,那我就补充一些系统的知识。
系统方向早起源自于操作系统。它的两大顶会 OSDI 和 SOSP 里面的 OS 都是指操作系统。但系统方向里面的研究风向每几年都会变化。这是因为不断的有新硬件、新任务出现。比如世纪初兴起的大数据,其中有关于存储的奠基性工作 GFS(SOSP'03),关于计算的奠基性工作 mapreduce(OSDI'04),再比如就是过去10年涌现出的机器学习系统工作,就是熟称的 ML Sys。
因此,系统方向的人也经常笑算法(例如机器学习)方向的人:你们算法搞出来后,弄不好就把自己失业了。我们就不怕,每10年硬件、任务铁定会变,系统就要重写。
你可能觉得系统工作最重要的就是码代码。不写个几千上万行代码就不能叫一个系统工作。这个也许是必要条件。但充分条件是好的接口设计。因为系统要处理特定的任务,在特定的硬件上运行,跟其他系统打交道,那么设计的核心就是边界划在哪,长什么样。需要的是设计者对复杂需求的抽象。例如 GFS 隐藏分布式存储的细节,用户只要知道 GFS 提供近似无穷的空间而且安全;mapreduce 要求所有计算要写成 map 和 reduce 的形式,然后提供近似无穷的计算能力。
所以系统追求简单但强大的抽象。简单是避免系统弄得太复杂,实现和维护困难,强大是指能满足大部分需求。
系统方向和算法方向的人的思维模式其实不一样。做算法,我们希望找到一个最好的,能一劳永逸的解决问题,例如适用所有情况,达到理论最优。但系统上,大家的经验是设计一个系统解决80%人的80%需求。对于其余的情况我们再设计一个系统。
所以系统的设计是一门艺术,跟建筑设计、绘画、摄影很类似。不像算法那样的科学,因为你的选择太多了,最后选哪个方案靠的是设计者的审美。
推荐的学习路线是多实现,多思考接口设计,多去揣摩别人优秀的工作。
我个人的经历是先在公司码了几年码,然后学了系统课程来提升品位,然后再不断做项目。
具体来说,我上过的课是十年前 Zhang Hui 老师教的 15-712 Syllabus。这门课就是带大家欣赏前人工作,有点类似艺术鉴赏。然后做过一些项目练手,包括了Parameter Server (OSDI'14) 和 MXNet。
(正如系统方向大家不断做新系统,近几年我也做其他项目去了,求不要问PS和MXNet问题)。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有