分布式机器学习:同步并行SGD算法的实现与复杂度分析

分布式机器学习:算法、理论与实践 分布式机器学习笔记 刘铁岩老师出的新书《分布式机器学习:算法、理论与实践》中摘录了一些笔记,总体来说这本书偏向综述,给出了大量的参考文献,可供后续进一步学习 数据与模型并行 数据并行 数据样本切分方式 随机采样(有放回) 优点:满足局部数据与原始数据是独立同分布 缺点:1)数据量大时全局采样复杂度比较高2)少量出现的样本有可能 置乱切分(无放回) ... 阅读详情

1 分布式机器学习概述

大规模机器学习训练常面临计算量大、训练数据大(单机存不下)、模型规模大的问题,对此分布式机器学习是一个很好的解决方案。

1)对于计算量大的问题,分布式多机并行运算可以基本解决。不过需要与传统HPC中的共享内存式的多线程并行运算(如OpenMP)以及CPU-GPU计算架构做区分,这两种单机的计算模式我们一般称为 计算并行 )。

2)对于训练数据大的问题,需要将数据进行划分并分配到多个工作节点(Worker)上进行训练,这种技巧一般被称为 数据并行 。每个工作节点会根据局部数据训练出一个本地模型,并且会按照一定的规律和其他工作节点进行通信(通信内容主要是本地模型参数或者参数更新),以保证最终可以有效整合来自各个工作节点的训练结果并得到全局的机器学习模型。

如果是训练数据的样本量比较大,则需要对数据按照样本进行划分,我们称之为“数据样本划分”,按实现方法可分为“随机采样法”和“置乱切分法”。样本划分的合理性在于机器学习中的经验风险函数关于样本是可分的,我们将每个子集上的局部梯度平均,仍可得到整个经验风险函数的梯度。

如果训练数据的维度较高,还可对数据按照维度进行划分,我们称之为“数据维度划分”。它相较数据样本划分而言,与模型性质和优化方法的耦合度更高。如神经网络中各维度高度耦合,就难以采用此方式。不过,决策树对维度的处理相对独立可分,将数据按维度划分后,各节点可独立计算局部维度子集中具有最优信息增益的维度,然后进行汇总。此外,在线性模型中,模型参数与数据维度是一一对应的,故数据维度划分常与下面提到的模型并行相互结合。

3)对于模型规模大的问题,则需要对模型进行划分,并且分配到不同的工作节点上进行训练,这种技巧一般被称为 模型并行 。与数据并行不同,模型并行的框架下各个子模型之间的依赖关系非常强,因为某个子模型的输出可能是另外一个子模型的输入,如果不进行中间计算结果的通信,则无法完成整个模型训练。因此,一般而言,模型并行相比数据并行对通信的要求更高。

这里提一下数据样本划分中的几种划分方式。给定 \(n\) 个 \(d\) 维样本和 \(K\) 个工作节点,数据样本划分需要完成的任务是将 \(n\) 个样本以某种形式分配到 \(K\) 个工作节点上。

随机采样法中我们独立同分布地从 \(n\) 个样本中有放回随机采样,每抽取一个样本将其分配到一个工作节点上。这个过程等价于先随机采 \(n\) 个样本,然后均等地划分为 \(K\) 份。

随机采样法便于理论分析,但基于实现难度的考虑,在工程中更多采用的是基于置乱切分的划分方法。即现将 \(n\) 个样本随机置乱,再把数据均等地切分为 \(K\) 份,再分配到 \(K\) 个节点上进行训练。置乱切分相当于无放回采样,每个样本都会出现在某个工作节点上,每个工作节点的本地数据没有重复,故训练数据的信息量一般会更大。我们下面的划分方式都默认采取置乱切分的方法。

我们在后面的博客中会依次介绍针对数据并行和模型并行设计的各种分布式算法。本篇文章我们先看数据并行中最常用的同步并行SGD算法(也称SSGD)是如何在Spark平台上实现的。

2 同步并行SGD算法描述与实现

SSGD [1] 对应的伪代码可以表述如下:

其中,SSGD算法每次依据来自 \(K\) 个不同的工作节点上的样本的梯度来更新模型,设每个工作节点上的小批量大小为 \(b\) ,则该算法等价于批量大小为 \(bK\)

的小批量随机梯度下降法。

我们令 \(f\) 为逻辑回归问题的正则化经验风险。设 \(w\) 为权值(最后一维为偏置),样本总

分布式机器学习中的拜占庭容错:Krum算法实战解析与代码实现 本文深入解析了分布式机器学习中应对拜占庭错误的Krum算法。该算法通过计算梯度间的距离并筛选最可信的更新,有效抵御恶意节点攻击,保障训练鲁棒性。文章详细阐述了其核心思想、理论假设,并提供了完整的PyTorch代码实现与模拟示例,为构建安全的分布式学习系统提供了实用方案。 阅读详情

相关推荐

A Convergence Analysis of Distributed SGD with Communication-Efficient Gradient Sparsification 论文阅读

1 Introduction 随机梯度下降的更新流程为 其中x∈Rnx\in \mathbb{R}^nx∈Rn为模型参数,我们可以给定包含PPP个工作节点的集群来加快训练的过程,其中第ppp个节点计算得到的更新为Gp(xt)G^p(x_t)Gp(xt​),更新过程修改为 这种同步的随机梯度下降算法称为S-SGD.理想情况下训练的速度可以加快了P倍,但由于受到通信条件的限制,并不能实现这么高的速度,因此提出了梯度稀疏化来加快通信过程,更新过程修改为 考虑到不同节点的非零元素坐标可能是不一样的,因此在

sxx01的博客 658

2020机器学习硕士教育范式升级:从调参到全栈ML工程师

机器学习硕士教育已超越传统‘算法+编程’培训,演进为覆盖数学原理、算法实现与系统部署的全栈能力培养。其核心在于统计学习理论、凸优化、分布式训练框架等底层能力的扎实构建,以及MLOps、模型服务化、领域垂直应用等工业级实践的深度嵌入。这一转变源于工业界对ML系统工程师的迫切需求——如TFX流水线、Seldon Core部署、数据漂移监控等技能成为岗位标配,同时学术界在ICML等顶会中强化了生产环境问题的研究比重。典型项目如CMU MLMS、ETH数据科学、UC Berkeley MEng均采用‘理论-实践-系

culiao6493的博客 503

数据规模驱动算法选型:从复杂度分析到工程实践

在机器学习与数据科学领域,算法选型是项目成功的基石。其核心原理在于理解不同算法的时间与空间复杂度(Big O Notation)如何随数据规模(样本数N与特征数D)增长,这直接决定了方案的可行性、效率与经济性。从技术价值看,科学的选型能避免算力浪费与效果不达预期,是工程落地的关键。在应用场景上,需根据数据量级分层决策:小数据侧重模型表现与可解释性,可使用逻辑回归、SVM;中等数据关注训练效率与内存,梯度提升树(如LightGBM、XGBoost)和SGD线性模型成为主流;大数据则必须引入分布式计算框架(如S

424

联邦学习中自适应SGD算法在物理信道上的优化

联邦学习作为一种分布式机器学习范式,通过本地计算和中央聚合的方式保护数据隐私,但通信成本成为主要瓶颈。随机梯度下降(SGD)算法因其对噪声的鲁棒性,成为优化通信效率的关键技术。在物理信道上,信道噪声和硬件约束(如ADC/DAC量化误差)会影响梯度传输的准确性。本文探讨的自适应SGD算法通过随机后编码技术和尺度自适应变换,有效补偿量化偏差并利用信道噪声特性,显著降低通信成本。实验表明,该算法在高/低信噪比场景下均能保持模型精度,同时通信成本降低至18%。这一技术为联邦学习在无线通信等实际场景中的应用提供了重要

weixin_33735077的博客 441

AI人工智能深度学习算法:智能深度学习代理的分布式与同步

好的,我们开始撰写这篇技术博客文章。 AI人工智能深度学习算法:智能深度学习代理的分布式与同步 1.背景介绍 1.1 人工智能发展简介 人工智能(Artificial Intelligence,AI)是

AI天才研究院 758

spark 分布式训练原理解析

文章大纲有哪几种分布式训练方式spark 分布式训练源码解读DEMO SPARK 训练xgboost参考文献 基于spark的分布式机器学习框架都有哪些 有哪几种分布式训练方式 数据分布 模型分布 混合分布 我们来回顾一下,spark 分布式计算的原理 在分布式训练中,用于训练模型的工作负载会在多个微型处理器之间进行拆分和共享,这些处理器称为工作器节点,通过这些工作器节点并行工作以加速模型训练。 分布式训练可用于传统的 ML 模型,但更适用于计算和时间密集型任务,如用于训练深度神经网络。

shiter编写程序的艺术 2372

数据库领域 Redis 与机器学习算法的数据交互

本文系统解析Redis数据库与机器学习算法在数据交互层面的技术实现与工程实践。通过从第一性原理出发,拆解Redis内存存储模型与机器学习实时性需求的本质关联,构建"特征存储-参数缓存-推理加速"的三层交互架构。覆盖理论框架(时间复杂度分析、一致性模型)、架构设计(分布式特征库、模型热更新)、实现细节(Python优化代码、边缘处理)、实际应用(推荐系统/欺诈检测场景)及未来演化方向(向量原生支持、联邦学习集成)。为AI工程团队提供从技术选型到落地部署的全链路指导。时间维度。

2502_91592937的博客 760

HC32F460 FPU实战:从零开启硬件浮点加速

本文详细介绍了如何在HC32F460开发板上启用和优化FPU(浮点运算单元),以显著提升硬件浮点运算性能。从工程配置、关键代码修改到实战优化技巧,全面解析FPU加速的实现方法,并分享常见问题的解决方案,帮助开发者避免常见陷阱,充分发挥HC32F460的硬件潜力。

weixin_42620340的博客 350

手把手教你用STM32F103C8T6驱动CLRC663国产NFC模块(兼容A/B/F/15693卡)

本文详细介绍了如何使用STM32F103C8T6驱动国产CLRC663 NFC模块,支持ISO14443A/B、Felica和ISO15693协议。从硬件设计、协议适配到状态监控,提供完整的工程实现方案,适用于智能门锁、支付终端等应用场景。

weixin_30689307的博客 447

基于 MATLAB 的综合能源系统建模:全面解析与案例应用 

本文详细介绍了基于 MATLAB 的综合能源系统建模相关知识,包括 MATLAB 在综合能源建模中的优势、综合能源系统各组件和网络的建模方法,并通过园区综合能源系统的案例展示了从建模到优化调度求解以及结果分析的全过程。在当今全球能源格局深刻变革的背景下,综合能源系统(Integrated Energy System,IES)作为一种创新的能源供应体系,整合了多种能源形式,如电力、热力、燃气等,以实现能源的高效生产、传输、分配和利用。需要考虑燃气的压力、流量特性以及管道的阻力特性等。

qq_57128262的博客 1339

VS2022如何兼容老项目?.NET Framework 4.0/4.5安装避坑指南

本文提供了在Visual Studio 2022中兼容和维护.NET Framework 4.0/4.5等老旧项目的完整解决方案。针对VS2022无法直接识别旧框架的核心问题,文章详细剖析了原因,并重点推荐通过官方NuGet包安全获取引用程序集的方法,给出了从下载、解压到部署至标准目录的详细步骤。同时,文章还深入探讨了项目文件格式过旧、NuGet包还原失败等进阶问题的排查与解决策略,旨在帮助开发者高效、稳定地在现代开发环境中维护历史代码库。

weixin_27734811的博客 516

合成孔径雷达(SAR)的常见工作模式

随着星载SAR技术研究的深入发展,单一的条带模式已经无法满足当今时代的需求,因此许多新的工作模式相继被提出。这些新模式在分辨率和测绘宽度等方面都有所提高,接下来将简要介绍几种常用的工作模式。

m0_51390495的博客 2318

视图库对接系列(GA-T 1400)一、简单介绍

GA/T 1400《公安视频图像信息应用系统》 是我们需要参考看看的相关文档,里面有对应的标准和介绍,没有这个文档的话可以加群找我要。群的话 我放在最下面了。我们先简单想几个问题, 也就是这个协议主要干什么用的,为什么要有, 能做什么。

qq_37716298的博客 4290

RT-DETR算法优化改进:轻量级上采样CARAFE算子 | 注意力机制大作战

上采样操作CARAFE,具有感受野大、内容感知、轻量级、计算速度快等优点,引入RT-DETR二次创新;1)代替Upsample进行使用;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1267

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 一文精通HashMap灵魂七问,你学还是不学
下一篇: 一图读懂k8s informer client-go
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值