大规模端云协同智能计算(大小模型端云协同联合学习)

2024-04-16 22:36

本文主要是介绍大规模端云协同智能计算(大小模型端云协同联合学习),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文作者:上海交通大学 吴帆

0 引言

目前,许多智能技术已经走入人们的日常生活,例如交互式商品推荐、人脸识别、语音识别、体征观测、疾病诊断、智能决策等,这些智能技术在为我们生活带来极大便利的同时,也深刻改变了产业形态,推动零售、家居、交通、医疗、战备等传统行业向智能化转型。

在传统基于云服务的框架下,终端上传用户的原始数据,云服务器维持机器学习模型,得到用户输入数据后进行模型推理,然后返回推理结果给用户。用户终端就是起到采集数据和展示结果的作用。然而,传统的基于云智能的服务框架存在多种问题,首先,用户数据上传到云服务器,存在泄露用户隐私的风险;其次,数据上传、推理结果回传都会带来通信延时,影响服务响应的实时性;再有,云侧可能需要同时运行上千种不同的机器学习任务,响应亿级端设备的请求,形成了高负载服务的瓶颈。

为了突破上述云智能的瓶颈,端云协同智能新范式应运而生。端云协同智能就是力图通过将部分智能推理任务或智能推理任务的部分阶段卸载到端侧进行处理,利用端侧本地即时处理的优势,削减响应延时,降低云服务器负载;同时用户原始数据不离开本地,数据安全隐私可以得到良好的保障

端云协同不仅是一种智能推理的模式,更是一种模型进化的革新范式。阿里巴巴达摩院发布的 2022年十大科技趋势之一,就是云上大模型与端侧小模型的协同进化。其指出,超大规模预训练模型是从弱人工智能向通用人工智能的突破性探索,但其性能与能耗提升不成比例的效率问题,限制了参数规模的持续扩张。所以,人工智能研究的一个未来出路就是从大模型参数的竞赛走向大小模型协同进化。一方面,大模型可以向边端的小模型输出模型能力;另一方面,小模型负责实际的推理与执行任务,同时小模型可以再向大模型反馈模型执行成效和端侧新知识,让大模型的能力得以持续进化,从而形成一个有机演进的智能体系。中国工程院院刊也专门围绕大小模型端云协同进化,举办了名为“须弥纳于芥子”的前沿论坛,引起了产业界和学术界的广泛关注。

1 大规模端云协同学习

大规模端云协同学习从本质上讲是一种分布式机器学习范式,然而又有别于传统分布式机器学习。主要区别在于,传统分布式机器学习所使用的训练服务器性能明显强于用户终端设备,而且训练数据集经过有机切分满足独立同分布的性质,保证分布式训练的收敛性。

传统分布式机器学习主要采用数据并行和模型并行两种方式(见图 1)。对于数据量巨大的机器学习任务,可以采用数据并行的模式加速学习。

如图 1(a)所示,数据集被拆分为若干个数据子集存放在不同服务器上;同时每个服务器下载一份模型副本。各服务器基于本地数据子集训练模型,并将模型更新汇聚到参数服务器,参数服务器再周期性地重新分发最新的聚合模型,从而加速训练过程。而对于模型规模巨大、难以由单一训练服务器完成的任务,可以采用模型并行的模式来分担运算量。

如图 1(b)所示,每个训练服务器仅存放完整模型的一部分。数据则以数据流的形式在各个训练服务器间进行流转,从而逐步更新各模型的组成部分。

但是,在云上分布式机器学习中,对数据集和模型的拆分通常是随机的。这样的随机拆分在端智能场景下并不适用。
图1 传统分布式机器学习方案:有机切分数据/模型

图1 传统分布式机器学习方案:有机切分数据/模型

美国谷歌公司率先将数据并行分布式训练的想法拓展应用到资源受限的移动端设备场景,提出了Federated Learning 联合学习框架,也译作“联邦学习”。在谷歌的联合学习框架下(见图 2),用户数据遵循自然切分驻留在用户设备本地,并简单借用数据并行的思想分布式训练机器学习模型。这种方法仅适用于模型规模小的应用场景,所以谷歌利用它优化安卓键盘输入法 Gboard 的单词推荐功能,取得了不错的效果。考虑到一种语言的常用单词量大概是 1 万个左右,针对 1 万个单词嵌入向量的语言模型大小约为 1.4 MB,从而可以轻松地在端设备侧完成训练和推理。
图 2 谷歌数据并行联合学习框架

图 2 谷歌数据并行联合学习框架

然而,当模型的特征规模进一步扩大时,基于完整模型的联合学习框架将无法适用。我们在与阿里巴巴手机淘宝部门合作过程中,发现在产业级的推荐场景中,要面向10亿移动终端用户,从20亿候选商品中为其做出个性化最优推荐。支持此应用的云侧机器学习模型叫做深度兴趣网络。这个模型嵌入了 20 亿个商品标识,其规模超过 100 GB。显然,完整的深度学习网络模型无法直接部署到端侧设备上进行训练,所以简单地沿用谷歌的数据并行联合学习框架不可行。

我们团队与阿里手机淘宝部门合作的 MobiCom工作,考虑了移动端超大规模联合学习。这个工作具体考虑了一个 10 亿移动终端用户、20 亿候选商品超大规模的产业级场景,而手机淘宝应用的运行内存上限为 200 MB。

考虑到云侧模型巨大,要想在端侧进行推理,必须想办法把大模型变小。如图 3 所示,我们首先尝试了既有的模型压缩方法,包括模型剪枝、量化、知识蒸馏等方法。

模型剪枝就是通过分析评估原始模型中各个参数对于最终结果的作用和贡献,删除贡献小的、重要性低的节点与边,实现模型参数量的减少。
模型量化则是通过降低模型参数的精度,让每个参数占据的比特数更少,从而减少模型整体占用的空间。
知识蒸馏则是重新构建一个结构更加简单的学生模型,以原始的复杂模型为老师模型,通过训练让学生模型模仿老师模型的输出,从而实现模型的简化。
图 3 既有压缩模型

图 3 既有压缩模型

上述方法得到的压缩模型的准确性都没有达到预期效果。究其原因,是因为单一压缩模型无法充分刻画海量端侧设备的个性化数据特征。端侧推理都做不好,更不用说在端侧做训练了。

2 大小模型端云协同联合学习

为了解决上述问题,我们深入分析了端侧的个性化数据特征,并提出了一套大小模型端云协同的联合学习框架。

如图 4 所示,我们观察到,一个终端的数据往往只涉及到完整特征空间的一个子空间,因此该终端只需要获取其本地数据特征对应的部分模型参数(我们称之为“子模型”),就可以满足本地需求。也就是说,利用终端本地数据进行训练后,只有其映射的子模型部分的参数才会被更新。从模型切分角度来看,子模型是基于特征的模型切分。

图 4 子模型——基于特征的模型切分

图 4 子模型——基于特征的模型切分

基于上述思路,我们根据终端本地数据特征从参数服务器拉取其映射的子模型,每个终端仅需要使用其本地数据训练拉取的子模型,并提交子模型参数更新,就可以参与到端云协同模型联合学习过程,从而摆脱了对完整模型的依赖。

我们提出的子模型拆分联合学习框架,采用了自然的数据集切分和基于特征的模型切分,同时实现了数据并行和模型并行。根据数据分析,平均每个手机淘宝用户每月关注的商品数量约为 300 个,嵌入 300 个商品标识的深度兴趣网络子模型大小仅有 0.27 MB,子模型压缩比达到了 50 万分之一,远超过任何一种模型压缩算法,因此子模型可以在移动端设备上高效地训练和执行推理任务。

此外,如果当每个终端使用完整模型而非特征对应的子模型,联合子模型框架将会退化到传统的联合学习,因此此框架更为一般化。一般化意味用于提升联合学习效率的方案也可以应用到联合子模型学习,例如,前面提到的模型压缩不仅可以压缩全局模型,也可以压缩子模型以进一步削减开销。

考虑到子模型直接加权聚合会导致模型聚合偏差,所以我们还提出了细粒度子模型加权聚合算法,其核心思想是通过特征相关的数据量加权子模型更新,从而消除不同终端子模型错位和数据分布不均造成的聚合偏差,保证全局模型的收敛性。

此外,终端下载子模型和上传子模型更新会向不可信的协调服务器泄露其子模型位置,即泄露其数据隐私,违背了联合学习的初衷。为此,我们设计了一个子模型隐私保护机制,有机结合了安全多方并集计算、随机回答和安全聚合,从而赋予了终端对于其子模型真实位置的混淆能力,实现在不暴露子模型位置的情况下拉取和汇聚子模型。为了保护终端在子模型框架下的隐私,设计了基于安全多方集合并集计算、随机回答和安全聚合的安全协议,赋予了终端对于其子模型真实位置的抵赖性,从而保护数据隐私。其中抵赖性的强度可以用本地差分隐私进行精确地度量。此外,终端本地可以通过设置随机回答中的参数来调整隐私保护程度,从而取得隐私和效用之间良好的平衡。

我们的子模型拆分联合学习方法得到了同行的高度关注,24 位顶尖大学的教授在共同撰写的综述中表示,此方法是一个富有前景的研究方向(详细内容参见文章“Advances and Open Problems in Federated Learning”中的 4.4.4 小节)。

前面的研究成果开启了一个研究方向的大门,随之而来还有一系列问题需要解决。首当其冲的是联合学习中本地数据并不满足独立同分布的性质。各终端的模型更新会偏向各自的本地最优,导致模型聚合结果偏离全局的最优。针对这个问题,谷歌研究院的研究员 Mehryar Mohri 提出了随机受控联合均值算法(参见文章“ICML’19:SCAFFOLD:Stochastic Controlled Averaging for Federated Learning”),使用上轮梯度估计全局方向并对本地更新进行矫正,从而保障模型的收敛性。

我们进一步考虑移动终端设备间断在线带来的数据可用性差异,提出了名为联合最新均值的算法来避免全局模型聚合偏向高可用终端。核心思想是让每个终端都有一定概率被选中参与每轮联合训练,并优先选取最长时间未参与的终端;当选到的终端不在线时,则复用它最近一次提交的梯度。这个方法通过模拟异步梯度聚合消除终端间断在线造成的模型聚合偏差。对于每一轮中未参与的终端,我们会复用它们最近一次提交的梯度。这一更新形式避免了全局模型的更新偏移。我们在每轮中会优先选取最长时间未参与的终端,从而使它们的陈旧梯度得到更新。本质上来讲,此方法通过模拟异步梯度聚合消除终端设备动态可用造成的偏差。同时,从理论上证明了联合最新均值算法在非独立同分布数据集和动态可用性下的收敛性。实验结果表明,相比于联合均值算法,我们的算法将模型准确率提高了 5%(见图 5)。
图 5 模型准确率

图 5 模型准确率

我们还想知道每个终端对联合学习模型训练的贡献度,从而增强联合学习系统的透明性和可解释性。这里采用 leave-one-out 的思想度量终端对全局模型的影响,即有无某个终端参与时全局模型性能的差异。考虑到 leave-one-out 需要重新训练模型产生难以承受的开销,我们提出了基于一阶近似和链式求导法则的估计方法,规避了重新训练;同时设计了基于费希尔信息(Fisher information)的海森矩阵(Hessian matrix)近似算法,进一步削减计算开销。此外,为了削减面向非突学习任务的估计误差,还提出了层次化的模型参数数值检查与截断方法,降低面向非凸优化目标的估计误差。有了贡献度量,可以根据终端的贡献度动态调整其模型聚合权重。比如,提高高贡献终端的权重,降低低贡献终端的权重,甚至剔除搞破坏的终端。实验结果表明,本方法可以有效提升全局模型的准确率(见图 6)。
图 6 全局模型的准确率

图 6 全局模型的准确率

另外一个影响端侧训练的问题是端侧样本量少,容易产生小样本过拟合的问题。我们可以发挥端云协同的优势,以云为协调服务器,通过域迁移为终端本地增广数据特征分布相似的数据集,从而在保有终端本地模型个性化特征的前提下,规避小样本过拟合问题。

具体解决的基本思路是,针对每个终端,从云上全局数据集中筛选出与其本地数据分布相似的样本,扩充本地数据集。在具体的技术路线方面,主要采用了域迁移domain adaption)的思想。首先,以指定终端的本地数据集为目标域,云上其他终端的数据集为源域;然后,用源域数据增量式训练模型,并用目标域评估模型准确率,选取使得模型准确率提升的样本,用于扩充本地数据;最后,终端利用本地扩充数据训练模型。相比于基于云服务的机器学习,基于域迁移的数据增强方案能够降低训练数据与测试数据之间的分布偏差;相比于端上仅用本地数据训练,新方案通过扩充相似样本能够有效降低泛化误差。

3 端云协同智能系统

近年,我们和阿里巴巴手机淘宝团队紧密合作,将上述算法集成落地到其端云协同智能系统 Walle中。Walle 这个名字来源于同名电影角色,希望能够将散布在端上的海量数据利用起来,挖掘其中埋藏的瑰宝,为用户提供更高质量的服务。
Walle 端云协同智能系统支撑了阿里数十种业务,高峰时每天被调用超 2 000 亿次。系统主要包括计算容器、数据管道和部署平台,以支持端和云在机器学习算法任务的各个阶段(前处理、模型运行、后处理)密切协同。其中,计算容器为移动设备和云服务器提供跨平台、高性能的任务执行环境,并支持机器学习任务在移动 APP 上的快速迭代演进;数据管道主要涉及前处理阶段,为机器学习任务提供特征或样本输入,并支持数据在端云之间无缝流转;部署平台主要负责协调任务至端侧和云侧,保证任务的及时部署和完成。

2019 年“双十一”期间,Walle 端智能系统在手机淘宝大规模落地,覆盖主搜、信息流推荐、云主题、会场、智能 Push、红包雨、促升、直播等场景,当日共执行了 2 235 亿次调用,在大幅提升成交量总额GMV的同时,也为用户带来了更好的交互体验。除了手机淘宝外,目前Walle端智能系统也已在闲鱼、优酷、猫客、AE、CBU、零售通等 App 有成熟方案落地。

目前,我们在已有的 Walle 系统框架中,主要增加了三组模块(见图 7)。即,云上用户粒度的样本和任务管理模块;个性化样本下发和任务发布通道;端侧样本筛选和生命周期管理,以及模型训练、模型推断、模型版本控制模块。从而搭建了以数据和模型管理、云上样本下发、端上训练为核心的端云协同链路,实现了数据采集、数据增强、个性化训练三个主要功能,从根本上支撑了千人千模思想的落地应用。

图 7 端 - 通道 - 云系统模块

图 7 端 - 通道 - 云系统模块

进一步我们还把子模型拆分联合学习技术实现到低功耗嵌入式设备上,包括树莓派和 Nvidia Jetson NanoTX2,这些设备可以搭载到无人车、无人机、无人艇等设备上实现大规模分布式边缘学习。

结束语

上述是我们在端云协同联合学习方面的初步探索,后续还有很多亟待解决的挑战问题。

第一,如何设计弹性模型结构,动态适应异构终端设备的运行时环境;
第二,如何设计分布式优化算法更好地消除数据异质性带来的模型聚合偏差;
第三,如何抵御恶意终端的攻击,保障端云协同进化稳定可靠进行;
第四,期待自主可控且开源的开发环境,以促进端云协同智能系统的快速开发和大规模部署。

作者:吴帆

上海交通大学计算机科学与工程系主任、特聘教授,承担科技创新 2030-“新一代人工智能”重大项目、国家重点研发计划课题、国家自然科学基金、上海市科委项目等 20 余项,发表学术论文 200 余篇。曾获教育部自然科学一等奖、中国计算机学会科技进步一等奖、上海市计算机学会自然科学一等奖、ACM 中国新星奖、CCF-IEEE 青年科学家奖,以及7次国际学术会议论文奖。

选自《中国人工智能学会通讯》

2024年第14卷第2期

科技前沿专题

这篇关于大规模端云协同智能计算(大小模型端云协同联合学习)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910080

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]