推荐一些机器学习系统MLSys中的值得研究的方向

简介: MLsys不能算是一种方向,而是一种思路。比如对于system研究者来说,可以把ML作为我们开发的系统要适配的一种benchmark,就像transaction对于数据库、某种文件场景对于File System的意义一样。这样一想可做的空间就宽广多了

MLsys不能算是一种方向,而是一种思路。比如对于system研究者来说,可以把ML作为我们开发的系统要适配的一种benchmark,就像transaction对于数据库、某种文件场景对于File System的意义一样。这样一想可做的空间就宽广多了。

下面简单推荐一些坑比较少得方向,希望大家可以适应这个潮流。

1. 分布式机器学习(Distributed DNN Training)

这个又可以分为两个方面:from ML / system perspective。

ML

从ML的角度做,主要是发明或改进分布式训练算法,保证在分布式加速的同时,仍然能达到原来的学习效果(loss/accuracy)。因此很多工作也被投在像ICML、NIPS这种专业ML会议上。主要用到的方法包括优化(optimization)和统计学习理论(statistical learning theory)。

还有一类工作涉及到如何把单机算法改造成分布式[ch9],比如同步/异步SGD等。这里主要涉及到的问题是如何降低分布式环境下的通信开销,提高加速比。

System

还有一个就是从System的角度做。从分布式计算的角度来看,可以把相关工作分为以下几类

  1. 对于计算量太大的场景(计算并行),可以多线程/多节点并行计算,多节点共享公共的存储空间。常用的一个算法就是同步随机梯度下降(synchronous stochastic gradient descent),含义大致相当于K个(K是节点数)mini-batch SGD
  2. 对于训练数据太多,单机放不下的场景(数据并行,也是最主要的场景),需要将数据划分到多个节点上训练。每个节点先用本地的数据先训练出一个子模型,同时和其他节点保持通信(比如更新参数)以保证最终可以有效整合来自各个节点的训练结果,并得到全局的ML模型。
  3. 对于模型太大的场景,需要把模型(例如NN中的不同层)划分到不同节点上进行训练。此时不同节点之间可能需要频繁的sync。这个叫做模型并行。
  4. Pipeline Parallelism:这是去年(SOSP19 PipeDream)才出现的概念。Pipeline Parallelism相当于把数据并行和模型并行结合起来,把数据划分成多个chunk,也把训练模型的过程分成了Forward Pass和Backward Pass两个stage。然后用流水线的思想进行计算。

大致涉及以下几个点:

  • 分布式ML系统设计
  • Edge Computing
  • 大量计算资源的Scheduling / device placement
  • communication相关

2. 深度学习模型压缩/加速

对DL model进行压缩主要考虑两个角度:减少计算量(例如conv层的计算量) / 内存占用(NN的参数数量)。不仅要考虑ML上的metric,也要考虑system层面的performance(例如latency / throughput / 功耗。有时候这些比ML模型的accuracy还重要)

2.1 通过Quantized(量化)降低计算精度要求

量化的含义是将卷积层(the weights and / or activations of a CNN)通常要用到的32位浮点数用更低位的数来表示,如int32, int16, int8等等,来降低资源占用(float32无论是计算还是存储都是很吃资源的..)。量化之后无疑会损失一部分精度,但神经网络对噪声并不是特别敏感,因此控制好量化的程度之后对ML任务的影响可以很小。

2.2 新硬件 / DL Acclerator

在纯硬件方面针对DL workload的工作也有很多,这里来看几个parallel相关的技术。最近Data-Level Parallelism不仅在深度学习中,在其他一些领域(比如数据库)也有了越来越多的应用。

CPU、SIMD、VLIW、GPU、系统结构、专用硬件等。

2.3 矩阵算子优化

神经网络中的很多运算本质上就是对矩阵运算,因此可以用一些矩阵乘法优化方案来加速。

3. 深度学习框架/系统设计

和Distributed Training的区别是这里更关注一些工程上的东西(框架设计、API设计等等)

几个关键要素:

  • 支持各种算子(op) 和 tensor (data)
  • 计算图的定义方式(动态 v.s. 静态)
  • Auto Diff
  • Optimizer(例如Adam)
  • 各种加速和优化的库:cudnn, openblas,mkl等

4. 用ML优化传统的system问题

用ML去优化一个传统system问题中,一些需要人工经验调整、或者说可以从历史情况learn到一些东西的模块。比如数据库参数操作系统页表数据库索引等等。一个模块可以被ML化的前提是它必须是empirical的,参考它在页表(OS的工作集原理)、数据库(DBA是个很吃经验的活...)中的应用。

基本就这4个方向,如果想做这些东西,需要掌握一定基础知识点才能更好的入门及应用。

  • 工程基础:C/C++、OO programming。阅读源码是个很好的学习方式
  • OS
  • 分布式系统
  • 编译原理。特别是编译器优化技术、LLVM、memory optimization。Parser之类不喜欢也可以不看
  • Computer Architecture。另外还需要了解:1.GPU架构,例如显存分配机制、CPU与GPU交互。 2.CPU、存储系统相关的新技术。 3.有条件可以了解下深度学习专用硬件。
  • 常见的并行计算框架,例如MPI/OpenMP/CUDA
  • 机器学习基础
  • 常见的分布式机器学习算法、DL模型压缩、模型加速方法(根据具体方向而定)

这里需要注意的是,如果想研究的比较有深度,有时间多阅读一下别人的源码,比较有利于个人能力的提升,多动手记的比较牢靠一点。

机器学习是个很大的领域,也是个很成功的领域:从纯学术角度来说,这个领域“坑”大,维度很广,不管是算法、理论,还是模型、系统,有非常多值得探索和研究的问题;从工业应用来说,这个领域相比其他某些领域与工业和实际应用贴的更近,所以这个领域的成果相比其他一些领域也更容易被部署到开发过程和产品中。

机器学习是一个多维度(multi-dimensional)的研究领域,也是一个跨领域(cross-domain)的研究领域,上到理论证明,算法设计,下到模型设计、应用、系统设计和研究。

这种学习如果想出成果,还是离不开老师和同事们的协助,有那种氛围比较容易解决问题,不用自己一个人钻牛角尖,这里有一些名校及比较好的老师推荐一下:

牛X的名校

北美:业界当然是Google Brain和MSR最有影响力。CMU的Catalyst,除了大家比较熟悉的陈天奇(TVM,XGBoost,MXNet),Zhihao Jia的研究也很promising(TASO),另外两位senior的老师都已经很有名了。

欧洲:MSR Cambridge。ETH Systems Group几位AP做MLSys,拓展宽一些的话,Arch背景的Onur Mutlu和HPC背景的Torsten Hoefler都很厉害有MLSys的项目。PARSA at EPFL。德国马普所软件系统所MPI-SWS实力也很强。


国内:工业界里面MSRA的系统和网络组可能是做的最好的,字节、阿里、亚马逊ASAIL也都在特定领域里面有一些影响。

硬核的老师

1.UTK,Jack Dongarra的ICL。代表作大家耳熟能详,起草了BLAS,LAPACK,open MPI。包括大家今天以dag为基础的tensorflow,其实icl早就有相应的包给大规模hpc系统了(PARSEC,类似还有斯坦福的legion)。这个实验室,发paper一般,学校一般,但是做东西极其底层和硬核,一直是我非常尊敬的实验室之一。

2.Berkeley James Demmel和他在新加坡国大的学生You Yang。James做的比较偏算法一些,最近几年跟尤洋弄大batch分布式机器学习挺火热的。

3.斯坦福的keith winstein。serverless computing那些应用做的非常有意思.


找到有相近价值观的人共同推动这个领域的发展,因为现在机器学习已经不单单是个算法问题,很多创新横跨算法系统乃至结合硬件设计,那么有不少好工作很容易在各自领域遭遇敌意。比如系统领域喜欢改变领域mindset的相对通用的topic,对于前沿算法带来的新系统设计带着偏见;


对于比较喜欢ML的同学,我还是比较推荐大家可以考虑使用已有的系统提升各种ML算法,非深度学习算法是个性价比很高的事情,因为这个方向对于很多工业界都有很重要的里程碑意义,主要是因为这个东西做的人比较少,毕竟它不仅仅需要了解一些系统知识,更重要的你需要对机器学习算法的深刻理解。最后祝大家都能学有所成,乘风破浪。

本期内容就分享到这里,我们下期见!

目录
相关文章
|
人工智能 自然语言处理 安全
通过阿里云Milvus与PAI搭建高效的检索增强对话系统
阿里云向量检索Milvus版是一款全托管的云服务,兼容开源Milvus并支持无缝迁移。它提供大规模AI向量数据的相似性检索服务,具备易用性、可用性、安全性和低成本等优势,适用于多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等场景。用户可通过PAI平台部署RAG系统,创建和配置Milvus实例,并利用Attu工具进行可视化操作,快速开发和部署应用。使用前需确保Milvus实例和PAI在相同地域,并完成相关配置与开通服务。
|
11月前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
931 46
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
1175 4
|
存储 人工智能 自然语言处理
基于QwQ-32B+Hologres+PAI搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于QwQ大模型的RAG服务,并关联Hologres引擎实例。Hologres与达摩院自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时、简单易用的向量计算能力。通过PAI-EAS,用户可以一键部署集成大语言模型(LLM)和检索增强生成(RAG)技术的对话系统服务,显著缩短部署时间并提升问答质量。具体步骤包括准备Hologres向量检索库、部署RAG服务、通过WebUI页面进行模型推理验证及API调用验证。Hologres支持高性能向量计算,适用于复杂任务的动态决策,帮助克服大模型在领域知识局限、信息更新滞后和误导性输出等方面的挑战。
|
人工智能 自然语言处理 API
Hologres × PAI × DeepSeek 搭建 RAG 检索增强对话系统
本文介绍如何使用PAI-EAS部署基于DeepSeek大模型的RAG(检索增强生成)服务,并关联Hologres引擎实例。Hologres与阿里云自研高性能向量计算软件库Proxima深度整合,支持高性能、低延时的向量计算能力。通过PAI-EAS,用户可以一键部署集成了大语言模型和RAG技术的对话系统服务,显著缩短部署时间,并提高问答质量。部署步骤包括准备Hologres向量检索库、部署基于DeepSeek的RAG服务、通过WebUI进行模型推理验证,以及通过API调用进行模型推理验证。Hologres还提供了特色功能支持,如高性能向量计算等。
|
人工智能 自然语言处理 安全
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统
382 0
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
882 4
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
538 1
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
727 5
|
机器学习/深度学习
自动化机器学习研究MLR-Copilot:利用大型语言模型进行研究加速
【10月更文挑战第21天】在科技快速发展的背景下,机器学习研究面临诸多挑战。为提高研究效率,研究人员提出了MLR-Copilot系统框架,利用大型语言模型(LLM)自动生成和实施研究想法。该框架分为研究想法生成、实验实施和实施执行三个阶段,通过自动化流程显著提升研究生产力。实验结果显示,MLR-Copilot能够生成高质量的假设和实验计划,并显著提高任务性能。然而,该系统仍需大量计算资源和人类监督。
316 4