MLsys
MLSys体系庞杂,软硬兼施,在此对这个方向进行三方面的整理,包含纯硬件、纯软件、软硬结合,当与本人学习方向结合,有关CPU/GPU硬件加速内容或许为更优选。
MLSys (Machine Learning Systems) 是一个将计算机系统研究与机器学习算法研发紧密结合的前沿交叉领域。简单来说,传统的 ML 研究侧重于“设计更聪明的算法”,而 MLSys 侧重于“如何让算法在真实硬件上跑得更快、更省电、更高效”。
随着大模型参数量的爆炸式增长,单纯依赖通用处理器(CPU/GPU)已难以满足边缘侧对延迟和功耗的极致需求,因此 MLSys 正在成为连接算法模型与底层硬件的桥梁。
一、 核心概念:MLSys 在做什么?
MLSys 的核心任务通常包括以下几个维度:
- 计算效率优化:设计针对特定算子(如矩阵乘法)的专用加速器,减少内存访问(Memory Wall)和功耗(Power Wall)。
- 软硬协同设计:打破软件与硬件的边界。例如,为了适配算法,定制硬件指令集(如 RISC-V 扩展指令)或硬件架构;同时,为了利用硬件特性,对算法进行量化、剪枝等压缩。
- 系统栈集成:打通从上层应用到底层驱动的完整链路,确保模型推理在资源受限的环境(如 FPGA、嵌入式 SoC)下能平滑运行。
二、 大创的项目与 MLSys 完美契合
你的大创(底层加速器设计)与集创(场景化应用落地)其实是一个典型的 MLSys 闭环系统。你不是在单纯地写代码,而是在构建一个完整的软硬协同 AI 系统。
1. 契合点一:极致量化下的“无乘法器”设计 (算法与硬件的协同)
- MLSys 逻辑:BitNet b1.58(1.58-bit 量化)通过将权重限制为 {-1, 0, 1},将复杂的浮点乘法转化为了极其简单的加减法逻辑。
- 你的贡献:你在大创中设计的 TDPU 加速器,正是这种“无乘法器”设计在硬件层面的落地。这完全符合 MLSys 对高算力密度、低能耗硬件的极致追求,是该领域非常有价值的探索。
2. 契合点二:异构计算架构 (RISC-V + TDPU + NPU)
- MLSys 逻辑:复杂的任务需要分层处理。计算密集型算子(如线性层、卷积)交给专用硬件(TDPU/NPU),而控制流(如调度、KV Cache 管理)交给通用处理器(RISC-V/CPU)。
- 你的贡献:在集创的“路口哨兵”系统中,你采用了 CPU(任务调度)+ NPU(感知)+ FPGA/TDPU(决策) 的异构架构,这与 MLSys 领域主流的**异构 SoCs(System-on-Chips)**架构思路高度一致。
3. 契合点三:针对推理阶段的系统级优化
- MLSys 逻辑:大模型推理的 Decode 阶段通常是“访存密集型”的,KV Cache 的管理是决定性能的关键。
- 你的贡献:你在大创中明确提出了对 KV Cache 进行动态页面管理和 DMA 预取的方案,这属于 MLSys 中非常核心的内存带宽优化课题。
一、 MLSys 入门学习路径
对于已经有一定硬件和 Python 基础的你,可以将学习分为三个进阶模块:
1. 夯实基础层:理解系统与框架的边界
- 精通现代 C++ 与底层内存管理:MLSys 工程师日常离不开 C++。你需要熟练掌握指针、内存分配、多线程以及 C++11/14 的现代特性。
- 透视 PyTorch 底层:不要只停留在
loss.backward(),去了解 PyTorch 的动态计算图是如何构建的,Autograd 机制的原理,以及 Python 是如何通过 Pybind11 调用底层 C++ / CUDA 算子的。 - 推荐课程:CMU 10-414/714 (Deep Learning Systems)。这门课会带你从零手写一个迷你的 PyTorch(名为 Needle),是极佳的系统级入门课。
2. 核心技能层:掌握“加速”的利器(三选一深入)
MLSys 领域很宽,实习生不需要面面俱到,但在以下其中一个方向有深度即可:
- 并行计算与算子开发 (CUDA/Triton):学习 GPU 架构(SM、Warp、Shared Memory),手写并优化矩阵乘法(GEMM)或 Softmax 算子。
- AI 编译器 (AI Compiler):学习模型是如何从 PyTorch 代码被转换为硬件指令的。了解 ONNX 格式,学习 TVM 或 MLIR 的基本概念,知道如何做图优化(Graph Optimization)和算子融合(Operator Fusion)。
- 推荐课程:陈天奇教授的 MLC (Machine Learning Compilation) 课程,非常适合了解编译器视角下的 MLSys。
3. 部署与工程化:直击工业界痛点
- 推理框架源码:工业界极其看重落地。去研究一下
llama.cpp(完全用 C/C++ 实现的轻量级 LLM 推理)或者vLLM(大模型服务端推理框架)的源码。 - 性能调优工具:学会使用 Profiler(如 NVIDIA Nsight Systems/Compute,或者你 FPGA 上的逻辑分析仪)来定位程序的瓶颈是在计算(Compute-bound)还是访存(Memory-bound)。
二、 学习到什么程度可以去寻找实习?
工业界对 MLSys 实习生的期待不是“懂所有理论”,而是**“具备排查系统瓶颈的能力,并能动手写出高性能的高质量代码”**。当你达到以下几个标准时,就可以果断投递简历了:
【实习及格线(能拿到面试)】
- 熟悉 C++ 和 Python,能熟练进行混合编程。
- 清楚深度学习的前向与反向传播底层逻辑。
- 能够手写基础的 CUDA 算子(如实现一个带 Shared Memory 优化的矩阵乘法),或者熟悉至少一种硬件加速平台的开发流程(比如你目前的 FPGA 异构开发)。
【实习优秀线(能斩获 Offer)】
- 有完整的落地项目:比如能把一个 PyTorch 模型转换到 ONNX/TensorRT 并在边缘设备上跑通,并给出优化前后的吞吐量(Throughput)和延迟(Latency)对比。
- 具备排障能力:面对一个跑得慢的模型,知道如何用 Profiler 工具生成火焰图,找出耗时最长的 Kernel,并提出优化思路(比如算子融合或消除显存碎片)。
- 了解前沿痛点:例如深刻理解大模型推理中的 KV Cache 管理机制(PagedAttention)、量化技术(PTQ/QAT,也就是你目前在做的 1.58-bit)。