王益分布式机器学习讲座~Random Notes (1)

0 并行计算是什么?并行计算框架又是什么

并行计算是一种同时使用多个计算资源(如处理器、计算节点)来执行计算任务的方法。通过将计算任务分解为多个子任务,这些子任务可以同时在不同的计算资源上执行,从而实现加速计算过程并提高计算效率。

并行计算框架是一种软件工具或平台,用于管理和协调并行计算中的任务分发、数据传输、同步与通信等操作。它提供了一套编程模型和接口,以便开发者可以方便地利用并行计算资源来编写并行化的代码。常见的并行计算框架包括MPI(Message Passing Interface)、OpenMP(Open Multi-Processing)、CUDA(Compute Unified Device Architecture)等

1 为什么并行计算框架MPI无法在大数据中入流?

MPI和当时很火的MapReduce是并行计算框架的两个极端,MPI允许进程在任意一个时刻通信,非常灵活,而MapReduce在任何时候都不许通信,mapper worker或者reduce worker是无法通过写程序的方式与其他的同伙worker来通信,所有的数据交换都只是发生在mapper phase和reduce phase之间的shuffle phase的,完全由mapreduce的runtime来操作,对于用户是完全封闭的

2 算法使用MPI和MapReduce框架来进行并行的区别是什么?

几乎任何算法都可以使用MPI框架来并行,而绝大部分复杂的算法是无法套进MapReduce当中的,这是因为复杂算法要求频繁的数据交换、数据合并、不同性质的计算任务的协调运行,所以对进程通信要求高。

3 一个大的计算任务,大概是启动多少个进程?

1万到10万个进程

4 如果一个计算任务失败了,需要重做哪些操作?

所有的I/O操作、所有的通信操作(与这个进程通信的所有进程都要kill掉,然后重启,由于数据依赖,就会导致所有的进程都要kill再重启)。

5 1万个进程只要运行五分钟,基本上就会有至少一个进程挂掉,为什么会出现挂掉的情况呢?

因为优先级高的进程会直接抢占掉优先级低的进程,把资源给优先级高的先用。个人理解,如果系统资源越丰富,就越不需要这种pre-exmption,挂掉的概率就会降低。并不是因为硬件或者软件的故障造成的,是这种进程管理策略导致的必然结果。

注:一般论文中的所使用的集群都是专门针对那个特定任务的,其中所提出的优化通信的方法:平衡CPU和GPU、平衡内存和CPU、平衡网卡和磁盘等在实际情况中都是不适用的,这是因为在实际的云计算平台中,可能提供给你的机器资源是假的,也就是可能是一些docker container或者virtual machine,因而根本无法控制或者甚至无法得知对应的网卡的状态。

进而,所有基于这些假设的论文都是无法在工业上发挥实际价值的。

6 Scalable的机器学习系统更重要的是数据模型,还是工程技法?

是后者。Good System = Good algorithm + Good Architecture (王益认为这占据了接近90%的重要性)

7 长尾数据在计算机工业上为什么比一般的数据更重要?

长尾数据是指那些在统计分布中位于尾部、出现频率较低的数据。
在这里插入图片描述

在计算机工业中,长尾数据比一般的数据更重要的原因有以下几个:

潜在商机: 长尾数据可能包含一些独特的、非传统的需求和市场机会。通过挖掘长尾数据,企业可以发现新的产品、服务和市场细分,从而提供更有针对性的解决方案。

个性化和定制化产品: 长尾数据的出现频率较低意味着个体间存在差异性。通过深入了解长尾数据,企业可以更好地理解不同用户的需求和偏好,从而提供个性化和定制化的产品和服务。

创新和发展: 长尾数据可能包含独特的洞察和研究价值,涉及新的技术、概念或想法。通过研究和分析长尾数据,企业可以获得新的思路和灵感,从而推动创新和发展。

8 分布式操作系统和分布式计算框架有什么区别和联系?有哪些分布式操作系统?有哪些分布式计算框架?

区别:分布式操作系统:主要关注整个分布式系统的资源管理、进程调度和通信等方面,提供了一个统一的操作系 统接口;分布式计算框架则:更注重于分布式计算的任务调度、数据分发和结果整合等方面;

依赖关系:分布式计算框架需要基于分布式操作系统来提供底层的资源管理和调度功能。

操作系统有:

Google的Google File System(GFS)和Google的Bigtable:这两个系统构成了Google的分布式基础架构。
Apache Hadoop和Apache Mesos:这些系统提供了分布式文件系统、资源管理和任务调度等功能。

计算框架有:

Apache Spark:一个快速的通用分布式计算系统,支持内存计算和大规模数据处理。
Apache Hadoop MapReduce:一个基于分布式文件系统的计算模型,适合大规模数据处理。
Apache Flink:一个分布式流处理和批处理计算框架,支持容错和低延迟处理。

9 构建大规模机器学习系统中遇到的Pitfall有哪些?

在这里插入图片描述
1)一般所认为的数据噪音就包含了长尾数据,但是长尾数据其实是有很多价值的,去掉之后数据其实失去了完整性和实际性

2)论文中的数据模型基本上是建立在这样的一个数据分布假设上**(指数族分布):高斯钟形分布 和 拉普拉斯分布(双指数分布)**,而没有考虑长尾数据

例子1:SBD(Singular Bounded Decomposition)是一种矩阵分解算法,看上去不涉及概率问题,但是其其实是要求输入数据要满足高斯分布,不然分解结果中的component就是无用且混乱的principal component

例子2:广告系统的广告点击率模型最常见的是Logistic Regression, 其目标函数是:
在这里插入图片描述
将预测出来的概率值和对应的label(0或者1)求距离,距离之和最小为优化的目标;此时频率出现高的数据对该目标优化的方向有着更大的影响,长尾数据对参数的优化影响较小,所以模型没法针对长尾数据进行相应的调整

4)现在很多的并行计算框架比如Spark希望能够保证两边的好处,既能支持各种复杂的算法,也能支持fault recovery,但是其实也同时获得了MPI和MapReduce两边的坏处

Pregel是一种图计算框架,用于并行处理大规模图数据,它是由Google提出的,用于分布式计算的系统。它处理fault recovery的方法是:每隔一段时间出现一个server process stack,所有进程把这段时间接收到的信息都在磁盘上checkpoint一个版本,这样的话虽然依旧需要重启所有的进程,但是只需要把它们拉回到最近一次的checkpoint就可以了,不用从头完全重启。这是一个很直观的很通用的彻底的方法,但是容易出现out of memory。为什么呢?如果process stack的通信量不是很大,可以把process缓冲到memory里,到时候再check in到磁盘上;但是如果通信量很大,那么这个缓冲区buffer就都会overflow了,也就是out of memory了。所以像pagerank这样通信量小的算法可以用pregel来进行并行,而像RDA这样通信量大的算法就不可以

尽量不要把分布式操作系统和集群管理系统混合在一起,就像hadoop 1.0做的那样。为什么呢?
因为混合使用可能导致功能重叠和管理冲突,进而影响系统的效率和可靠性

谷歌很多的大规模机器学习系统都专门写了一个对应的并行计算框架

8)语言的问题:Java or Python or C++的代码会很长,而分布式系统的bug本身就很难定位,非go写的程序代码更加不好定位错误了

下面这段Go代码的逻辑是:如果有100个机器,可能有5台罢工,剩下的95台机器中任何一个有结果都应该立即返回,确保用户能第一时间收到。

在这里插入图片描述
对应的javascript版本的代码是(JS不是一个低端语言,是一个有着c/c++外皮的lisp的实现,lisp是人类历史上描述能力最强的编程语言,是所有语言之母,但是它没有那么强的宏的功能):timeout和rpcResp都是callback,return这个全局变量保证了只有第一个Call的机器才能执行clearTimeout和use这两个操作;setTimeout(timeout, 1)表示在1s后才会执行timeout这个回调函数
在这里插入图片描述

10 如何平衡零碎的业务和技术上的大杀器?

在这里插入图片描述
软件服务在单机上很好卖,但是在分布式系统上不好卖,因为你需要去部署它,甚至有时候需要针对集群的特点去调试它。

框架很难适应所有的业务场景。

ML as a Platform 自动化平台,不受用户欢迎;ML as service,

11 总结:full stack knowledge

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33208.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGLM2-6B发布,位居C-Eval榜首

ChatGLM-6B自2023年3月发布以来,就已经爆火,如今6月25日,清华二代发布(ChatGLM2-6B),位居C-Eval榜单的榜首! 项目地址:https://github.com/THUDM/ChatGLM2-6B HuggingFace&#xf…

Sequential用法

目录 1.官方文档解释 1.1原文参照 1.2中文解释 2.参考代码 3.一些参考使用 3.1生成网络 3.2 感知机的实现 3.3组装网络层 1.官方文档解释 1.1原文参照 A sequential container. Modules will be added to it in the order they are passed in the constructor. A…

【书】《Python全栈测试开发》——浅谈我所理解的『自动化』测试

目录 1. 自动化测试的What and Why?1.1 What1.2 Why2. 自动化的前戏需要准备哪些必备技能?3. 自动化测试类型3.1 Web自动化测试3.1.1 自动化测试设计模式3.1.2 自动化测试驱动方式3.1.3 自动化测试框架3.2 App自动化测试3.3 接口自动化测试4. 自动化调优《Python全栈测试开发…

Springboot钉钉免密登录集成(钉钉小程序和H5微应用)

欢迎访问我的个人博客:www.ifueen.com RT,因为业务需要把我们系统集成到钉钉里面一个小程序和一个H5应用,并且在钉钉平台上面实现无感登录,用户打开我们系统后不需要再输入密码即可登录进系统,查阅文档实际操作过之后记录一下过程…

Qt6.2教程——4.QT常用控件QPushButton

一,QPushButton简介 QPushButton是Qt框架中的一种基本控件,它是用户界面中最常见和最常用的控件之一。QPushButton提供了一个可点击的按钮,用户可以通过点击按钮来触发特定的应用程序操作。比如,你可能会在一个对话框中看到"…

VMware Tools安装“保熟“技巧

网上关于如何安装VMware Tools也有很多帖子,但是基本很难对症下药。下面笔者给出两种情况,读者可根据自己概况定位自己的问题,从而进行解决。 如果读者安装操作系统时是如笔者如下截图 那么读者可参考这个解决方案 安装VMware Tools选项显示灰色的正确解…

高等数学下拾遗+与matlab结合

如何学好高等数学 高等数学是数学的一门重要分支,包括微积分、线性代数、常微分方程等内容,它是许多理工科专业的基础课程。以下是一些学好高等数学的建议: 扎实的基础知识:高等数学的内容很多,包括初等数学的一些基…

【数据库】关系型数据库与非关系型数据库解析

【数据库】关系型数据库与非关系型数据库解析 文章目录 【数据库】关系型数据库与非关系型数据库解析1. 介绍2. 关系型数据库3. 非关系型数据库4. 区别4.1 数据存储方式不同4.2 扩展方式不同4.3 对事务性的支持不同4.4 总结 参考 1. 介绍 一个通俗易懂的比喻:关系型…

哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理

哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理 哈工大计算机网络课程传输层协议详解之:流水线机制与滑动窗口协议哈工大计算机网络课程传输层协议详解之:TCP协议哈工大计算机网络课程传输层协议详解之:拥塞控制原理剖…

Postman中读取外部文件

目录 前言: 一、postman中读取外部文件的格式 二、Postman中如何导入文件 三、在Postman读取导入的数据文件 前言: 在Postman中,您可以使用"数据文件"功能来读取外部文件,如CSV、JSON或Excel文件。这使得在测试中使用…

Bootstrap CSS 概览

文章目录 Bootstrap CSS 概览HTML 5 文档类型(Doctype)移动设备优先响应式图像全局显示、排版和链接基本的全局显示排版链接样式 避免跨浏览器的不一致容器(Container)Bootstrap 浏览器/设备支持 Bootstrap CSS 概览 在这一章中&a…

成为行业风向标,亚马逊云科技近年在数据库排名逐年上升

近10年,全球数据库市场加速变革,云数据库尤其是云原生数据库成为整个数据库市场的关键变量。某种程度上,亚马逊云科技作为全球云原生数据库的领导者,具有行业风向标的价值。 近期,发生了一件对全球数据库市场具有标志性…

爬虫入门指南(4): 使用Selenium和API爬取动态网页的最佳方法

文章目录 动态网页爬取静态网页与动态网页的区别使用Selenium实现动态网页爬取Selenium 的语法及介绍Selenium简介安装和配置创建WebDriver对象页面交互操作 元素定位 等待机制页面切换和弹窗处理截图和页面信息获取关闭WebDriver对象 使用API获取动态数据未完待续.... 动态网页…

GB51309实施后对于消防应急照明和疏散指示系统在城市隧道应用中的影响

安科瑞 崔丽洁 【摘要】:应急照明和疏散指示系统被广泛运用于城市隧道、楼宇建筑、地下管廊等各个方面。当隧道这类特殊建筑内出现火灾或事故时,可靠的应急照明和疏散指示系统对于人员的安全逃生有着重要的作用。随着GB51309-2018《消防应急照明和疏散指…

java 调用 opencv 识别图片

前言 opencv 的 github 地址 opencv 官网 本文介绍如何使用 java 来调用 opencv 下载opencv opencv下载 页面根据自己电脑操作系统下载最新的安装包,我这里下载的是 4.7.0 版本。 (4.7.0 版本里的 opencv-470.jar 包是使用 jdk11 编译的&#xff0c…

JVM 常量池、即时编译与解析器、逃逸分析

一、常量池 1.1、常量池使用 的数据结构 常量池底层使用HashTable key 是字符串和长度生成的hashValue,然后再hash生成index, 改index就是key;Value是一个HashTableEntry; 1、key hashValue hash string(name, len) i…

66. 加一

LeetCode-66. 加一 1、题目描述2、解题思路3、代码实现4、解题记录 ) 1、题目描述 题目描述: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以…

【NLP】用python实现文本转语音处理

一、说明 介绍一款python调用库,离线软件包pyttsx3 API,它能够将文字转化成语音文件。Python 中有多种 API 可用于将文本转换为语音。pyttsx3 是一个非常易于使用的工具,可将输入的文本转换为音频。与其它类似的库不同,它可以离线…

单片机学习12-串口通信

目录 串口通信实验 通信的基本概念 串行通信与并行通信 异步通信与同步通信 单工、半双工与全双工通信 通信速率(比特率) 单片机串口介绍 串口通信简介 串口相关寄存器 串口工作方式 方式 0 方式 1 方式 2 和方式 3 串口的使用方法 硬件设计…

Spring相关API

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:JavaEE、Spring SpringAPI 1、继承体系2、 getBean() 1、继承体系 上述继承体系中的主要类和接口包括&#xff1…