边缘分布式机器学习

目录

  • 通信机制
    • 同步Synchronous
    • 异步Asynchronous
    • 半同步/延时同步
    • 通信的拓扑结构
      • 基于迭代式MapReduce的通信(同步模式)
      • 基于MPI之AllReduce的通信(同步模式)
        • AllReduce有很多变种
      • 基于参数服务器的通信(多为异步)
  • 去中心化算法
    • D-PSGD
  • 通信频率及通信量
    • 降低通信频率
    • 降低通信时间-通信隐藏
    • 减少通信数据量:梯度压缩
      • 梯度稀疏化
      • 模型低秩化处理
      • 梯度量化
  • 总结

通信机制

同步Synchronous

在这里插入图片描述

基于同步障
步调一致,收敛性有保证
等待严重,延迟大
Bulk Synchronous Parallel

异步Asynchronous

在这里插入图片描述

基于参数服务器(或者锁)
自主步调,等待少
收敛性差

半同步/延时同步

在这里插入图片描述

Stale Synchronous
这衷平衡

通信的拓扑结构

基于迭代式MapReduce的通信(同步模式)

在这里插入图片描述

基于MPI之AllReduce的通信(同步模式)

在这里插入图片描述

AllReduce有很多变种

星形拓扑、树形拓扑、蝶形拓扑、环形拓扑
pytorch、TensorFlow和caffe2等框架都实现AllReduce/Ring-AllReduce
在这里插入图片描述

基于参数服务器的通信(多为异步)

在这里插入图片描述

去中心化算法

D-PSGD

在这里插入图片描述

通信频率及通信量

如何减少通信开销?

  • 降低通信频率:Batch训练
  • 降低通信时间:通信隐藏
  • 减少通信数据量:梯度压缩(过滤、量化)
    在这里插入图片描述

降低通信频率

由于通信间隔会导致各个机器间存在一定的不一致,对优化带来一定影响。

该方法在凸优化问题下有理论保证,但在处理神经网络等非凸模型时缺乏理论证明,往往需要超参数的设置来取得较好的训练效果。
在这里插入图片描述
在这里插入图片描述

降低通信时间-通信隐藏

非对称的推送和获取,异步推送
在参数服务器架构下,推送模型更新和获取最新的全局模型两种操作采取不同的频率
谷歌提出的第一代分布式机器学习系统DistBelief [Dean J; NIPS2012]则采用了这种方法
与增加通信间隔类似,调整推送和获取的间隔时间也会给模型训练带来一定的精度损失
在这里插入图片描述
计算和传输流水线
模型的训练和网络通信构成流水线
减少整体的训练时间开销
模型更新的延迟稍有所增加

减少通信数据量:梯度压缩

梯度稀疏化:设置闻值,过滤掉不重要的梯度更新
模型低秩化:矩阵低秩分解,不重要的参数不通信
梯度量化: 对梯度值进行量化减少bit数
在这里插入图片描述

梯度稀疏化

  • 梯度稀疏化是对模型梯度进行过滤

  • 在每次迭代只发送部分参数:

    • 固定闽值稀疏化 [Strom N.ISCA 2015]
    • TopK稀疏化[Aji A F,et al. arXiv:1704.05021]
    • Deep Gradient Compression [Lin Y, et al.arXiv:1712.01887 ]
    • GTopk稀疏化[Shaohuai Shi,et al.ICDCS 2019]
    • 基于熵的梯度稀疏化 [Di Kuang,et al.HPCC 2019]
  • 通常梯度稀疏化需要压缩率较大,需要配合相应的优化算法实现模型精度与通信效率的平衡。

在这里插入图片描述

模型低秩化处理

  • 模型低秩化处理通过低秩分解压缩参数来减少通信量。
  • 探索参数中的低秩结构: 矩阵低秩分解,将原来比较大的参数矩阵分解成几个较小的矩阵的乘积
    在这里插入图片描述
  • 精度损失、压缩与解压缩开销

梯度量化

  • 对梯度值进行量化减少bit数
  • 降低精度,显著降低通信量
  • 主要方法
    • 1bit量化[Seide F,et al.2014]
    • QSGD [Alistarh D, et al. NIPS 2017]
    • TernGrad [Wen W, et al. NIPS 2017]
      在这里插入图片描述
      在这里插入图片描述

总结

在这里插入图片描述

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

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

相关文章

傅里叶分析(1)

1 概述 傅里叶分析是信号分析中常用方法之一。傅里叶分析可将信号在时域和频域之间进行转换,从而分析信号在频域上的特点。 傅里叶分析(Fourier analysis)根据信号的时域数据特征,分为 4 个类别: 傅里叶级数&#x…

如何在 Python 中执行 MySQL 结果限制和分页查询

Python MySQL 限制结果 限制结果数量 示例 1: 获取您自己的 Python 服务器 选择 “customers” 表中的前 5 条记录: import mysql.connectormydb mysql.connector.connect(host"localhost",user"您的用户名",password"您的密码"…

基于安卓android微信小程序的物流仓储系统

项目介绍 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对物流仓储系统进行需求分析,得出物流仓储系统主要功能。接着对物流仓储系统进行总体设计和详细…

Vue.Draggable 踩坑:add 事件与 change 事件中 newIndex 字段不同之谜

背景 最近在弄自定义表单,需要拖动组件进行表单设计,所以用到了 Vue.Draggable(中文文档)。Vue.Draggable 是一款基于 Sortable.js 实现的 vue 拖拽插件,文档挺简单的,用起来也方便,但没想到接下来给我遇到了灵异事件……

PySide/PYQT如何用Qt Designer和代码来设置文字属性,如何设置文字颜色?

文章目录 📖 介绍 📖🏡 环境 🏡📒 实现方法 📒📝 Qt Designer设置📝 代码📖 介绍 📖 本人介绍如何使用Qt Designer/代码来设置字体属性(包含字体颜色) 🏡 环境 🏡 本文使用Pyside6来进行演示📒 实现方法 📒 📝 Qt Designer设置 首先打开Qt De…

如何在ModelScope社区魔搭下载所需的模型

本篇文章介绍如何在ModelScope社区下载所需的模型。 若您需要在ModelScope平台上有感兴趣的模型并希望能下载至本地,则ModelScope提供了多种下载模型的方式。 使用Library下载模型 若该模型已集成至ModelScope的Library中,则您只需要几行代码即可加载…

mysql8安装和驱动jar包下载

方式一:基于docker安装 下拉镜像 docker pull mysql:8.0.21 启动镜像 docker run -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORDhadoop -d mysql:8.0.21 启动成功后,进入容器内部拷贝配置文件,到宿主主机 docker cp mysql:/etc/mysql…

人工智能基础——图像认知与OpenCV

人工智能的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心,我为大家整理了一份600多G的学习资源,基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

pandas笔记:读写excel

1 读excel read_excel函数能够读取的格式包含:xls, xlsx, xlsm, xlsb, odf, ods 和 odt 文件扩展名。 支持读取单一sheet或几个sheet。 1.0 使用的数据 1.1 主要使用方法 pandas.read_excel(io, sheet_name0, header0, namesNone, index_colNone, usecolsNon…

pyqt环境搭建

创建虚拟环境 # 用管理员身份运行 conda create --prefixE:\Python\envs\pyqt5stu python3.6 # 激活虚拟环境 conda activate E:\Python\envs\pyqt5stu # 退出虚拟环境 conda deactivate安装包 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools…

如何用Excel软件制作最小二乘法①

一、用自带的选项(不推荐),因为感觉只是近似,虽然结果一样 1.在Excel中输入或打开要进行在excel中输入或打开要进行最小二乘法拟合的数据,如图所示。 2.按住“shift”键的同时,用鼠标左键单击以选择数据&a…

【4】Gradle-快速入门使用【Gradle多模块项目详解】

目录 【4】Gradle-快速入门使用【Gradle多模块项目详解】创建多项目构建添加子项目命名建议 项目依赖项项目路径不同模块的build.gradle配置 子项目之间共享构建逻辑公约插件跨项目配置buildSrc开发公约插件 调整多模块项目配置修改项目树的元素 了解Gralde配置时间和执行时间并…

红黑树,AVLTree树(平衡二叉树)迭代器原理讲解

红黑树,AVLTree树底层实现逻辑都是平衡二叉树(AVLTree高度平衡,红黑树以某种规则平衡),但终究不像链表的迭代器那样逻辑简单。 简单叙述以下,二叉树上面迭代器的运行逻辑,根据下面的图&#xff…

Nginx:如何实现一个域名访问多个项目

1. 背景介绍 最近在多个项目部署中遇到这样一个问题,一个域名如何实现多个项目的访问。因为不想自己单独去申请域名证书和域名配置,便想到了这个方案,结合Nginx的location功能实现了自己的需求,便记录下来。示例中是以项目演示&a…

从TCP到Socket,彻底理解网络编程是怎么回事

进行程序开发的同学,无论Web前端开发、Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程。比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而数据库连…

OpenWRT配置SFTP远程文件传输,让数据分享更安全

文章目录 前言 1. openssh-sftp-server 安装2. 安装cpolar工具3.配置SFTP远程访问4.固定远程连接地址 前言 本次教程我们将在OpenWRT上安装SFTP服务,并结合cpolar内网穿透,创建安全隧道映射22端口,实现在公网环境下远程OpenWRT SFTP&#xf…

Python之函数进阶-函数执行原理

Python之函数进阶-函数执行原理 函数执行流程 C语言中,函数的活动和栈有关。栈是后进先出的数据结构。栈是由底端向顶端生长,栈顶加入数据成为压栈、入栈、栈顶弹出数据称为出栈。 def add(x, y):r x yprint(r)return rdef main():a 1r add(a, 2)r…

ubuntu上如何移植thttpd

thttpd的特点 thttpd 是一个简单、小巧、便携、快速且安全的 HTTP 服务器。 简单: 它只处理实现 HTTP/1.1 所需的最低限度。好吧,也许比最低限度多一点。 小: 请参阅比较图表。它还具有非常小的运行时大小,因为它不会分叉并且非…

牛客网刷题笔记131111 Python实现LRU+二叉树先中后序打印+SQL并列排序

从学校步入职场一年多,已经很久没刷过题了,为后续稍微做些提前的准备,还是重新开始刷刷题。 从未做过计划表,这回倒是做了个计划表,希望能坚持吧。 刷题比较随性且量级不大,今天就写了2个算法2个sql&#x…

无需公网IP,贝锐花生壳内网穿透远程访问NAS

群晖DSM 7.0及以上版本 1.1 安装运行花生壳套件 (1)通过浏览器输入群晖NAS的内网地址,登录进去后,点击【套件中心】,搜索【花生壳】,并点击【安装套件】; (2) 勾选我接…