联邦学习专栏丨序言(深度好文)

举报
就挺突然 发表于 2020/11/16 15:59:13 2020/11/16
【摘要】 作者:李新春————————计算机软件新技术国家重点实验室伪文艺程序员既可提刀立码,行遍天下又可调参炼丹,卧于隆中联邦学习(Federated Learning)是一种使用分布式优化方法来保护多方合作时数据隐私的技术,核心点在于:分布式和数据隐私。不同于传统的分布式优化(Distributed Optimization)技术,联邦学习考虑到了数据的隐私、数据的非独立同分布性质、数据传输的瓶颈...

image.png


作者:新春


————————

计算机软件新技术国家重点实验室
伪文艺程序员

既可提刀立码,行遍天下

又可调参炼丹,卧于隆中



联邦学习(Federated Learning)是一种使用分布式优化方法来保护多方合作时数据隐私的技术,核心点在于:分布式数据隐私

不同于传统的分布式优化(Distributed Optimization)技术,联邦学习考虑到了数据的隐私、数据的非独立同分布性质、数据传输的瓶颈等问题,而分布式优化仅仅是为了协同多台机器共同完成大规模数据优化训练。

不同于传统的密码学加密技术,联邦学习训练的模型包含大量的复杂操作,模型本身包含的信息和数据有多少程度的关系,传输模型是否等价于传输数据等问题,需要进一步探讨。

总而言之,联邦学习不局限于传统的分布式优化问题,也不仅仅是通过传统密码学的同态加密等技术就轻易解决的任务,也并不是分布式优化和密码学的结合。联邦学习应用广泛,涉及技术领域众多,引起了世界范围内学者的广泛关注。

举例而言,2019年Google在Arxiv上挂载了一篇工作《Advances and Open Problems in Federated Learning》,翻译过来即是《联邦学习进展和开放问题》,这篇工作是一个专门关于联邦学习的会议的总结,邀请了来自全球20+个机构的50+名联邦学习领域知名学者对联邦学习领域的发展和问题进行了总结,包含了400+多篇工作,文章链接和首页截图如下:

image.png

(链接:https://arxiv.org/abs/1912.04977

 

其中第一作者Peter Kairouz来自于Google,是Google关于联邦学习研讨会的主持者之一,也是这篇文章主要的编辑,他主要从事联邦学习和差分隐私(Differential Privacy)相关研究,看其发表的工作更是侧重于隐私保护,提出了Context-Aware Local Differential Privacy等概念;二作H. Brendan McMahan则是联邦学习算法开山之作FedAvg的作者,FedAvg来自于AISTATS 2017的文章《Communication-Efficient Learning of Deep Networks from Decentralized Data》。除此之外,Mehryar Mohri和Qiang Yang等知名学者也参与其中,具体可以参见本文关于联邦学习知名研究机构 & 研究学者介绍。



本文根据将根据以下几个方面对联邦学习展开介绍:

·        联邦学习定义、难点、应用、分类

·        联邦学习相关研究、区别联系

·        联邦学习经典算法FedAvg

·        联邦学习核心难点之一:NonIID数据

·        联邦学习开源平台、研究机构 & 学者

在此说明,笔者阅读了约40+篇联邦学习论文、通读了《Advances and Open Problems in Federated Learning》,关于联邦学习从事了将近1年的科研研究,只是对联邦学习稍有心得,记录在此文。文章定有很多不足之处,希望读者多多指正。本文约50%+内容参考自Advances and Open Problems in Federated Learning》,后文简称“联邦学习大综述”。

 

  • 联邦学习定义、难点、应用、分类

首先,关于联邦学习的定义就分为很多种,也有很多不同场景下的联邦学习。首先,引用一下大综述摘要里面对联邦学习的介绍:

Federated learning (FL) is a machine learning setting where many clients (e.g. mobile devices or whole organizations) collaboratively train a model under the orchestration of a central server (e.g. service provider), while keeping the training data decentralized.

翻译过来为:

联邦学习是一种机器学习范式,可以在一个中心服务器的协调下让多个客户端互相合作,即便在数据分散在客户端的情况下也可以得到一个完整的机器学习模型。

这里的客户端有不同层级的指代,在不同的任务中可以指代不同的事物。比如,在手机输入法预测下一个词语的任务中,一般需要使用自然语言处理中的N-Gram模型(Natural Language Models)来预测下一个词语,这个任务中客户端就是很多部用户的手机;在医疗领域,使用图像识别分割等机器学习技术对病例进行诊断需要大量的数据支持,而这些数据正往往是涉及大量用户隐私的,因此在这种情况下需要一种安全的方法来协同多个医疗机构的数据进行训练,在这个情况下,客户端就是一家家的医疗机构。

如何做到隐私保护呢?联邦学习给出了答案。首先解释一下为何叫“联邦”学习,联邦这个词原本指的是多个成员单位(州、邦、国等)组成的统一国家,总体上遵循共同的法律约束,但又保留了每个成员相对独立的立法、司法和行政机关,设有中央政府,并约定各成员忠诚。在联邦学习里面,各个客户端通过中心服务器进行协调,在各个客户端和中心服务器彼此信任的情况下(无恶意猜测和攻击)可以达到很理想的隐私保护要求,中心服务器只负责协调、聚合等功能,模型还是根据客户端本地的数据进行训练,允许一定程度上的个性化训练方式。

总结来说,“联邦”一词在实际政治和机器学习领域所涉及的主体、事物、功能,对应如下:

·        中央政府 <--> 中心服务器

·        成员单位 <--> 客户端

·        总体上遵循共同的法律约束 <--> 中心服务器协调、聚合

·        相对独立的立法司法行政 <--> 一定程度上的个性化训练

·        成员单位忠诚 <--> 客户端和中心服务器彼此无恶意猜测、攻击

故而,McMahan采用了联邦学习这个词。目前为止,已经引出了联邦学习涉及的两大核心主体:中心服务器、客户端。并且其功能大致为:中心服务器负责宏观上协调各个客户端,客户端负责在本地训练机器学习模型。那么中心服务器如何协调呢?大概的流程又如何呢?

先给出一张联邦学习常见框架图,具体算法细节详见后面的介绍FedAvg。图中描绘出了三个客户端和一个中心服务器,客户端和服务器之间有通信

image.png

一般而言,联邦学习有以下四个步骤(以基于梯度训练深度神经网络为例):

1.    所有客户端分别独立地在本地数据上进行训练;

2.    客户端对模型参数或者模型参数的梯度进行加密,上传到服务器;

3.    服务器对搜集到的客户端的模型参数或者梯度进行聚合,并且是安全聚合(Secure Aggregation);

4.    服务器将模型下发到各个客户端;

这个过程用Qiang Yang老师在《Federated Machine Learning: Concept and Applications》中的一张示意图展示更为清晰:

image.png

此中,涉及到了许多问题,比如:

·        Non-IID问题:由于数据来自各个客户端,数据分布不再满足传统机器学习假设的数据独立同分布(IID)性质,反而是非独立同分布(Non-IID)的,这种情况下如何保证各个客户端训练的模型依旧可以被有效地全局聚合(Global Aggregation)?此外,即便能聚合出好的模型,如何将其部署下发到数据分布有所差异的客户端,即模型个性化问题(Personalization)?

·        数据传输问题:联邦学习严重依赖于数据传输,如何降低数据传输的开销以及如何确保通信不稳定的情况下系统依旧可以正常工作?

·        隐私保护措施:什么是安全聚合,怎么样才能做到安全多方计算(Secure Multi-Party Computing, Secure MPC)? 现有的解决方法有差分隐私(Differential Privacy)、同态加密(Homomorphic Encryption)等等。

至于如何去解决这些问题,本文不去详细介绍,后面会着重介绍一下Non-IID问题,其余两个留待后续文章解读。

下面回归到联邦学习的应用。刚刚大概指出了联邦学习在手机输入法预测和医疗诊断中的应用,这里细致地梳理一下:

(1)输入法:Google的Gboard、Apple的QuickType

Gboard是Google 推出一款针对 iOS 设备和Android设备的虚拟键盘,QuickType是Apple在iOS 8中开始采用的全新预测文本功能,都属于智能输入法的范畴,可以结合用户的喜好和常识性短语进行自动预判用户下一步的输入,方便用户聊天打字等。

一方面,手机、便携电脑随处可见,有大量用户的地方最容易诞生人工智能,因此智能输入的作用和潜在价值无须多提;另一方面,用户输入的东西既包含用户自身隐私相关的内容,比如年龄、住址、家庭状况等,又同时包含普遍用语、网络流行用语等,因此既要保护数据隐私、又要综合考虑大部分用户想看到的下一步输入。因此,需要联邦学习。

(2)医疗:doc.ai, bringing healthcare into the digital age

doc.ai致力于将人工智能应用到智能健康领域,加速医疗数字化进程,运用联邦学习解锁了医疗数据具有很大价值和医疗数据涉及隐私的矛盾,原文为:Unlock the value of health data with privacy-preserving solutions。具体参考doc.ai主页:

image.png

(链接:https://doc.ai/

(3)金融:微众银行和阿里支付宝

微众银行基于数据安全联合建模,可以更好地支撑信贷行业的价值创造,并提升信贷行业的风险控制能力,发展了通过联邦学习的智能风控等业务。FDN(Federated Data Network)致力于建立企业级保护数据安全的大数据合作网络。

image.png

(链接:https://fdn.webank.com/


此外,阿里支付宝也将联邦学习应用到了各种金融工具的数据分析和机器学习建模过程当中。

微众银行AI项目组发起组建了联邦学习生态圈,称为FedAI,并开源了联邦学习系统FATE,旨在开发和推广数据安全和用户隐私保护下的AI技术及其应用。详情可以参考链接:

https://www.fedai.org/

https://www.zhihu.com/org/feaai/posts

image.png

这里值得一提的是FedAI联邦学习的宗旨:安全互联打破数据孤岛,合作联盟建立数据生态

接下来介绍一下联邦学习的分类,即不同的场景。在大综述里面,联邦学习被分为了Cross-silo和Cross-device两种,silo的意思是“仓库;地窖;竖井”,这里可以理解为仓库或者企业,device就是设备。直观上看,Cross-silo FL面对的客户端是企业级别、机构单位级别的,而Cross-device FL针对的则是便携式电子设备、穿戴式电子设备等,统称为物联设备(Internet of Things, IoT devices)。下面将两者的区别列成表格如下:

image.png

间数据分布差异的难点;而Cross-device FL面向的主要是物联网设备,经常使用WIFI信号进行通信,传输受到限制,并且IoT设备计算资源有限,受到的限制更多,挑战更大,任务更困难。

这里详细说一下上表中最后一行“数据划分依据”,这里引出了另外一种联邦学习的划分方法,即横向联邦学习(Horizontal FL)和纵向联邦学习(Vertical FL)。先介绍两个场景,用户画像建模和输入法预测。

在用户画像建模任务中,目标是以用户为单位,将其基本信息、兴趣爱好、购物喜好、饮食喜好等等建模并关联起来,这就需要联合多个APP上的用户数据进行建模,比如淘宝、美团、网易云音乐等等,至于这些单位是否真的合作,这里不妄加判断。在这个场景中,用户的数据分散在各个客户端(各家企业数据),相当于是将用户的数据进行了纵向切分,是典型的纵向联邦学习应用场景。

与之不同的是,输入法预测目的在于预测下一个词是什么,数据分散在各个客户的手机上,主要是按照数据样本进行划分的,是典型的横向联邦学习应用。

这里纵向、横向的理解,可以将数据想像成一个矩阵 image.png,其中image.png代表样本个数,代表样本维度。在用户画像建模中,一个用户即是一个样本,用户的特征

被分为image.png维度分散在各个企业的数据仓库中,是纵向切分;在输入法预测任务中,一条输入记录是一个样本,用户 image.png有 image.png 条输入记录,即数据被横向分为了 image.png份分散到各个客户端,是横向切分。纵向和横向切分的示意图如下:

image.pngimage.png

总而言之,客户端之间如何是样本(Samples)不同,特征(Features)相同,则是Vertical FL;反之,如果是样本重合很多,但是特征不同,则可归为Horizontal FL。

 

  • 联邦学习相关研究、区别和联系

和联邦学习相关的研究方向主要包括:分布式优化(Distributed Optimization)和多任务学习(Multi-Task Learning)。

分布式优化致力于解决海量数据或者计算资源匮乏情况下的模型训练问题。随着数据海量增长,工业界急需大数据处理技术,特别是如何在数据分布在不同设备上时的机器学习训练。

为了解决单一机器难以训练大量数据或者为了使用并行计算利用多台机器加速模型训练等目的,DistBelief等分布式训练框架被提出(NeurIPS 2012):

image.pngimage.png

上面展示的框架中主要包括几个概念:1)Data Shards:数据碎片,也可以翻译为数据块;2)Model Replicas:模型副本;3)Parameter Server:参数服务器。一般来说,模型副本存储了模型的部分模块,使用数据块更新这部分参数之后将参数梯度上传至参数服务器,参数服务器更新模型之后再将模型下发下去。参数服务器保存完整的模型,模型副本只包含部分模型参数,不同模型副本之间更新过程是异步的。

可以看出,传统的分布式训练基于参数服务器架构(Parameter Server),参数服务器扮演了重要的角色。后来李沐、Smola等大神又针对参数服务器进行改进,于2014年提出了第三代参数服务器:

image.pnghttps://pic1.zhimg.com/80/v2-903b3c7ed25d154a74bfbf48bfcf7c00_720w.jpgimage.png

李沐、陈天奇等将基于第三代参数服务器的分布式训练架构融入了著名的深度学习开源框架MxNet,因此享誉一时,其贡献不言而喻。

传统的分布式模型训练还包括DistributedSGD等算法,同时还对Batch和Mini-Batch,同步和异步的情况进行了研究,这里不再仔细介绍,留待以后的文章补充。

另外一个和联邦学习密切相关的领域是多任务学习(Multi-Task Learning)。如果说联邦学习延续了分布式优化中的架构,那么联邦学习处理数据异构的方法则大多数来源于多任务学习。多任务学习研究如何协调多个任务共同训练,得到适合于每个任务的模型,具体可包括同构任务、异构任务等。如果将联邦学习中每个客户端看成一个单独的任务,那么联合所有客户端一起训练则是典型的多任务学习。

除了这些,联邦学习还和点对点(Peer-to-peer)训练有一定关系。联邦学习和分布式优化中有一个中央控制,即参数服务器。而Peer-to-peer强调的是没有中心控制的情况下,各个客户端如何自行寻找合适的节点一起训练,也称为Fully-decentralized Training。

用下面的表格总结一下就是:

image.png

 

  • 联邦学习经典算法FedAvg

下面介绍联邦学习经典算法FedAvg,来自于McMahan的《Communication-Efficient Learning of Deep Networks from Decentralized Data》,发表在AISTATS 2017。

image.png

这篇文章第一次提出了联邦学习这个概念,提出了FedAvg算法。首先展示一下FedAvg算法伪代码:

image.png

首先是场景设置:有 K 个客户端,每个客户端上有一批数据,如何在数据不外传的情况下得到一个所有数据训练出来的模型?

传统做法:设立一个参数服务器,各个客户端上采样一个Batch的数据,计算一步梯度,将梯度发送到参数服务器,参数服务器收到来自 K个客户端的梯度之后平均,更新全局模型,然后将全局模型下发到各个客户端。这个方法被称为Distributed SGD,在这个文章里面被称为FedSGD。其公式主要是:image.png。其中 image.png 是第 image.png 时刻全局服务器下发到各个客户端的参数, image.png 是第 image.png 个客户端的损失函数, image.png 是一步梯度, image.png 是全局服务器收到各个客户端的梯度之后聚合,在 image.png上更新的结果。

FedAvg做法:

1.    FedAvg首先将梯度聚合变为模型聚合,即每个客户端上进行一步梯度下降: image.png , image.png ,然后客户端将更新后的模型参数  上传到服务器,服务器对参数进行平均: image.png 。容易证明,到目前为止FedAvg和FedSGD等价,因为客户端只做了一步梯度下降,区别只在于一个传输梯度,一个传输更新后的模型,这不是FedAvg和传统方法的核心区别。

2.    关键在于FedAvg提出了在本地客户端更新很多步梯度,比如在本地数据集上训练  轮(当然也可以是若干个Batch),然后将更新之后的模型(也可以是模型更新量)上传到服务器,服务器仍然采取简单的模型平均聚合来自各个客户端的模型,结果作者发现最终模型性能依旧很好!!!!!!这是和传统方法的主要区别,FedAvg为减小传输开销(因为之前方法每一步梯度都要上传)提供了一种简单有效的解决方案。

对比算法伪代码,FedAvg包含本地模型更新全局模型聚合两个重要的过程:

·        本地模型更新(Local Model Update):客户端从服务器下载模型,在本地数据上进行模型更新,比如使用梯度下降更新  轮;

·        全局模型聚合(Global Model Aggregation):中心服务器接收来自客户端的各个模型(模型更新),使用简单的加权平均更新模型。

 

此外,文章指出,联邦学习和传统的分布式优化主要区别于下面几点:

·        Non-IID:不同客户端数据分布非独立同分布,比如数据分布差异大等等;

·        Unbalanced:不同客户端数据量差异很大;

·        Massively distributed:客户端数量极其多(比如IPhone手机用户);

·        Limited communication:通讯情况不同且通信质量难以保证。

FedAvg为减小传输开销提供了可行的解决方案,并且实验发现,即便在数据Non-IID的情况下,性能依旧可以做的很好。

FedAvg包括几个比较重要的超参数设置:全局迭代次数、本地更新轮数、Batch大小和学习率。Batch大小指的是局部客户端更新每步采样的数据数目,本地更新轮数决定了本地承载了多少计算量,全局迭代次数指的是全局聚合和本地更新共重复了多少次。

实验场景构造:1)Cifar10:图像识别任务中,将cifar10的数据按照数量随机划分到 image.png 个客户端,是IID的设置;将数据按照类别划分到不同的客户端,比如每个客户端只有某几个类别的数据,最极致的Non-IID设置是每个客户端只有来自一个类别的样本数据;2)Shakespeare:将莎士比亚的诗集按照篇章进行划分,每个篇章上的所有N-gram组成了这个客户端上的训练数据,具体任务就是N-gram预测下一个字符的任务。最终测试是在单独划分出来的一个包含所有类别的测试集上进行测试,测试目标是最后一轮聚合的全局模型。

实验结果展示:

image.png

 

image.png

 

后续有更多研究针对Non-IID数据进行处理,一般来说:越Non-IID的数据,客户端之间分布差异大,本地模型更新轮数  image.png   应该设置的小一些;对于IID的数据,则相反,    image.png   可以设置的大一些以减小传输开销

 

  • 联邦学习核心难点之一:Non-IID数据

下面就具体介绍一下Non-IID的含义和种类,拿分类任务为例,数据包括图像和类别标签,分别用 image.png 和 image.png 表示。针对客户端之间的分布差异,具体可以分为下面五种情况:

·        Feature Distribution Skew (Covariate Shift):特征分布偏移,具体指的是image.png不一致,但是 image.png一致。比如:不同人的字迹差异很大,但小明写的“联邦学习”和小红写的“联邦学习”都应该被识别为“联邦学习”。

·        Label Distribution Skew (Prior Probability Shift):标签分布偏移,具体指的是 image.png不一致,但是 image.png一致。比如:不同人认识的字的集合不一样,虽然字都是打印的楷体,但是小明认识“联邦学习”,小红只认识“学习”。

·        Same Label, Different Features (Concept Shift 1):一样的标签,但却有了不同的表现,具体指的是 image.png 不一致,但是 image.png 一致。这个需要和第一种FDS区分开来,第一种强调特征变化,但是即便特征不同,依旧可以被识别为相同的类别。而这里指的是,类别集合一致,但是认知的表现形式却不一致。比如:人皆有爱美之心,假设现在有一个图像鉴别颜值的任务,标签都是“美”、“一般”两类,客户端A来自唐朝图像,客户端B来自楚国图像,客户端A会任务“美”指的是“丰腴”的图像,但是客户端B会认为“美”指的是“细腰”的图像。

·        Same Feature, Different Labels (Concept Shift 2):一样的图像,但却有了不同的标签,具体指的是 image.png 不一致,但是 image.png 一致。依旧拿上面的例子为例:客户端A会把“丰腴”的图像分类为“美”,但是客户端B会把“丰腴”的图像分类为“一般”,虽然两个客户端上面“丰腴”的图像分布很接近。

·        Quantity Skew:客户端上样本数目差异巨大。

以上五种分布差异并不是严格割裂开来的,在实际场景中往往包含多种分布不一致情形。另外,不同的分布不一致情形具有不同的处理方法,因此可以在实际任务中判断场景数据和哪一种情况比较接近,然后再进行寻求相应的方法处理。

将上述各种情形总结如下:

image.png

至于联邦学习里面如何去解决Non-IID带来的一些困扰,具体可以包括以下几种办法:

·        共享数据:由于客户端数据分布不一致,在本地训练的模型往往分歧比较大,因此可以在参数服务器上保留一些公共数据,这些公共数据包含了客户端上所有分布下的数据,可以用来矫正聚合的模型;由于数据涉及隐私,往往可以通过GAN训练一些伪造数据等等;

·        正则化项:Non-IID带来的问题主要是在于各个客户端上的梯度差异过大,因此聚合时可能会不收敛或者难收敛,因此需要加入正则化项限制客户端上模型训练和公有模型的差异;

·        基于其它学习范式:上文也提到了联邦学习和多任务学习的相关性,因此可以利用多任务学习技术来解决Non-IID问题,此外还可以借助元学习(Meta Learning)、增量学习(Incremental Learning)等范式。

具体关于解决Non-IID的算法留待以后的文章详细介绍。

 

  • 联邦学习开源平台、研究机构 & 学者

下面介绍一下联邦学习领域目前已有的开源工具包、知名研究机构和学者,以供大家快速入门使用和进一步参考学习。

开源工具包主要包括:

  • 谷歌TensorFlow Federated: https://tensorflow.google.cn/federated?hl=zh-cn

  • 微众银行FATE:  https://fate.fedai.org/ &      https://github.com/FederatedAI/FATE

  • 百度PaddleFL:https://github.com/PaddlePaddle/PaddleFL

  •  CMU LEAF:https://leaf.cmu.edu/

联邦学习领域知名研究企业包括谷歌、苹果、微众银行、阿里支付宝、百度等等;其余知名研究机构包括卡耐基梅隆大学、康奈尔大学、洛桑联邦理工学院(EPFL)、埃默里大学、佐治亚理工学院、香港科技大学等。

联邦学习领域知名学者:

·        H. Brendan McMahan:CMU博士、谷歌科学家、代表作FedAvg

image.png



·        Martin Jaggi:EPFL副教授

image.png



·        Martín Abadi:UCSC教授,代表作Deep Learning with Differential Privacy

image.png



·        Peter Kairouz:伊利诺伊大学厄巴纳-香槟分校UIUC博士、Google工程师,大综述一作

image.png



·        Qiang Yang:香港科技大学教授,研究方向迁移学习和联邦学习

image.png


其余知名学者不再详细介绍,或者笔者见识浅薄,有许多大牛没有加入进来,欢迎补充。

 

总结

文章对联邦学习的基本概况进行了介绍,包括:联邦学习是什么?联邦学习做什么?联邦学习的基本架构?联邦学习和其余相关技术的关系?联邦学习的具体应用?联邦学习有哪些难点?联邦学习中的Non-IID问题是什么?联邦学习开源的工具包有哪些?联邦学习有哪些知名研究机构和学者?...

后续文章会针对具体联邦学习算法进行介绍,文章不足也欢迎读者批评指正。

参考文献

1.    Peter Kairouz, H. Brendan McMahan, et al: Advances and Open Problems in Federated Learning. CoRR abs/1912.04977 (2019)

2.    Brendan McMahan, Eider Moore, Daniel Ramage, Seth Hampson, Blaise Agüera y Arcas: Communication-Efficient Learning of Deep Networks from Decentralized Data. AISTATS 2017: 1273-1282

3.    Qiang Yang, Yang Liu, Tianjian Chen, Yongxin Tong: Federated Machine Learning: Concept and Applications. ACM Trans. Intell. Syst. Technol. 10(2): 12:1-12:19 (2019)

4.    Jeffrey Dean, Greg Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V. Le, Mark Z. Mao, Marc'Aurelio Ranzato, Andrew W. Senior, Paul A. Tucker, Ke Yang, Andrew Y. Ng: Large Scale Distributed Deep Networks. NIPS 2012: 1232-1240

5.    Mu Li, David G. Andersen, Jun Woo Park, Alexander J. Smola, Amr Ahmed, Vanja Josifovski, James Long, Eugene J. Shekita, Bor-Yiing Su: Scaling Distributed Machine Learning with the Parameter Server. OSDI 2014: 583-598


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。