当前位置: 首页 > news >正文

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

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

机器学习分类

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

设计目标 (功能)

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

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

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

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

机器学习框架的基本架构如图:
机器学习框架基本架构
以下是每部分详细说明:

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

机器学习系统生态

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

  • 联邦学习
  • 推荐系统
  • 强化学习
  • 可解释AI
  • 机器人
  • 图学习
  • 科学计算
  • 机器学习集群调度
  • 量子计算
http://www.lryc.cn/news/121019.html

相关文章:

  • C语言单链表OJ题(较难)
  • 工业巡检ar沉浸式互动培训体验实现更加直观、生动的流程展示
  • 【Spring】核心容器——依赖自动装配
  • TestNG和Junit5测试框架梳理
  • 算法练习Day46|139.单词拆分
  • Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)
  • 82 | Python可视化篇 —— Plotly数据可视化
  • Golang 包详解以及go mod
  • 中级课程-SSRF(CSRF进阶)
  • C++命名空间
  • 阿里云服务器搭建Magento电子商务网站图文教程
  • Docker安装 Kibana
  • 数字图像处理 --- 相机的内参与外参(CV学习笔记)
  • 基于新浪微博海量用户行为数据、博文数据数据分析:包括综合指数、移动指数、PC指数三个指数
  • 金融反欺诈的应用实践
  • Win10启动Jmeter报错提示jmeter.log拒绝访问问题
  • Vue中使用Tailwind css
  • 承接各种设计
  • HTTP请求性能分析 - 简单
  • 腾讯云标准型CVM云服务器详细介绍
  • 基于DEM tif影像的插值平滑和tif纹理贴图构建方法
  • Redis_五种数据类型及操作命令
  • Mac如何打开隐藏文件中Redis的配置文件redis.conf
  • nginx+flask+uwsgi部署遇到的坑
  • vue实现pdf预览功能
  • (原创)Flutter与Native页面互相跳转
  • web集群学习--基于CentOS构建LVS-DR集群、配置nginx负载均衡
  • 基于 FPGA 的电机控制
  • STM32F429IGT6使用CubeMX配置IIC通信(AT2402芯片)
  • JS逆向系列之猿人学爬虫第14题-备而后动-勿使有变