Posts

Showing posts from June, 2020

机器学习系统 UW CSE 599W: Systems for ML 笔记 (上篇)

Image
这是一门由陈天奇大佬讲的机器学习系统课程,UW的网站上放出了这么课的相关信息,本文是这门课的课堂笔记。 但是UW只放出了课件和作业,所以自学起来可能比较凌乱,这里参考了各位大佬的其他材料。 知乎专栏:机器学习系统   CSE 599W:Systems for ML 课程笔记 1-6 chenfei 课程笔记 CSE 599W - Systems for ML - 辛酸阅读记录 1. 课程概览 (lecture 3) Fig1.1 课程概览 这门课,上对接的是Tensorflow, Pytorch, Caffe, MXNet这类机器学习计算框架,下对接的是CPU/显卡/手机/单片机。。。形态各异的硬件设备。 机器学习系统就处在这两者之间。 这门课程把中间地带划分成三大块: User API System Components Architecture 1.1 User API 第一层User API 指的是运算框架比如tensorflow或者pytorch之类的把运算进行封装,使得DL开发者不需要从自动求导写起,并且把用户build的模型转化成计算图(computational graph)。 Fig1.2 Logistic Regression的计算图 计算图,这个概念在接触过tensorflow以及pytorch应该或多或少听说过他俩的一个区别是tf是静态计算图,pytorch是动态计算图 Fig1.3 静态vs动态计算图 1.2 System Components 到了第二层系统组件做的事情就是对于计算图的优化。 比如说会做的有 deadcode检测,内存规划和优化,并行调度, Fig1.4 并行调度优化 1.3 Architecture 第三层就是把优化好的计算图部署到对应硬件上的操作。 现在的做法是各个厂商自己出一套对于model serving的支持,比如Intel的OpenVINO,ARM的ARM NN,NV的TensorRT等。但是各自对于计算图中算子的支持度不同,也无法迁移。 相比TensorFlow等这样的框架孱弱的Inference性能,各大设备厂商的Inference框架性能都比较不错),比如Intel的OpenVINO,ARM的ARM NN,NV的TensorRT等,但是这里面有一个问题,各大设备厂商的框架并不具备通用性,比如对训练框架模型