Files
openmlsys-zh/chapter_introduction/components_of_machine_learning_systems.md
2022-03-20 10:07:32 +08:00

3.2 KiB
Raw Permalink Blame History

机器学习系统基本组成

为了达到上述设计目标,一个现代的机器学习框架往往具有如 :numref:framework_architecture所示的基本架构。

机器学习框架基本构成 :width:600px 🏷️framework_architecture

  • 编程接口: 一个机器学习框架面向用户的编程接口Programming interface需要特殊设计。编程接口提供简单易用的编程函数往往是Python从而让用户定义出各式各样的神经网络和相关的训练过程。同时编程接口要兼顾性能神经网络的执行可以调用硬件相关C和C++函数许多加速器和操作系统的编程接口。该部分的内容将在第2章展开。

  • 计算图: 用户定义的机器学习程序往往会表达成一个计算图Computational graph。这个计算图使得用户并行计算和异步执行得以实现。该部分内容将在第3章展开。

  • 计算加速器: 现代计算加速器提供了丰富的编程接口让应用来优化其相关性能。而如何高效使用计算加速器是许多机器学习框架的核心。我们将在第4章中讨论加速器的加速原理和相关使用技巧。

  • 编译器前端: 在将计算图发送到加速器执行之前机器学习框架往往会对计算图做一系列硬件无关的一系列优化这一过程被称之为编译器前端。其中核心步骤是对用户定义的神经网络训练实现自动微分。在此期间计算图会被表示为中间表达Intermediate Representation并同时应用类型系统和静态分析等一系列技术。我们将在第5章中讨论相关内容。

  • 编译器后端: 编译器前端生成的中间表达可以进一步针对硬件的特性例如说L2/L3大小指令流水线长度进行性能优化硬件算子选择内存分配。这一以硬件为核心的编译过程被称为编译器后端该部分内容将在第6章中讨论。

  • 数据处理: 机器学习框架会集成多种数据管理模块。其中包括数据预处理模块模型参数checkpoint模型可视化和训练结果可视化等。该部分内容将在第7章中讨论。

  • 模型部署: 在模型完成训练后用户需要对模型进行部署。该过程中我们会根据部署硬件的特点进行模型格式的转换针对硬件特性进行推理性能优化。同时移动硬件往往具有小内存的特点。因此大量的模型压缩技术也在部署中得到应用。这些相关内容将在第8章中讨论。

  • 分布式训练: 当模型的训练需要大量内存和算力的时候机器学习框架会提供原生的分布式执行编程接口。分布式机器学习系统已经在工业界得到大量的部署。相关内容会在第9章讨论。

除了上述核心组件以外机器学习系统作为一个依然高速发展的前沿学科还有大量的问题正在被密集研究相关的前沿问题将在本书的第10章中展开讨论。另外机器学习算法相关的理论知识是本书的预备知识本书不做深入讨论。基础的机器学习理论知识可以在附录中找到。