《机器学习系统:设计与实现》读书笔记一

最近几年一直在做算法工程的工作,对机器学习系统有所涉猎,也很感兴趣。近期发现一本开源书籍《机器学习系统:设计与实现》。去图书馆找了它的纸质版,发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇,主要涉及《第一章:导论》的内容。

机器学习分类

  • 按学习模式分
    • 监督学习
    • 无监督学习
    • 强化学习
  • 按应用领域分
    • 图像
    • 语言(nlp、语音等)
    • 智能决策

设计目标 (功能)

机器学习框架屏蔽了大量底层细节,可以帮助开发者高效、专心地开发算法应用。常见的机器学习框架包括PyTorch、TensorFlow、MXNet、PaddlePaddle、Caffe、MindSpore等。

机器学习框架应当包括以下功能:

  • 神经网络编程:支持开发不同的网络结构,并训练、部署
  • 自动微分:计算模型参数过程中需要通过梯度来逼近
  • 数据管理和处理:需要支持数据读取、存储、预处理
  • 模型训练和部署:支持SGD等模型训练加速方法,并支持把模型部署到推理设备
  • 硬件加速器:机器学习众多核心操作都可以被归纳为矩阵计算,框架需要支持调用支持矩阵加速的硬件
  • 分布式执行:为了应对单机无法承载的大模型,需要支持分布式计算

机器学习框架的基本组成原理

机器学习框架的基本架构如图:
《机器学习系统:设计与实现》读书笔记一_第1张图片
以下是每部分详细说明:

  1. 编程接口:需要提供高级语言编程接口(如Python),简化操作;需要支持低级语言编程接口(如C/C++),实现高效计算
  2. 计算图:不同编程接口需共享一个运行后端。后端会将计算过程描述为一张计算图,表示需要的算子及算子之间依赖关系
  3. 编译器前端:框架用AI编译器构建计算图,并将计算图转为硬件可以执行的程序。编译器会利用编译器前段技术对程序做分析和优化。功能主要包括实现中间表示、自动微分、类型推导、静态分析等
  4. 编译器后端和运行时:框架利用后端和运行时实现针对不同底层硬件的优化。常见优化技术包括分析硬件的L2/L3缓存大小和指令流水线长度,优化算子的选择或调度顺序
  5. 异构处理器:CPU、GPU、TPU等异构计算单元协作完成计算
  6. 数据处理:对不同数据做数据预处理,包括转为框架需要的格式、区分训练/验证/测试数据等
  7. 模型部署:在部署过程中受限于硬件资源,需支持模型压缩(主要方法包括模型转换、模型蒸馏、模型量化),并针对特定硬件平台进行算子优化。为了保证模型的安全,还需支持模型混淆。
  8. 分布式训练:分布式训练可以加速模型训练,也可以解决大模型在单一机器上无法训练的问题。常见的分布式训练方法包括:数据并行、模型并行、混合并行、流水线并行。多机写作方式包括:RPC、集合通信(Collective Communication)、参数服务器(Parameter Server)

机器学习系统生态

广义的机器学习系统生态包括实现和支持机器学习应用的各类型软硬件系统。常见系统包括:

  • 联邦学习
  • 推荐系统
  • 强化学习
  • 可解释AI
  • 机器人
  • 图学习
  • 科学计算
  • 机器学习集群调度
  • 量子计算

你可能感兴趣的:(机器学习,人工智能)