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

news2024/10/7 8:31:35

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

机器学习分类

  • 按学习模式分
    • 监督学习
    • 无监督学习
    • 强化学习
  • 按应用领域分
    • 图像
    • 语言(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.coloradmin.cn/o/870888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…

Karmada 多云容器编排引擎支持多调度组,助力成本优化

根据 Flexera 最新发布的《2023 年云现状调查报告》,在受访的750家企业中,使用多云的企业比例高达87%: 在使用多云的受访者中,排在前两位的多云挑战分别是:孤立在不同云上的应用程序和云之间的灾难恢复/故障切换。在所…

Spring源码系列:核心概念解析

前言 本文旨在为读者解析Spring源码中的关键类,以便读者在深入阅读源码时,能够了解关键类的作用和用途。在阅读Spring源码时,经常会遇到一些不熟悉的概念,了解关键类的作用可以帮助读者更好地理解这些概念。 BeanDefinition Be…

力扣:61. 旋转链表(Python3)

题目: 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 示例&…

有人真敢编,有人真敢信。

前几天发过一篇旅游小攻略 自由行的一些小tips 其实提到了一些关于泰国的话题,说实话,我知道有人编泰国噶腰子的小作文,但我一直以为只有一小撮人会信这种,然后从知乎上发现,挺让人无语的,什么去泰国被绑架…

运维监控学习笔记5

Linux的内存是虚拟内存,是物理内存和交换分区swap。 内存: 页:4K, 硬盘:块。 寻址: 空间:内存的合并。大页内存。 free命令: [rootvm1 ~]# free -htotal used fre…

AI项目一:mediapipe测试

若该文为原创文章,转载请注明原文出处。 一. 引言 MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 YouTube、Google Lens、ARCore、Google Home 以及 Nest,都已深度整合了…

自我介绍的重要性:留下深刻的第一印象

标题:自我介绍的重要性:留下深刻的第一印象 摘要: 自我介绍是我们在社交和职业场合中常常需要面对的一项任务。一个出色的自我介绍可以帮助我们在短时间内给他人留下深刻的第一印象,从而建立良好的人际关系和职业机会。本论文旨在…

Java多线程(4)---死锁和Synchronized加锁流程

目录 前言 一.synchronized 1.1概念 1.2Synchronized是什么锁? 1.3Synchronized加锁工作过程 1.4其他优化操作 二.死锁 2.1什么是死锁 2.2死锁的几个经典场景 2.3死锁产生的条件 2.4如何解决死锁 🎁个人主页:tq02的博客_CSDN博客…

19-求正数数组的最小不可组成和

题目 给定一个全是正数的数组arr,定义一下arr的最小不可组成和的概念: arr的所有非空子集中,把每个子集内的所有元素加起来会出现很多的值,其中最小的记为min,最大的记为max;在区间[min,max]上&#xff0…

腾讯云香港服务器租用_2核2G20M_2核4G30M

腾讯云香港服务器租用费用表,目前中国香港地域轻量应用服务器可选配置2核2G20M、2核2G30M、2核4G30M,操作系统可选Windows和Linux,不只是香港云服务器,新加坡、硅谷、法兰克福和东京服务器均有活动,腾讯云服务器网分享…

c语言每日一练(6)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

Stephen Wolfram:意义空间和语义运动规律

Meaning Space and Semantic Laws of Motion 意义空间和语义运动规律 We discussed above that inside ChatGPT any piece of text is effectively represented by an array of numbers that we can think of as coordinates of a point in some kind of “linguistic feature …

ShardingSphere简单介绍

此文章为笔记,为阅读其他文章的感受、补充、记录、练习、汇总,非原创,感谢每个知识分享者。 文章目录 第01章 高性能架构模式1、读写分离架构2、数据库分片架构2.1、垂直分片2.2、水平分片 3、读写分离和数据分片架构4、实现方式4.1、程序代…

智能与本体

世界的本体是一个复杂而广泛的话题,可以根据不同的学科、思想体系和信仰背景来进行不同的解释和理解。它涉及到人类对于现实和存在的思考,以及对于世界本质的追寻和探索。 在哲学上,世界的本体指的是存在的实质或基本特征。它探讨了世界的本源…

Android14操作系统全新功能发布,允许用户撤销全屏权限

最新发布的Android 14操作系统带来了一系列全新功能和改进,其中之一是新增了选项,让用户能够撤销应用的全屏权限。这样一来,用户可以阻止一些应用在全屏模式下隐藏状态栏和导航栏,从而更方便地查看时间、电量和其他信息。 此外&a…

Go项目初始化不再困扰你:gonew全方位解析

近日,Go官博介绍了一个名为gonew的新工具[1]。该工具支持基于go project template clone并创建一个属于你的Go项目。gonew工具的引入大幅简化了Go项目的创建,同时由于对自定义项目模板的支持,也可以提高Go项目的标准化水平。gonew工具刚刚被放…

Java程序猿搬砖笔记(十六)

文章目录 狂神说-Elasticsearch 7.6入门学习笔记Windows Elasticsearch IK分词器插件启动报错Elasticsearch的ik分词器自定义字典myDict.dic的编码格式需要为UTF-8,否则无效Elasticsearch使用term查询无数据返回的原因Elasticsearch如果没给映射,字段默认使用standa…

k8s node 误删除了如何自动创建 csr重新加入集群

worker node 节点当部署晚 kubelet、kube-proxy就会加入集群,如何加入呢, [rootkube-node01 ssl]# mv kubelet-client-2023-08-13-01-19-00.pem kubelet-client-current.pem kubelet.crt kubelet.key /tmp/kubelet [rootkube-node01 ssl]# systemctl da…

使用LSH 进行特征提取

局部敏感哈希(LSH)通常用于近似最近邻算法(ANN) 操作(向量搜索)。LSH的特性也可以在以矢量为输入的神经网络模型中得到利用(例如,各种的音频、视频和文本嵌入等内容信号)。 通常情况下,特定领域模型中输入的流形是复杂的(非i. i. d&#xff…