目前,许多智能技术已经走入人们的日常生活,例如交互式商品推荐、人脸识别、语音识别、体征观测、疾病诊断、智能决策等,这些智能技术在为我们生活带来极大便利的同时,也深刻改变了产业形态,推动零售、家居、交通、医疗、战备等传统行业向智能化转型。
在传统基于云服务的框架下,终端上传用户的原始数据,云服务器维持机器学习模型,得到用户输入数据后进行模型推理,然后返回推理结果给用户。用户终端就是起到采集数据和展示结果的作用。然而,传统的基于云智能的服务框架存在多种问题,首先,用户数据上传到云服务器,存在泄露用户隐私的风险;其次,数据上传、推理结果回传都会带来通信延时,影响服务响应的实时性;再有,云侧可能需要同时运行上千种不同的机器学习任务,响应亿级端设备的请求,形成了高负载服务的瓶颈。
为了突破上述云智能的瓶颈,端云协同智能新范式应运而生。端云协同智能就是力图通过将部分智能推理任务或智能推理任务的部分阶段卸载到端侧进行处理,利用端侧本地即时处理的优势,削减响应延时,降低云服务器负载;同时用户原始数据不离开本地,数据安全隐私可以得到良好的保障。
1大规模端云协同学习
大规模端云协同学习从本质上讲是一种分布式机器学习范式,然而又有别于传统分布式机器学习。主要区别在于,传统分布式机器学习所使用的训练服务器性能明显强于用户终端设备,而且训练数据集经过有机切分满足独立同分布的性质,保证分布式训练的收敛性。
传统分布式机器学习主要采用数据并行和模型并行两种方式(见图1)。对于数据量巨大的机器学习任务,可以采用数据并行的模式加速学习。如图1(a)所示,数据集被拆分为若干个数据子集存放在不同服务器上;同时每个服务器下载一份模型副本。各服务器基于本地数据子集训练模型,并将模型更新汇聚到参数服务器,参数服务器再周期性地重新分发最新的聚合模型,从而加速训练过程。而对于模型规模巨大、难以由单一训练服务器完成的任务,可以采用模型并行的模式来分担运算量。如图1(b)所示,每个训练服务器仅存放完整模型的一部分。数据则以数据流的形式在各个训练服务器间进行流转,从而逐步更新各模型的组成部分。但是,在云上分布式机器学习中,对数据集和模型的拆分通常是随机的。这样的随机拆分在端智能场景下并不适用。
图1传统分布式机器学习方案:有机切分数据/模型
美国谷歌公司率先将数据并行分布式训练的想法拓展应用到资源受限的移动端设备场景,提出了FederatedLearning联合学习框架,也译作“联邦学习”。在谷歌的联合学习框架下(见图2),用户数据遵循自然切分驻留在用户设备本地,并简单借用数据并行的思想分布式训练机器学习模型。这种方法仅适用于模型规模小的应用场景,所以谷歌利用它优化安卓键盘输入法Gboard的单词推荐功能,取得了不错的效果。考虑到一种语言的常用单词量大概是1万个左右,针对1万个单词嵌入向量的语言模型大小约为1.4MB,从而可以轻松地在端设备侧完成训练和推理。
图2谷歌数据并行联合学习框架
然而,当模型的特征规模进一步扩大时,基于完整模型的联合学习框架将无法适用。我们在与阿里巴巴手机淘宝部门合作过程中,发现在产业级的推荐场景中,要面向10亿移动终端用户,从20亿候选商品中为其做出个性化最优推荐。支持此应用的云侧机器学习模型叫做深度兴趣网络。这个模型嵌入了20亿个商品标识,其规模超过100GB。显然,完整的深度学习网络模型无法直接部署到端侧设备上进行训练,所以简单地沿用谷歌的数据并行联合学习框架不可行。
我们团队与阿里手机淘宝部门合作的MobiCom工作,考虑了移动端超大规模联合学习。这个工作具体考虑了一个10亿移动终端用户、20亿候选商品超大规模的产业级场景,而手机淘宝应用的运行内存上限为200MB。
考虑到云侧模型巨大,要想在端侧进行推理,必
须想办法把大模型变小。如图3所示,我们首先尝试了既有的模型压缩方法,包括模型剪枝、量化、知识蒸馏等方法。模型剪枝就是通过分析评估原始模型中各个参数对于最终结果的作用和贡献,删除贡献小的、重要性低的节点与边,实现模型参数量的减少。模型量化则是通过降低模型参数的精度,让每个参数占据的比特数更少,从而减少模型整体占用的空间。知识蒸馏则是重新构建一个结构更加简单的学生模型,以原始的复杂模型为老师模型,通过训练让学生模型模仿老师模型的输出,从而实现模型的简化。
图3既有压缩模型
上述方法得到的压缩模型的准确性都没有达到预期效果。究其原因,是因为单一压缩模型无法充分刻画海量端侧设备的个性化数据特征。端侧推理都做不好,更不用说在端侧做训练了。
2大小模型端云协同联合学习
为了解决上述问题,我们深入分析了端侧的个性化数据特征,并提出了一套大小模型端云协同的联合学习框架。
如图4所示,我们观察到,一个终端的数据往往只涉及到完整特征空间的一个子空间,因此该终端只需要获取其本地数据特征对应的部分模型参数(我们称之为“子模型”),就可以满足本地需求。也就是说,利用终端本地数据进行训练后,只有其映射的子模型部分的参数才会被更新。从模型切分角度来看,子模型是基于特征的模型切分。
图4子模型——基于特征的模型切分
基于上述思路,我们根据终端本地数据特征从参数服务器拉取其映射的子模型,每个终端仅需要使用其本地数据训练拉取的子模型,并提交子模型参数更新,就可以参与到端云协同模型联合学习过程,从而摆脱了对完整模型的依赖。
此外,如果当每个终端使用完整模型而非特征对应的子模型,联合子模型框架将会退化到传统的联合学习,因此此框架更为一般化。一般化意味用于提升联合学习效率的方案也可以应用到联合子模型学习,例如,前面提到的模型压缩不仅可以压缩全局模型,也可以压缩子模型以进一步削减开销。
此外,终端下载子模型和上传子模型更新会向不可信的协调服务器泄露其子模型位置,即泄露其数据隐私,违背了联合学习的初衷。为此,我们设计了一个子模型隐私保护机制,有机结合了安全多方并集计算、随机回答和安全聚合,从而赋予了终端对于其子模型真实位置的混淆能力,实现在不暴露子模型位置的情况下拉取和汇聚子模型。为了保护终端在子模型框架下的隐私,设计了基于安全多方集合并集计算、随机回答和安全聚合的安全协议,赋予了终端对于其子模型真实位置的抵赖性,从而保护数据隐私。其中抵赖性的强度可以用本地差分隐私进行精确地度量。此外,终端本地可以通过设置随机回答中的参数来调整隐私保护程度,从而取得隐私和效用之间良好的平衡。
图5模型准确率
我们还想知道每个终端对联合学习模型训练的贡献度,从而增强联合学习系统的透明性和可解释性。这里采用leave-one-out的思想度量终端对全局模型的影响,即有无某个终端参与时全局模型性能的差异。考虑到leave-one-out需要重新训练模型产生难以承受的开销,我们提出了基于一阶近似和链式求导法则的估计方法,规避了重新训练;同时设计了基于费希尔信息(Fisherinformation)的海森矩阵(Hessianmatrix)近似算法,进一步削减计算开销。此外,为了削减面向非突学习任务的估计误差,还提出了层次化的模型参数数值检查与截断方法,降低面向非凸优化目标的估计误差。有了贡献度量,可以根据终端的贡献度动态调整其模型聚合权重。比如,提高高贡献终端的权重,降低低贡献终端的权重,甚至剔除搞破坏的终端。实验结果表明,本方法可以有效提升全局模型的准确率(见图6)。
图6全局模型的准确率
另外一个影响端侧训练的问题是端侧样本量少,容易产生小样本过拟合的问题。我们可以发挥端云协同的优势,以云为协调服务器,通过域迁移为终端本地增广数据特征分布相似的数据集,从而在保有终端本地模型个性化特征的前提下,规避小样本过拟合问题。具体解决的基本思路是,针对每个终端,从云上全局数据集中筛选出与其本地数据分布相似的样本,扩充本地数据集。在具体的技术路线方面,主要采用了域迁移(domainadaption)的思想。首先,以指定终端的本地数据集为目标域,云上其他终端的数据集为源域;然后,用源域数据增量式训练模型,并用目标域评估模型准确率,选取使得模型准确率提升的样本,用于扩充本地数据;最后,终端利用本地扩充数据训练模型。相比于基于云服务的机器学习,基于域迁移的数据增强方案能够降低训练数据与测试数据之间的分布偏差;相比于端上仅用本地数据训练,新方案通过扩充相似样本能够有效降低泛化误差。
3端云协同智能系统
2019年“双十一”期间,Walle端智能系统在手机淘宝大规模落地,覆盖主搜、信息流推荐、云主题、会场、智能Push、红包雨、促升、直播等场景,当日共执行了2235亿次调用,在大幅提升成交量总额GMV的同时,也为用户带来了更好的交互体验。除了手机淘宝外,目前Walle端智能系统也已在闲鱼、优酷、猫客、AE、CBU、零售通等App有成熟方案落地。
目前,我们在已有的Walle系统框架中,主要增加了三组模块(见图7)。即,云上用户粒度的样本和任务管理模块;个性化样本下发和任务发布通道;端侧样本筛选和生命周期管理,以及模型训练、模型推断、模型版本控制模块。从而搭建了以数据和模型管理、云上样本下发、端上训练为核心的端云协同链路,实现了数据采集、数据增强、个性化训练三个主要功能,从根本上支撑了千人千模思想的落地应用。
图7端-通道-云系统模块
进一步我们还把子模型拆分联合学习技术实现到低功耗嵌入式设备上,包括树莓派和NvidiaJetsonNano、TX2,这些设备可以搭载到无人车、无人机、无人艇等设备上实现大规模分布式边缘学习。
4结束语
上述是我们在端云协同联合学习方面的初步探索,后续还有很多亟待解决的挑战问题。第一,如何设计弹性模型结构,动态适应异构终端设备的运行时环境;第二,如何设计分布式优化算法更好地消除数据异质性带来的模型聚合偏差;第三,如何抵御恶意终端的攻击,保障端云协同进化稳定可靠进行;第四,期待自主可控且开源的开发环境,以促进端云协同智能系统的快速开发和大规模部署。
(参考文献略)
吴帆
上海交通大学计算机科学与工程系主任、特聘教授,承担科技创新2030-“新一代人工智能”重大项目、国家重点研发计划课题、国家自然科学基金、上海市科委项目等20余项,发表学术论文200余篇。曾获教育部自然科学一等奖、中国计算机学会科技进步一等奖、上海市计算机学会自然科学一等奖、ACM中国新星奖、CCF-IEEE青年科学家奖,以及7次国际学术会议论文奖。