CoEdge: 面向自动驾驶的协作式边缘计算系统,实现分布式实时深度学习任务的高效调度与资源优化

文章导读

CoEdge系统的构思基于边缘计算的发展,这一分布式计算范式将服务从云端推向网络边缘,以支持各种物联网应用,如智能交通和自动驾驶。随着通信技术的进步,出现了新的协作边缘系统,多个边缘节点可以通过本地点对点连接实现协作,而无需依赖强大的中心化互联网基础设施。这些系统在拓展性方面具有明显优势,适合广泛的地理部署,但也面临分布式工作负载处理、实时要求、异构环境兼容等挑战。CoEdge提出了一个分层的深度学习任务调度框架,通过任务调度与批处理机制来优化节点资源利用,此外,该系统还设计了GPU并行容器化,以解决任务隔离与GPU共享的难题。实验结果表明,CoEdge在大学校园中的智慧灯杆测试环境中显著降低了任务超时率。

1.研究背景和相关工作

在深度学习任务卸载方面,现有研究已开发了多种方法来缓解边缘设备在处理深度神经网络(DNN)任务时面临的资源限制问题。典型方案包括将计算密集型任务卸载到云端或其他边缘设备。例如,Neurosurgeon系统通过预测每层DNN模型的延迟和功耗,自动在层级粒度上划分任务,以实现高效的任务卸载。EdgeML采用强化学习算法,根据实时通信带宽的动态变化来自动调整任务分区点,从而优化卸载效率。此外,ENGINE系统采用贪心策略,通过决定哪些任务本地执行、哪些任务发送至云端来最小化能耗。然而,这些方法主要面向单一客户端与服务器间的通信,缺乏对多节点分布式深度学习任务的支持,因此无法在多节点之间实现协同优化。针对边缘设备之间的工作负载平衡,有研究提出了多种优化方法。例如,某些研究通过建立整数线性规划模型,优化用户请求在边缘-云架构下的整体响应时间,并将边缘设备的数据全部卸载至云端。然而,这种方法会导致边缘到云端通信延迟较高,无法充分利用边缘设备的计算资源。Dedas系统提出了一种在线的任务调度和任务分派机制,在边缘设备无法满足任务的实时需求时将任务卸载到云端,假设部署有资源丰富的服务器以接近数据源和终端设备。然而,在协作边缘系统中,由于边缘节点无法始终依赖资源丰富的服务器,并且云卸载可能会导致隐私泄露,因此该方法的适用性有限。对于在边缘设备上并发执行深度学习任务的研究,已有一些工作重点关注实时性能优化。DART系统通过基于流水线的数据并行架构,提升了实时DNN推理请求的响应效率。RT-mDL则通过联合模型缩放和调度策略,优化了边缘平台上多种实时/准确性需求下的DNN任务执行效率。BlastNet提出了跨处理器的动态调度方案,使DNN模型推理在异构CPU-GPU平台上实现高效推理。然而,这些方法的侧重点在于单一边缘设备上的实时并发任务优化,未考虑其他边缘节点协同推理的需求。此外,当前研究未能有效解决在共享边缘平台上部署多个DNN模型时的兼容性问题。多个任务的前/后处理可能需要不同版本的依赖包,如NumPy、SciPy等,因此典型做法是将DL任务分别封装在不同容器中。然而,这种容器化技术在边缘平台上的直接应用存在限制,尤其是多个容器无法同时访问同一边缘设备的GPU资源。最近的一项研究将容器划分为一个共享容器和多个独立容器,以支持多边缘应用的容器化,但该方法并不适用于GPU加速平台上的并发DL任务。

2.成果概述

CoEdge 系统适用于多个分布式实时应用场景,包括智能交通基础设施、自动驾驶、智能港口和工厂等数据密集型任务。例如,在智能道路基础设施中,CoEdge 系统通过多个配备了传感器的智能灯杆进行协作,实现实时的交通监控和基础设施支持的自动驾驶。每个灯杆通常配备热成像相机、毫米波雷达和 LiDAR 等多种传感器,但这些边缘节点的计算和功率受限,使得在不进行重大升级的情况下,仅能提供数十瓦的固定电源供给,这在大规模边缘系统中尤为常见。此类智能灯杆应用要求分布式协作,以在有限的资源条件下满足实时深度学习任务的执行需求。

图1:基于路边基础设施的分布式实时任务场景

具体来说有如下要求:

  • 实时与并发 DNN 执行

在智能灯杆的支持下,许多应用需要严格的时间约束,例如车辆跟踪要求在数秒内完成检测和通信。而在自动驾驶中,灯杆节点可能需要实时处理传感器数据并将结果发送至车辆。此外,由于灯杆通常作为共享基础设施,单个节点可能需要同时运行多个深度神经网络模型来执行不同任务。有限的设备资源和严格的实时需求构成了设计协作边缘系统的主要挑战。

  • 地理分布的异构工作负载

由于传感器和路况的差异性,不同灯杆的服务和工作负载分布往往不均衡。热成像相机、毫米波雷达和 LiDAR 的传感范围差异较大,从 10 米到 500 米不等,导致传感器的部署方式会因道路和交通情况以及预算而变化。不同的节点在数据和计算负载方面呈现高度动态性,进一步增加了边缘节点协同计算的复杂性。

  • 多样化的开发和运行环境

作为共享基础设施,智能灯杆需要支持由不同服务提供商在不同软件/硬件环境中开发的多种应用。例如,某些节点可能同时支持安全监控、车辆监控、跟踪和自动驾驶等不同任务。传统的虚拟化技术如容器已被广泛应用于边缘系统中,但现有的容器技术无法同时支持边缘 GPU 上的并发 DNN 执行。这种限制使得在同一 GPU 上并行运行多任务变得困难,因此 CoEdge 提出了专门的容器化技术来解决这一问题。

3.系统设计

3.1 CoEdge概述

CoEdge 是一种协作边缘系统,旨在支持分布式实时深度学习(DL)任务在多个边缘节点之间的高效执行。系统架构由全局任务调度器、本地批量实时深度神经网络(DNN)执行机制和 GPU 感知的并发 DL 容器化组成。此设计提供了一个分层的任务调度框架,以便在多个边缘设备之间协同处理复杂的 DL 任务。

图2:CoEdge系统结构

在每个边缘节点上,CoEdge 提供了一个批处理机制,将使用相同模型的任务合并在一起进行批量推理,以提高 GPU 的利用效率。这种批处理模式能够在不影响实时性能的前提下优化资源使用率。系统在离线阶段会对不同批量大小下的推理时间进行预估,从而在在线阶段根据实时需求动态调整批次大小。

CoEdge 设计了一种独特的容器化技术,以支持多个任务在隔离环境下共享同一个 GPU。系统将每个任务拆分为 CPU 上的预处理和后处理,以及 GPU 上的 DNN 推理部分。预处理和后处理被分别封装在独立的容器中,而所有 DNN 推理任务则共享一个 GPU 容器。这种设计解决了容器间软件依赖不兼容的问题,并最大限度地利用了异构计算资源。

3.2 分层深度学习任务调度

CoEdge的分层DL任务调度框架旨在优化跨边缘节点的实时分布式DL任务执行。为了解决由于传感器分布不均、地理位置分散及单一边缘节点计算资源不足带来的负载不平衡问题,CoEdge设计了一个由主节点任务分配器和边缘节点本地调度器组成的系统架构。

图3:分层DL任务调度流程

区别于传统的分布式任务调度通常只在节点之间均衡负载,CoEdge的分层DL任务调度不仅考虑节点间负载的平衡,还重点关注每个节点的实际执行效率。其架构包含两部分:主节点上的全局任务分配器和分配在多个边缘节点上的批量DNN执行器。全局任务分配器负责将DL任务分配给边缘节点,并根据各节点的实时性能估计动态优化分配策略。任务分配器不仅要保证任务在节点间的合理分布,还要充分利用节点的批量执行功能以提升GPU资源利用率。同时,各个边缘节点采用批量实时DNN执行机制,边缘节点不仅监控分配任务的实时性能,还与主节点通信以便优化运行时的分配策略。主节点任务分配器通过以下两个步骤来管理不同边缘设备上的分布式DL任务:

  • 双阶段优化器:全局任务分配器的核心是双阶段优化器。首先,离线阶段基于任务执行时间的历史数据来生成初始分配方案。在线阶段则在任务实际执行时根据运行时数据进行动态调整,以满足实时需求。这样,分配器可以在负载动态变化的情况下实现最优任务分配 。
  • 基于相似性的批量执行策略:分配器会根据任务的模型相似性(使用余弦相似度)来分配DL任务,以便在每个边缘节点上更高效地进行批处理。例如,多个使用同一DNN模型的任务会被集中分配到一个节点,避免模型的重复加载和推理初始化开销。这种分配方法能够有效提高GPU的空间利用率。

在分布式DL任务执行中,通信延迟可能会影响整体性能。CoEdge系统通过测量带宽并计算通信延迟来应对这种挑战,并根据网络带宽的变化动态调整任务分配,以减少因延迟而错过任务截止时间的情况 。

3.3 批量DNN执行策略

在CoEdge系统中,批量DNN执行机制通过增加GPU空间利用率来提升各个边缘节点上的实时DNN推理任务性能。此设计基于观察到同一模型的批处理推理能够显著减少每次推理的平均时间。因此,CoEdge系统将使用相同DNN模型的任务整合在一起进行批量推理,以减少重复的模型加载和初始化时间。例如,如果多个任务使用YOLO模型,则将这些任务的数据合并,并一同送入模型进行推理。这种方法减少了资源消耗,提升了每个模型推理的整体效率。然而,批量大小越大,虽然可以提升GPU的使用率,但会导致每次推理所需时间增加,可能导致任务错过截止时间。

图4:通过批处理提高效率

CoEdge系统中包含一个DNN推理调度器,它控制不同模型推理的执行顺序和批量大小,以满足任务的实时性要求。调度器首先依据各任务的紧迫性选择待执行的模型推理队列中的任务。每个任务在分配到模型队列时,会被计算出最低的截止时间,然后调度器选择距离截止时间最近的任务来优先执行。

图5:单个节点上批量DNN任务的执行

此外,CoEdge系统对每种DNN模型在不同批量设置下的推理时间进行了离线分析,并在运行时动态确定适合的批量大小。调度器会在线上选择能够满足所有任务实时性需求的最大批量大小。对于每个模型的推理任务,调度器会比较任务的当前时间和推理执行时间,以确保任务能在截止时间内完成推理。例如,YOLO模型在批量大小为3时,推理时间缩短一倍,这种动态调整帮助CoEdge在不牺牲实时性前提下提升了GPU资源的利用率 。

3.4 GPU容器化

CoEdge设计了一种GPU感知的并发DL容器化机制,以支持在同一GPU上高效、隔离地并行执行多个深度学习(DL)任务。这种方法旨在解决边缘节点上不同DL任务间的兼容性和资源利用问题,因为当前低功耗边缘设备通常仅配备一个GPU且不支持GPU虚拟化。传统上,边缘设备上并行执行多个DL任务会面临两个主要问题:首先是不同DL任务可能使用不同的框架版本(如PyTorch或NumPy),而在同一容器中运行多个DL任务可能导致依赖冲突。例如,某些任务依赖NumPy的1.14版本,而另一些任务则要求低于1.23的NumPy版本,导致难以在同一环境中兼容多个DL任务。其次,如果将所有任务封装在单一容器中,并将容器绑定到GPU上,可能造成资源浪费,并难以实现任务间的独立执行。因此,多任务只能顺序执行,从而限制了资源利用效率。为解决上述问题,CoEdge采用了以下容器化设计:

任务分解与容器化:每个DL任务被分解为三个部分:CPU上的预处理、GPU上的DNN推理和CPU上的后处理。预处理和后处理被分别封装在独立的容器中,而所有DNN推理任务则共享一个GPU绑定的容器。这种设计确保了不同任务间的隔离,同时优化了GPU资源的利用率。

图6:GPU共享与内存隔离

ONNX格式转换:为避免软件依赖冲突,CoEdge将所有DNN模型转换为Open Neural Network Exchange(ONNX)格式。ONNX是一个通用模型格式,使得不同DL任务可以在相同的GPU容器中运行,进一步简化了环境依赖管理。

共享内存机制:不同容器间的数据传输通过共享内存实现,减少了通信延迟。具体而言,CoEdge通过传递共享内存地址来避免数据的多次复制,从而显著提高了跨容器通信的效率。

图7:GPU批处理

4.系统实现和分析

4.1 系统实现

CoEdge 的实现基于 KubeEdge、ROS2 和 TensorRT,旨在支持分布式、实时的深度学习任务。CoEdge 系统的核心构建在 KubeEdge 上,这是一种轻量化的边缘计算平台,用于管理边缘节点上的容器化应用。CoEdge 利用 ROS2 来管理多种异构数据源,特别适用于处理边缘节点上的多种传感器数据。每个边缘节点运行一个 ROS2 容器来读取传感器数据。为了加速边缘设备上的深度神经网络(DNN)推理,CoEdge 将所有模型转换为 TensorRT 格式。这一格式由 NVIDIA 提供,专门用于边缘平台的 DNN 加速。此外,模型被进一步转换为 ONNX 格式,以便在不同容器中兼容运行,确保模型的高效利用。

表1:系统资源

4.2 实验平台构建

CoEdge在大学校园中部署在由12个智能路灯节点组成的户外测试平台上。

图8:实验平台

每个路灯节点都配备了NVIDIA Jetson TX2计算板,以MIC-720-AI防水外壳封装,并附加了450 GB的SSD存储。节点间的通信通过多跳无线网络实现,平均带宽为80 Mbps。主节点与各路灯节点的连接则通过4G蜂窝网络进行。在实验室环境中,为了模拟控制网络带宽的情况,使用3个NVIDIA Jetson TX2计算板作为边缘节点,并将所有节点连接至PoE交换机以设置网络带宽。主节点由配备Intel 4核CPU和NVIDIA GeForce 960M GPU的笔记本电脑组成。CoEdge测试了四个DL任务,包括不同传感器与三种DNN模型的组合。使用YOLOv5s、ResNet 18和VGG19进行图像分类和对象检测任务,并将所有模型转换为ONNX格式并通过TensorRT加速。

4.3 评估指标

评估使用以下两项主要指标:

  • 截止时间未达成率(Deadline Missing Rate):用于衡量实时任务的完成情况,即在指定时间段内未达成截止时间的任务比例。该指标帮助量化CoEdge在分布式DL任务中的实时性能。
  • 端到端延迟(End-to-End Latency):指任务从启动到完成的总延迟,包括边缘节点间通信时间、预处理/后处理时间、DNN推理时间等。

4.4 测试结果

CoEdge在校园内的智能路灯平台上进行测试,任务包括实时交通监控、行人识别和车辆识别。实验结果表明,在任务优先级排序中(交通监控、行人识别、车辆识别),CoEdge在车辆通过检测区域前完成了实时检测,减少了存储和计算负担。

图9:截止时间未达成率

图10:端到端延迟

4.5 网络带宽对系统的影响

在室内测试中,通过在100 Mbps和1,000 Mbps的不同带宽下测试CoEdge的性能,结果表明,在较低带宽条件下,CoEdge的任务丢失率低于无任务卸载和简单全局分配两种基线方法。该结果表明,CoEdge即使在带宽限制下,仍能够优化任务分配策略,从而在网络波动环境中提高任务完成。

图11:不同网络带宽下CoEdge的实时性能

4.6 批量DNN执行的性能

在低负载和高负载条件下,分别使用ResNet和YOLO模型测试批量DNN执行性能。结果表明,与固定优先级和最早截止时间优先(EDF)两种基线方法相比,CoEdge在低负载条件下实现了0%的截止时间未达成率,而高负载条件下的任务完成率也优于基线方法。CoEdge通过有效的批量执行和优先级调整,显著降低了任务的截止时间未达成率。

图12:不同DNN工作负载下批量DNN执行的实时性能

4.7 容器化开销

CoEdge的GPU感知并发DL容器化机制通过隔离不同任务的运行环境,实现了DL任务的并发执行。实验结果表明,尽管容器化带来了额外的通信开销,但与单一容器的实现相比,CoEdge在执行多个DL任务时的额外延迟极小,仅增加了8.45毫秒。这表明CoEdge实现了高效的并发DL任务处理,并在保持任务隔离的同时优化了GPU资源的利用。

图13:容器化开销成本

5.讨论和分析

虽然CoEdge的评估是在智慧城市场景中进行的,系统的协作多边缘架构也可以应用于其他智能场景。CoEdge能够支持智能建筑、工厂、港口等场景中的边缘计算需求。例如,在智能港口场景中,各类边缘节点(如智能设备、起重机、卡车等)配备了摄像头、激光雷达等多种传感器。这些节点可以协同执行任务,例如自动识别路面卡车和运动追踪。在这种场景中,CoEdge的全局任务分配器可以将深度学习(DL)任务分配给每个设备节点,同时通过本地调度器支持每个节点上的高效并发DL任务执行。CoEdge可以与现有的边缘云卸载方案集成,通过将部分DL工作负载(例如部分模型层)卸载至云端,以减轻边缘节点的计算负担。然而,传统卸载方法可能导致边缘节点上资源竞争问题,因为剩余的部分推理工作仍需在边缘进行。在此情况下,可以采用模型共享的批处理方式来减少工作负载。然而,由于任务的卸载策略不同,处理时间可能会有所差异,因此在本地调度时需要考虑卸载策略,以准确估算批处理时间。虽然CoEdge的测试平台仅包含六个节点,但系统的设计能够扩展到更大规模的应用场景。由于每个节点主要处理来自附近传感器的数据,通常只需与相邻节点协同即可,而无需依赖系统的整体规模。即使模型种类和任务数量增加,CoEdge的本地调度器和全局任务分配器仍能在算法复杂度为 O(n)的情况下高效运行(其中 nnn 为任务数量或模型种类数量),从而适应更大规模应用的需求。CoEdge 的成功表明,该系统能够为需要实时、高效的数据密集型应用提供支持,为未来的智能城市及其他应用场景的边缘计算提供了新的可能性。

Ref:

CoEdge: A Cooperative Edge System for Distributed Real-Time Deep Learning Tasks

编译|小乔

审核|fafa


第二届线下自主机器人研讨会(ARTS)即将召开👇
第二届ARTS报名入口即详情须知
第二届ARTS奖学金通知
ARTS 2024 学术辩论通知抢“鲜”发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/463664.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统进程的描述与控制知识点

前趋图和程序执行 前趋图 定义: 前趋图是指一个有向无循环图,可记为 DAG,它用于描述进程之间执行的先后顺序图形表示: 程序的执行 程序顺序执行时,系统资源的利用率很低 程序顺序执行时的特征 顺序性封闭性可再现性 …

移远通信推出八款天线新品,覆盖5G、4G、Wi-Fi和LoRa领域

近日,全球领先的物联网整体解决方案供应商移远通信宣布,再次推出八款高性能天线新品,进一步丰富其天线产品阵容,更好地满足全球客户对高品质天线的更多需求。具体包括5G超宽带天线YECT005W1A和YECT004W1A、5G天线YECT028W1A、4G天…

k8s简单的指令以及图解

k8s简单的操作指令 1.kubectl get pods 查看全部的pods 也就是k8s中的最小颗粒度 2.kubectl describe podsname 查看pod的详情 3.kubectl get pods -n podsname 查看pod服务是否正常 4.kubectl logs -f 容器name --tail1000 -n podname 查看pod 的日志 5.kubectl get service …

Python复习1:

一、数据类型 1.数字:int、float、bool 2.字符串:string 3.列表:list 4.集合:set 5.字典:dictionary 二、Test 1.print输出固定格式 num110 str1"hello world" #输出的固定格式 print("num1%d&…

UVM验证该去大公司还是中型公司呢?

无论是UVM验证还是系统C验证亦或是其它,大公司的普遍特点是做过多层封装、已经准备好轮子、各式各样的工具库。如果一毕业就进大公司,那你会在UVM等基础之上再学习公司封装的那部分工具、脚本或者是库,一旦掌握以后你接下来将会脱离一些初级的…

法律文件智能识别:免费OCR平台优化数字化管理

一、系统概述 在法律行业,纸质文件的数字化需求日益迫切,合同、判决书、协议等文件的管理成为法律部门的一大难题。传统手动输入不仅耗时,且易出错。思通数科的OCR识别平台应运而生,以其开源、免费的特性为法律文档管理提供了智能…

koa + sequelize做距离计算(MySql篇)

1.核心思路 1.利用sequelize的fn方法调用MySql原生函数(st_distance_sphere、point) 2.这里利用到了MySql的原生函数,不懂可以去看看mysql的函数知识 2.核心代码 //st_distance_sphere、point函数用来计算当前经纬度和目的地经纬度 //col…

小程序分包看完这一篇秒懂

前言 在小程序开发中,分包是一种优化加载时间和用户体验的方法。通过将小程序拆分成多个包,可以按需加载,从而减少首次加载时间。很多刚涉及小程序开发的小伙伴对小程序分包都相对茫然或者头疼。也不知道该合适进行分包,怎么进行…

第02章 MySQL环境搭建

一、MySQL的卸载 如果安装mysql时出现问题,则需要将mysql卸载干净再重新安装。如果卸载不干净,仍然会报错安装不成功。 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0…

1.探索WebSocket:实时网络的心跳!

序言 你可能听说过"WebSokcet"这个词,感觉它好像很高深,但其实它是一个超级酷的小工具,让我们在Web应用里实现实时通信。想象一下,你可以像聊天一样,在浏览器和服务器之间来回“畅聊“,没有延迟…

Qt6 CMake 中引入 Qt Linguist 翻译功能

qt cmake 使用自带翻译工具配置步骤 创建Qt CMake 程序大体流程配置项目 CMake 及 代码使用流程最终CMake 如下最终工程链接为:参考 创建Qt CMake 程序 大体流程 配置项目 CMake 及 代码 在CMake 中添加如下代码, 导入相关的翻译库 find_package(QT NAMES Qt6 Qt…

【Linux】——如何安装g++

g的安装 sudo yum install -y gcc-c

FET113i-S核心板已支持RISC-V,打造国产化降本的更优解 -飞凌嵌入式

FET113i-S核心板是飞凌嵌入式基于全志T113-i处理器设计的国产工业级核心板,凭借卓越的稳定性和超高性价比,FET113i-S核心板得到了客户朋友们的广泛关注。作为一款拥有A7核RISC-V核DSP核的多核异构架构芯片,全志科技于近期释放了T113-i的RISC-…

基于python的机器学习(二)—— 使用Scikit-learn库

目录 一、样本及样本划分 1.1 划分样本的方法 1.1.1 train_test_split()函数 1.1.2 时间序列划分 1.1.3 交叉验证 二、导入或创建数据集 2.1 导入Sklearn自带的样本数据集 2.2 利用Sklearn生成随机的数据集 2.3 读入自己创建的数据集 2.3.1 用Python直接读取文本文件…

【LQB15_模拟】C风险对冲

Description 小蓝所在的蓝星集团即将建立执行一个重要的项目,在建立项目的时候需要考虑执行这个项目对集团的风险。他们组有三个备选方案,方案A的风险评估值为a,方案B的风险评估值为b,方案C的风险评估值为c。方案风险评估值越低&…

第二十八章 Vue之自定义指令

目录 一、引言 二、自定义指令的注册和使用方式 2.1. 自定义指令-全局注册使用 2.2. 自定义指令-局部注册使用 三、自定义指令完整代码 3.1. 自定义指令全局注册/使用 3.1.1. main.js 3.1.2. App.vue 3.2. 自定义指令局部注册/使用 3.2.1. main.js 3.2.2. App.vue …

银行信贷知识竞赛活动策划方案

为了落实20xx年省分行工作会议精神,进一步加强信贷队伍建设,普及和强化员工对信贷业务知识的掌握和运用,提高信贷从业人员素质,推动全省农行20xx年员工成长计划实施,实现我行全面提升信贷管理水平,促使信贷…

【学术论文投稿】探索嵌入式硬件设计:揭秘智能设备的心脏

【IEEE出版】第六届国际科技创新学术交流大会暨通信、信息系统与软件工程学术会议(CISSE 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看:https://ais.cn/u/nuyAF3 目录 引言 嵌入式系统简介 嵌入式硬件设计的组成部分 设…

谷歌浏览器报“喔唷,崩溃啦!”怎么办?

表现 Chrome浏览器所有页面崩溃,“喔唷,崩溃啦!( STATUS_INVALID_IMAGE_HASH )” 原因 Google 在79版本(2019年12月20号左右)的更新中又重新启用了Renderer Code Integrity Protection(渲染器代码完整性保…

双因子认证(Two-factor authentication)简介

一、核心概念 双因子认证(Two-Factor Authentication,简称2FA)是一种身份验证机制,它要求用户提供两种不同类型的证据来证明自己的身份,通常包括用户所知道的(如密码)、用户所拥有的&#xff0…