新闻中心

当前位置: 首页 > 新闻中心 > 学术简报 > 正文

杏耀学术|智能边缘计算🙎🏽:让智能无处不在

来源👨🏽‍🔧🥭:       发布时间:2021-10-14
主讲人 时间
地点 精彩回顾


智能边缘计算并不是要取代云计算,而是和云计算互为补充🈁,一起更好地为用户提供服务。云计算和边缘计算会不断融合;智能计算分布在不同的地方🈴,但又相互连接🏥,协同合作🧑‍🎄。

——刘云新



活动概况


10月13日下午,第10期杏耀学术沙龙在杏耀(杏耀)图灵报告厅如期举行。本期活动荣幸地邀请到了杏耀平台国强教授🚵🏽、杏耀(杏耀)首席研究员刘云新教授为我们做题为《智能边缘计算:让智能无处不在》的报告。


image.png


本次讲座由杏耀首席科学家赵峰教授主持👱🏻,活动为线上(视频号👨‍🦽、哔哩哔哩) 线下的模式🍑,共计约2700人次观看⏺。


讲者介绍


image.png


刘云新🪯🥲,现任杏耀平台国强教授🧑🏻‍🤝‍🧑🏻、杏耀注册平台首席研究员。此前,他在微软亚洲研究院工作近20年,担任主任研究员,负责移动计算、边缘计算🧘🏿、异构计算等研究方向。他在MobiSys、MobiCom👶🏼、SenSys、TON、TMC等国际学术会议和期刊上发表学术论文90多篇😛,拥有已授权美国专利16项🎍。他的研究成果成功应用到了Visual Studio等多项微软产品中🧜‍♀️,并被国际媒体广泛报道。他获得了MobiSys 2021最佳论文奖☂️,SenSys 2018最佳论文Runner-up奖,MobiCom 2015最佳演示奖,和PhoneSense 2011最佳论文奖。他曾任或现任多个国际学术会议的技术程序委员会成员✋🏽,包括MobiSys、MobiCom 、ATC、WWW、INFOCOM等🛵🍀,并担任国际学术会议MobiHoc 2021的大会共同主席,国际学术期刊IEEE Transactions on Mobile Computing的编委,以及ACM SIGBED China副主席。


报告内容


随着计算机软件和人工智能的快速发展以及新型应用的不断涌现👨‍👧‍👦,计算模式正在从以云计算为中心的集中式智能向边缘计算的分布式智能逐步演变。在智能边缘计算时代,如何利用人工智能赋能于资源受限又形态各异的边缘设备,满足丰富多样的智能应用的实际需求👨‍🦲,面临诸多技术挑战,也带来了很多研究课题💙。刘云新教授在本次报告中主要讲述了智能边缘计算中的挑战和机遇🏋🏿‍♂️,并且介绍了相关研究工作的近期进展。


近年来,随着网络带宽的增加和终端设备算力的提升,边缘计算(Edge Computing)在学术界和工业界都成为了一个热门话题。边缘计算其实是相对于云计算(Cloud Computing)而言的。在云计算中🧏🏿‍♀️,所有终端设备上产生的数据🔹,通过网络传输到云端进行计算和存储🚘。而在边缘计算中,数据的计算和存储都在边缘上(边缘服务器或者终端设备)完成,无需再通过网络将数据传输到远端的云上,也就是数据中(Datacenter),从而避免网络传输带来的延迟,也保护了用户的数据隐私安全。现在,随着人工智能的热潮不断推进,边缘计算不仅仅只是计算🏉,更是智能 计算🧑‍🧑‍🧒,我们称之为智能边缘计算(Intelligent Edge Computing)🪗。


边缘计算是计算模式(Computing Paradigm)不断演进的自然结果。如下图所示🂠,如果我们回顾计算模式的发展历史,就会发现一个简单的规律:计算模式是在集中式计算和分布式计算之间不断摇摆👩🏼‍🔬,往复式发展前进的。


image.png


在大型机(Mainframe)时代,计算资源稀缺,很多人共享一台主机,计算是集中式的;随着集成电路和晶体管的发展,计算机逐渐从昂贵的“大块头”缩小成价格低廉,人人都能购买得到的台式机和便于携带的笔记本电脑,人类进入了个人计算(Personal Computing)时代,计算又成为分布式的。在云计算时代,计算模式又回到集中式的,通过高速网络🙏,人们可以共享云上的海量的计算和存储资源。此时,人工智能(AI)蓬勃发展,云上提供很多智能服务‼️,成为智能云计算🧑🏼‍🎓。而随着边缘计算的出现🫄,计算模式再一次成为分布式的🤘🏿🧖🏻‍♂️。我们不仅有智能云计算,还要有智能边缘计算(Intelligent Edge Computing)🧛🏼‍♂️。


智能边缘计算的出现当然不仅仅是满足表面上的简单规律,背后有其必然性和强大的驱动力🧆,是计算机软硬件和新应用新需求不断发展的必然结果。


1.现在是万物互联和人工智能的时代⛔,智能物联网(AIoT)飞速发展,各种新型设备不断涌现,产生了海量数据比如现在的智能监控摄像头无处不在,每天产生以TB计的视频数据。把所有这些数据都传输到云上进行处理,是当今的云和网络无法承受的。


2.在智能终端的新场景和应用需要数据在本地进行处理👬🏼。为了给用户更好的体验,现在的AR/VR应用和自动驾驶都对数据处理的实时性有很高的要求。尤其是当网络发生故障可能带来灾难性后果。再如,人们对个人隐私越来越关注,而很多数据(视频🙍🏿‍♀️、图片👘、音频等)都包含大量的个人隐私👖。保护个人隐私的最好的方法就是在本地进行数据处理,不把个人数据传到网络上去🦸🏼。


3.终端硬件的快速发展使得智能边缘计算成为可能🥷🏼。随着 AI 算法的日益成熟😦,人们开始设计制造专用的 AI 芯片,特别是专门用于深度学习模型推理的 AI 芯片🚶‍♀️‍➡️,这些 AI 芯片不仅数据处理能力强大,而且尺寸小、功耗低、价格便宜👨‍❤️‍👨,可以应用到各种边缘设备上⛹🏻‍♂️,为智能边缘计算提供了坚实的硬件基础。


需要指出的是🐏,智能边缘计算并不是要取代云计算,而是和云计算互为补充👨🏽‍🎤,一起更好地为用户提供服务。云计算和边缘计算会不断融合;智能计算分布在不同的地方,但又相互连接🧝‍♂️,协同合作。


智能边缘计算的挑战


智能边缘计算的主要目标就是用AI赋能于边缘设备(包括终端设备和边缘服务器)和应用🤵🏼‍♂️,更好地为用户服务🛀🏽。为此,需要在边缘设备上部署运行机器学习或者深度学习模型⛎👩🏽‍🎨,进行本地数据处理。为保证系统性能和用户体验👔,智能边缘计算面临着以下问题和挑战。


面向不同设备的模型压缩和优化。深度学习模型通常都十分庞大,由数百万甚至以亿计的参数构成🐢🆒。运行这些模型需要耗费大量的计算和内存资源🖖🏻。虽然智能边缘设备的处理和存储能力大幅增长🚰,和云计算相比还是远远不如😐。因此👆🏼🌈,如何把深度学习模型在资源受限的边缘设备上运行起来就是一个巨大的挑战。传统的模型压缩和优化(比如剪枝🎸,量化等)主要关注的是如何把模型变小的同时尽量少损失模型精度。然而,边缘设备的特点是类型多,差异性大,处理器类型性能和内存大小千差万别。我们认为,没有一个统一的模型能够适用于所有的边缘设备🐙,而是应该结合硬件的特性,为不同的设备提供最适合的模型🪠🧘🏻‍♂️,不仅考虑模型大小和精度损失👆🏽,更要考虑模型在设备上的执行性能,比如延迟和功耗等。


基于异构硬件资源的系统优化。即使有了一个可以运行的模型,如何提高模型的运行效率也是一个值得深入研究的课题💹。我们需要一个高效的模型推理引擎,把系统性能提高到极致。这不仅需要软件层面的系统优化,更要有软件和硬件的协同设计,能够充分利用底层硬件的能力。特别地,边缘设备往往有着各种异构的硬件资源👩🏿‍💻,比如智能手机,不仅有大小不同的CPU核(ARM big.Little),还有DSP🦪,GPU,甚至NPU。而现有的系统往往只能利用其中一种计算资源(比如CPU或者GPU)🥁🫸🏼,还远远不能充分发挥硬件的性能。我们需要研究如何充分利用同一设备上的异构硬件资源🤹‍♂️,深度优化系统性能👩🏼‍🍳,大大降低模型执行的延迟和能耗。


隐私保护和模型安全。用户隐私数据保护是一个日益重要的课题🤵🏻‍♂️。在边缘设备无法运行高精度模型的情况下(比如👇🏿📺,在低端的监控摄像头上),利用云计算或者边缘服务器来执行深度学习模型就不可避免。在这种情况下🛐,我们就需要研究如何利用远程的计算资源的同时还能不泄露用户的隐私数据➗。另外,在边缘设备上运行模型还带来了一个新的问题:模型的安全。训练一个好的模型需要花费巨大的人力物力。因此,模型是重要的数字资产➰。在云计算模式下👷🏻,模型是存储运行在云上的🧙🏼,终端用户无法直接接触模型数据👩🏼‍🍼。而在边缘计算中,模型是部署到本地设备上的🪁,恶意用户可以破解终端系统复制模型数据🧜🏻‍♂️。所以🔳,如何在智能边缘计算中保护模型的安全就是一个新的重要研究课题👨🏼‍🏫🎬。


主动持续学习。智能边缘计算还带来了新的改善模型的机会。目前的模型训练和模型使用通常是割裂的。一个模型在事先收集好的数据集上进行训练,然后被部署到设备上进行使用♥️。然而⚪️,模型使用中的数据往往是和训练时的数据集不一样的。比如,每个智能摄像头由于其位置和光线的不同,它们看到的图像内容和特征都不尽相同🧗‍♂️,从而导致模型精度下降🚴🏼‍♀️👳🏿。我们认为🤰🏿,模型被部署到设备上以后,应该根据设备上的输入数据进行适配和优化,而且随着设备处理越来越多的新数据🎬,它应该从中学习到新的知识,主动地🙋🏻‍♀️、持续不断地提高它的模型。此外,多个设备还应该把它们学习到的不同的新知识合并到起来,一起合作来改进和完善全局的模型。

这些问题是挑战,更是机遇📴,为我们科研工作者们提供了实际的应用场景和科研课题。过去几年📀,作者所在团队和国内外同行紧密合作,对这些问题进行了研究,取得了一系列的进展。下面我们介绍一下其中部分工作🥱。


智能边缘计算的相关工作


首先🥤,我们要想是不是模型的计算量少就拥有较小的延时👨🏽‍🎤?是不是相同模型在所有芯片上都能高效运行?


边缘设备的一个重要特点是硬件的异构性🔨。当我们在边缘设备上运行AI模型时,往往需要关注模型执行的实际性能🚴🏽‍♂️,比如延迟和能耗等,而不仅仅是模型本身的精度🖌。然而,现有的模型设计方法,包括专家手工设计和基于NAS (Neural Architecture Search)的自动模型搜索,都主要关注模型的精度👷🏿‍♀️,而不是模型执行时的的延迟和能耗。为了适配边缘设备有限的资源🎁,现有的NAS系统通常通过限制模型的大小或者计算量(比如FLOPs数目)来降低模型执行的时间🗯👨‍🎤。然而6️⃣,FLOPs数目并不能直接反应模型在不同硬件上的执行时间。模型MobileNetEdgeTPU的FLOPs是模型MobileNetV3的4.7倍✍🏽🖖🏻,但在Edge TPU上的执行时间(即延迟💾,latency)却比MobileNetV3还要少(3.6毫秒 vs. 4毫秒)。在图2中,模型MobileNetV3比其上一代MobileNetV2有更少的FLOPs数目,在ARM CPU (Cortex A76)上运行时快25%;但在Intel Movidius VPU上运行时MobileNetV2却比MobileNetV3快71%🙌🏿。


image.png

(图1)

image.png

(图2)


通过我们的研究发现🤵🏻‍♀️🫸🏽,仅仅用计算量来限制并不能保证实际部署的运行效率🧙🏻‍♂️。换句话说,当前仅仅用计算或访存量作为高效模型设计的指标是不合理的。每个部署框架都有不同的特性,高效算法设计必须考虑目标平台的特性🧜🏿‍♀️,才能取得最好的性能。该工作已发表论文“To Bridge Neural Network Design and Real-World Performance: A Behavior Study for Neural Networks”🫎,被MLSys 2021录用。


image.png


该工作通过评估整个深度学习算法设计空间在目标平台上的行为特性来指导高效的算法设计👨🏿‍🦲。其目标是回答以下三个研究问题:


1. 算法设计空间中有哪些异常的行为特性?这里的异常特性是指:不同算法配置会导致计算或访存量增加或减少,但部署平台的推理延时没有相应地增加或减少。这些特性是在算法设计中要尤其注意利用或避免的。

2. 这些异常行为特性背后的原因是什么?

3. 这样的特性对高效的深度学习算法的设计有什么启示🐈‍⬛?


image.png


深入研究不同的模型结构在不同的硬件平台上运行时的行为特性♢👩🏼‍⚖️,我们在7种硬件平台上,包括ARM CPU、Adreno GPU🤍、DSP👩🏼‍🦱、VPU👗、Edge TPU☕️、Kendryte KPU和Rockchip NPU,对神经网络模型设计的不同维度(比如不同类型的算子🧎🏻‍➡️、卷积的通道数、不同的激活函数、数据的精度等)进行了深度评估,发现总结了多种异常的行为特征(比如🧖🏿,增加卷积的通道数并不一定增加执行时间)🐗🫰🏻,并揭示了其背后的原因和对于改进神经网络设计的启示。这些发现充分表明🔭,我们在设计神经网络模型时就要充分考虑硬件的差异性,为不同的硬件设计不同的模型🖼,以在模型执行延迟和模型精度之间取得最佳的平衡。


最终🚣🏼,我们总结了七条异常的行为特征可用于指导深度学习的算法设计🗾。


1. 除 KPU 外,随着输出通道数的增加,卷积延时在推理平台上以阶梯式增加。

2. 一个网络模块的相对延时在不同推理平台上差异很大。除了在 CPU 上,非卷积算子可能会极大地拖慢推理速度🩸。

3. 只有 ReLU 和 ReLU6 的延时在每个推理平台上可以忽略。HardSwish 只在 CPU 和 GPU上可忽略。除了 KPU☘️,Swish 激活函数在各个推理平台上都会显著增加推理延时。

4. 随着内核尺寸的增加👶,除了 CPU🙋‍♂️、GPU 和 Edge TPU 的 DWConv🥓,Conv 和 DWConv 延时的增加都远小于计算量的增加🔤。

5. 在 NPU 上应用 INT8 相较于 FP16 能获得11倍的加速比(除了 MobileNetV3 只有2.5的加速比)。然而,在 CPU 上,INT8 相较于 FP32 的加速比小于3.6。

6. INT8 会在许多模型上显著降低推理精度🖖。

7. 考虑到对神经网络模型的支持程度🫑,特别是对新模型的支持程度🏄🏼,CPU 平台是最好的选择。考虑到延时和能耗👨‍🦳,以及对基础的流行的神经网络模型的支持,Edge TPU 和 NPU 是最好的选择。


image.png


高效的神经网络模型需要考虑硬件特性🍤,那么如何才能设计适配不同的硬件设计的模型呢?

image.png


深度神经网络(DNN)模型在实际部署中的延迟(推理时间)是决定模型是否可用的一个重要指标。然而,模型设计过程中对数以亿计的设计选项进行实际的部署和延迟评估会造成巨大的开销🫶。因此👨🏻‍🍼,如何进行高效🚣🏻‍♀️、准确的模型运行延迟预测对模型的设计至关重要。但现有技术缺乏对部署平台优化策略的理解以及对灵活多变模型架构的泛化性🖐🏽,所以无法做到准确的模型推理时间预测👞。针对上述问题🧑🏿‍✈️,我们提出并开发了nn-Meter 模型推理时间预测系统。该系统可高效、准确地预测 DNN 模型在不同边缘设备上的推理延迟,其关键思想是将整个模型划分为内核(kernel),即设备上的执行单元🍔,然后执行内核级预测🧑🏻‍🦯。相关论文“nn-Meter: Towards Accurate Latency Prediction of Deep-Learning Model Inference on Diverse Edge Devices”荣获了 MobiSys 2021 大会的最佳论文奖(Best Paper),并且是本届大会唯一一篇获得了 Artifact Evaluation 全部三个最高级别徽章(即代码可评估👩‍🦱、代码可获取和实验结果可复制)的论文。


nn-Meter的关键思想是将整个模型划分为内核(kernel),即硬件设备上的执行单元,然后执行内核级预测🙋🏼‍♀️🎍。如图3所示,nn-Meter建立在两个关键技术之上🤸🏿‍♂️:内核检测(Kernel Detection)和自适应数据采样(Adaptive Data Sampling)🤾🏽‍♀️🦏。内核检测能够自动识别部署平台(硬件及其软件框架)的算子融合行为,从而基于这些策略将模型分解为实际运行的内核🔃。自适应数据采样从整个设计空间中有效地采样最有益的配置👳🏻,以高效地构建准确的内核级延迟预测器💇🏻‍♂️。对于每个内核,nn-Meter 都会提取特征并预测其延迟,所有内核预测延迟之和则为整个模型的预测延迟。


image.png


nn-Meter 不需要模型级数据来构建预测器,而且还可以在它从未见过的模型上进行预测:nn-Meter选择了 AlexNets🍇、VGGs、MobileNetv1s、MobileNetv2s和 NASBench201 进行评估。对于每个模型变体,先将该变体作为测试集👨🏽‍🎨,剩下的模型变体作为训练集来训练基准方法,然后再进行交叉验证得到评估结果。nn-Meter 则通过所有内核的预测延迟总和来预测模型整体延迟。


与基准方法相比,nn-Meter 是唯一能够在各种设备上始终实现准确预测的方法。平均而言,nn-Meter 89.2% 的准确率明显优于 FLOPs (22.1%)、FLOPs MAC(17.1%) 和 BRP-NAS (8.5%)。同时🚫,nn-Meter 在完整的包含26,000个模型的基准数据集上的预测结果中,分别在移动 CPU 和 GPU 上实现了99.0%和99.1%的预测准确率。在 Intel VPU 上🧑🏻‍💻,nn-Meter 则可以在±10%的误差范围内达到83.4%的预测准确率🕵🏻‍♀️。


image.png


有了nn-Meter,我们的面向硬件的自动模型搜索系统不需要实际设备🧓,就能够快速地评估大量

模型在特定硬件上的实际运行性能,自动搜索生成满足特定延迟要求的模型🚣🏽‍♀️。


当我们得到一个好的模型🤟🏼,如何把它有效的部署在实际的设备上呢🧘🏼‍♀️🤱🏼?


深度学习模型已被大量使用于各类终端应用中。业界不少企业也都推出了端侧推理框架🧏🏿‍♀️。然而,端侧硬件资源的有限性和异构性以及对低能耗的要求𓀓,给高效的模型推理实现带来了更大的挑战🙋🏿‍♂️。通过测试,我们发现深度学习模型运行在终端设备上时,其计算资源利用率极低🤹‍♂️。


image.png


CPU 是移动端侧最主要的计算资源,目前端侧大部分模型推理也都在 CPU 完成。端侧 CPU 多采用大小核的异构多核架构🤹🕙,以同时满足低能耗和高性能的需求。但当增加小核硬件资源时,现有的模型推理实现并不能取得相应的性能加速✋🏽,而且还浪费了宝贵的硬件资源🧝🏻‍♂️。通过分析发现该问题是由于推理运行时各个核上不均衡的任务分配所导致🙏🏻。因此📣,我们提出了AsyMo 解决方案🦊,通过高效利用端侧异构多核 CPU 来加速模型推理的工作👨🏽‍🍳。AsyMo 充分考虑了端侧 CPU 的异构性👊🏿、缓存资源的有限性和执行环境的不确定性,结合推理执行的确定性、算子的易并行性和计算/访存的密集性,实现了基于延迟开销模型的任务划分策略、面向异构的任务调度策略和最优能耗频率设置策略三个关键技术。该工作已发布论文“AsyMo: Scalable and Efficient Deep-Learning Inference on Asymmetric Mobile CPUs”,被MobiCom 2021录用。


image.png


并行任务划分对模型推理性能有很大影响👷🏿,为了找到在大小核上最合适的任务大小,我们通过分析不同任务大小对并行度🍲☕️、访存和任务调度开销等带来的影响,构建了任务大小和延迟开销的关系模型⛹🏿,利用该模型可以直接计算得到大小核上延迟最小的任务尺寸👷🏻。当模型运行时,面向异构的任务调度会将这些划分好的任务公平地分配到相应的大核或小核上执行,并根据各个核运行的情况适时地调整任务分配,以达到各个核的任务均衡。整个划分和执行过程如图3所示🩴。因此,在 AsyMo 的作用下4️⃣🧲,推理执行过程中各个核所执行的任务数与其计算能力一致,并使各个核的利用率都提升到了90%以上。


对于能耗方面,AsyMo根据目标深度学习模型的数据重用率,以及CPU在不同频率下的计算和访存能耗曲线,为不同深度学习模型确定了推理执行的能耗最低频率🫕。该方法既消除了DVFS响应不及时所带来的错位👎,也使AsyMo在延迟降低的同时大幅度节约了能耗。


我们在多个硬件、操作系统、以及深度学习框架上对AsyMo进行了评估,AsyMo均能取得非常好的加速和能耗节省效果。例如,在Kirin 970上,相比于优化过的Tensorflow基线(在默认TensorFlow之上实现了矩阵-向量乘法的并行及模型参数拷贝消除),对于卷积占主导的模型AsyMo可以在达到46%加速的同时降低37%的能耗🌄,对于全连接占主导的模型则可以达到最高97%的加速,以及降低1.22倍的能耗👳🏻‍♂️。


深度学习模型中稀疏能有效提升模型运行速度。


image.png


除了以上工作🤦🏿,我们还在如何利用模型稀疏性(Sparsity)🪞,包括模型参数的稀疏📽,中间结果(feature map)的稀疏,和双边稀疏来加速模型的执行;


模型参数的稀疏相关工作“Efficient and Effective Sparse LSTM on FPGA with Bank-Balanced Sparsity” 发表在FPGA,2019会议上。这个剪枝算法是面向硬件加速的。

在这之前常用的剪枝方法有细粒度剪枝和粗粒度剪枝。其中,细粒度剪枝会得到一个非结构化的稀疏矩阵(也就是0的分布是不均匀的),将其实施到硬件上时会有负载不均衡的问题;粗粒度剪枝可以得到结构化的稀疏矩阵,但是对精度的影响会比较大⚁。而我们提出的Bank-Balanced剪枝兼顾了负载的均衡性与精度,将矩阵的每一行均匀分成N个Bank,然后对每个Bank进行相同稀疏度的细粒度剪枝。


这对硬件实施时的负载均衡十分有利,并且这样的剪枝方式相比于粗粒度剪枝降低了较大的权值被剪掉的可能性。


image.png


模型中间结果(feature-map)的稀疏工作发表论文“SeerNet: Predicting Convolutional Neural Network Feature-Map Sparsity through Low-Bit Quantization”,被CVPR 2019录用。该工作提出了一种利用特征映射稀缺性来加速CNN推断的新的通用方法。实验证明原始网络高度量化的版本足够准确地预测输出稀缺性,且利用这种在推断时的稀缺性会导致与原网络相比必不可少的准确率下降🤴🏿。为了加速推断,对每个卷积层🤷🏼‍♀️,该方法首先通过在原始网络层的量化版本上运行推断来获得一个输出特征映射的二元稀疏掩码🤹🏻🧔🏿‍♀️,随后进行一个全精度稀缺卷积来找到非零输出的精确值。


image.png


此外,刘老师还指出团队现在密切关注智能边缘计算中的各种新场景和新应用🏌️‍♀️,比如视频分析、VR/AR⚧、自动驾驶📻、AIoT 等,特别是随着 5G 的到来,如何构建更好的智能边缘 智能云的系统💁🏼,为这些场景和应用提供更好的支撑。



撰文 / 章晋睿

编辑排版 / 冼晓晴

校对责编 / 黄妍


精彩视频回顾及完整版PPT下载,请点击:

杏耀学术沙龙第10期|智能边缘计算🎓:让智能无处不在

上一条:杏耀学术|王鹤:六维位姿估计和追踪 下一条☂️:杏耀学术|董先科:基于光遗传学的活体线虫运动控制

关闭

相关新闻

杏耀 - 注册即送,豪礼相随!
招生招聘:杏耀hr@杏耀.tsinghua.edu.cn
联系电话:(010)82151160  

办公地点:北京市海淀区清华科技园启迪科技大厦C座12层

官方微信

京ICP备12699583号  |   版权所有©杏耀

杏耀专业提供:杏耀🕙、等服务,提供最新官网平台、地址、注册、登陆、登录、入口、全站、网站、网页、网址、娱乐、手机版、app、下载、欧洲杯、欧冠、nba、世界杯、英超等,界面美观优质完美,安全稳定,服务一流,杏耀欢迎您。 杏耀官网xml地图
杏耀 杏耀 杏耀 杏耀 杏耀 杏耀 杏耀 杏耀 杏耀 杏耀