【架构】面向人工智能 (AI) 的硬件的可靠性(2021)
由于激进的技术扩展,现代系统越来越容易受到可靠性威胁的影响,例如软错误、老化和工艺变化。这些威胁在硬件级别表现为位翻转,并且根据位置,可能会损坏输出,从而导致不准确或潜在的灾难性结果。
传统的缓解技术基于冗余,例如双模块化冗余 (DMR) [16] 和三重模块化冗余 (TMR) [17]。然而,由于 DNN 的计算密集型性质,这些技术会导致巨大的开销,对系统的效率产生负面影响。
纠错码 (ECC) 和指令重复 (ID) [18] 也存在类似的问题。因此,需要替代缓解技术,以低成本提高基于 DNN 的系统的弹性,同时不影响效率。这些技术通常是通过利用 DNN 的固有特征并仅在系统中的关键位置部署保护或将关键错误转换为非关键错误来开发的。
A. 硬件引起的可靠性威胁

上图突出显示了硬件引起的可靠性威胁的主要类型,以及它们如何影响基于 DNN 的系统的功能。
- 软误差是由于高能粒子撞击硬件而引起的瞬态故障,这些故障在系统中表现为位翻转,并可能传播到应用层并影响系统的功能/精度。
- CMOS器件的老化与各种物理现象有关,例如偏置温度不稳定(BTI)、热载流子注入(HCI)和电迁移(EM)老化会导致时序错误,从长远来看也可能导致永久性故障。
- 工艺变化是由于制造过程中的缺陷而导致的硬件特性(例如晶体管通道长度和导线电阻)与所需特性的变化。这些变化通常会影响硬件的性能和效率,因为它们需要增加电源电压或降低工作频率以确保正确的功能。极端变化会导致永久性故障,从而影响制造过程的产量。
B. 具有成本效益的故障缓解技术
已经提出了各种技术来解决基于 DNN 的系统中硬件引起的可靠性威胁。
1) 软错误缓解:
软错误是暂时性故障,在硬件级别表现为随机位翻转。这些故障有可能严重降低系统的性能,特别是当它们发生在关键位置时。在硬件层面,已经提出了改进的SRAM单元设计。辐射强化是另一种防止软错误的技术,它用更强大的节点替换易受攻击的硬件节点,提供更高的弹性[22]。但是,这些技术需要对硬件的大多数部分进行修改(附加硬件),这会导致高开销。
为了克服这个问题,最近提出了范围限制技术[23][24],该技术定义了激活值的工作范围,并将所有异常值视为故障,并根据一些预定义的策略将它们映射到该范围内。
2) 永久故障缓解:
在 DNN 的背景下,永久性故障缓解的主要目标是提高专用 DNN 加速器的制造良率。由于永久性故障是静态故障,因此对付它们最有效的技术之一是故障感知修剪(FAP)[25]。FAP 利用 DNN 的修剪弹性,通过丢弃映射到故障处理元素 (PE) 的相应计算来缓解永久性故障。它需要进行制造后测试来识别有故障的 PE,并在运行时使用此信息来识别需要绕过哪些 PE。
![(a) 设计用于加速 DNN 推理的脉动阵列。(b) 改进的PE设计,以减轻永久性故障[25]。(c)改进了PE设计,以减轻时序误差[27]。](https://img-blog.csdnimg.cn/direct/c1ac77ba155649a2b8bb27e88b1ae2f4.png)
3) 老化缓解:
CMOS电路中的老化会导致时序误差。为了检测和减轻DNN硬件加速器计算阵列中时序误差的影响,Zhang等人提出了ThunderVolt[27],这是一种利用剃刀触发器以及DNN的修剪弹性来减轻时序错误的技术。在检测到时序错误时,ThunderVolt 会通过丢弃其计算来传递正确的结果,从而从后续的 MAC 操作中窃取一个周期。计算的删除避免了整个数组的停滞,而 DNN 对修剪的弹性有助于保持基线准确性。
为了缓解DNN加速器片上SRAM单元的老化,最近,Hanif等人提出了DNN-Life[28]。该技术采用读写传感器来平衡SRAM每个单元的占空比,从而最大限度地减少NBTI老化,这是现代纳米级器件中最突出的老化类型。
C. 开发高度可靠的 DNN 的挑战
缓解技术的集成:对于每种类型的可靠性威胁,已经提出了各种缓解技术,其中一些是针对特定模块设计的,例如片上存储器或计算结构。每种缓解技术通常也会影响系统对其他可靠性威胁的弹性。因此,在构建一个强大而高效的基于 DNN 的系统时,重要的是要研究不同缓解技术的相互作用,并选择一组合适的技术,在定义的约束和条件下提供最佳弹性。
对鲁棒算法的需求:深度学习的核心问题之一是对抗性示例,即注入小扰动会导致显著的精度损失。尽管对抗性示例仅在安全上下文中被认为是重要的,但它们还提供了有关 DNN 对故障/错误的一般弹性的信息。强大的 DNN 可提供对对抗性噪声的高弹性,这将说明对可靠性威胁的更高弹性。研究人员提出了各种方法来提高 DNN 对对抗噪声的鲁棒性;然而,这些方法要么提供微小的收益,要么仅在特定条件下显示出改进。因此,迫切需要算法/方法,以产生设计稳健的模型。
新兴技术对新型测试技术的需求:内存处理 (PIM) 因其实现高能效的潜力而备受关注。它们通常基于新兴存储器,如ReRAM和自旋电子器件。此类器件具有独特的故障机制,无法用传统故障模型建模,也无法用传统测试方法进行测试[29;此外,PIM中的内存具有两种配置(存储和计算),这一事实对其测试提出了额外的要求[1;29]。
参考文献
https://ieeexplore.ieee.org/document/9465409
相关文章:
【架构】面向人工智能 (AI) 的硬件的可靠性(2021)
由于激进的技术扩展,现代系统越来越容易受到可靠性威胁的影响,例如软错误、老化和工艺变化。这些威胁在硬件级别表现为位翻转,并且根据位置,可能会损坏输出,从而导致不准确或潜在的灾难性结果。 传统的缓解技术基于冗…...
Unity3D MVC开发模式与开发流程详解
前言 MVC(Model-View-Controller)是一种常用的软件架构模式。将MVC应用于Unity3D开发可以提高项目的可维护性和可扩展性,使代码更加清晰和易于理解。本文将详细介绍Unity3D中MVC开发模式的应用以及开发流程,并给出技术详解和代码…...
简单介绍一下Android里面的IntentFirewall
源码链接 https://android.googlesource.com/platform/frameworks/base//633dc9b/services/java/com/android/server/firewall/IntentFirewall.java 源码如下: package com.android.server.firewall; import android.content.Intent; import android.content.Inte…...
Stable Diffusion 3 发布及其重大改进
1. 引言 就在 OpenAI 发布可以生成令人瞠目的视频的 Sora 和谷歌披露支持多达 150 万个Token上下文的 Gemini 1.5 的几天后,Stability AI 最近展示了 Stable Diffusion 3 的预览版。 闲话少说,我们快来看看吧! 2. 什么是Stable Diffusion…...
【后端】springboot项目
文章目录 1. 2.3.7.RELEASE版本搭建1.1 pom文件1.1.1 方式一1.1.2 方式二 1.2 启动类1.3 测试类 2. 引入Value乱码问题解决 【后端目录贴】 1. 2.3.7.RELEASE版本搭建 1.1 pom文件 1.1.1 方式一 <parent><groupId>org.springframework.boot</groupId><…...
React Native调用摄像头画面及拍照和保存图片到相册全流程
今天主要做了一个demo,功能很简单,就是调用手机摄像头画面,并且可以通过按钮控制拍照以及将图片保存到手机相册的功能,接下来我将从创建项目开始一步一步完成这个demo,各位只需要复制粘贴即可 创建React Native项目 npx react-native init yx_rnDemo --version 0.70.6 // 这里…...
Kubernetes基本部署概念
文章目录 命名空间(Namespaecs)查看命名空间查看带有命名空间对象下资源 文件存储持久卷(pv,Persistent Volumes)卷容量卷模式(volumeMode)访问模式(accessModes)回收策略…...
QT c++ 海康红外热像仪
//本文描述2通道海康通道红外热像仪预览和抓图 #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); userID-1; …...
OpenAI 的 GPTs 提示词泄露攻击与防护实战:防御卷(一)
前面的OpenAI DevDay活动上,GPTs技术的亮相引起了广泛关注。随着GPTs的创建权限开放给Plus用户,社区里迅速涌现了各种有趣的GPT应用,这些都是利用了Prompt提示词的灵活性。这不仅展示了技术的创新潜力,也让人们开始思考如何获取他…...
中科大计网学习记录笔记(十五):可靠数据传输的原理
前前言:看过本节的朋友应该都知道本节长度长的吓人,但其实内容含量和之前的差不多,老师在本节课举的例子和解释比较多,所以大家坚持看完是一定可以理解透彻的。本节课大部分是在提出问题和解决问题,先明确出现的问题是…...
五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)
一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)࿰…...
力扣:93. 复原 IP 地址
回溯: 1.先定义一个接收的集合,之后再定义一个记录小数点的变量。之后编写回溯函数,终止条件为小数点的个数为3时,同时要判断最后一段的组合的值是否属于ip地址的范围。之后再用for循环来遍历ip地址的组合,先判断组合…...
利用序列化和反序列化实现深拷贝
利用序列化和反序列化可以实现对象的深拷贝,具体步骤如下: 将要深拷贝的对象序列化为字节流。从字节流中反序列化出一个新的对象,即完成了深拷贝。下面是一个示例代码: import java.io.*;class MyClass implements Serializable {private static final long serialVersion…...
【AHK】68键键盘键位布局优化/esc改退格键/回车键
本人习惯使用~作为退格键,但是由于keychron 68键的布局只能用esc平替~来修改,然后也将回车键通过alt和大小写锁定键一起触发 esc::bs ;次步骤与下面步骤相对应,如果是用send bs方式则下面的不生效^esc:: ;通过建立 保留esc功能 send {esc} re…...
计算机体系架构初步入门
🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 目录 1 计算机五大…...
常见的序列化数据结构方法及其优缺点汇总
文章目录 1. JSON (JavaScript Object Notation)2. XML (eXtensible Markup Language)3. YAML (YAML Aint Markup Language)4. Protobuf (Protocol Buffers)5. MessagePack6. BSON (Binary JSON)7. Avro8. Thrift9. CBOR (Concise Binary Object Representation) 将常见的序列化…...
华清远见嵌入式学习——驱动开发——作业1
作业要求: 通过字符设备驱动分步注册过程实现LED驱动的编写,编写应用程序测试,发布到CSDN 作业答案: 运行效果: 驱动代码: #include <linux/init.h> #include <linux/module.h> #include &l…...
小苯的IDE括号问题(CD) -----牛客小白月赛87(双链表)
C题:C-小苯的IDE括号问题(easy)_牛客小白月赛87 (nowcoder.com) D题: D-小苯的IDE括号问题(hard)_牛客小白月赛87 (nowcoder.com) C题代码: #include<bits/stdc.h>using namespace std…...
Redis如何修改key名称
点击上方蓝字关注我 近期出现过多次修改Redis中key名字的场景,本次简介一下如何修改Redis中key名称的方法。 1. 命令行方式修改在Redis中,可以使用rename命令来修改Key的名称。这个命令的基本语法如下: RENAME old_key new_key 在这里&#…...
浅谈redis之SDS
SDS 什么是SDSSDS结构len的作用free的作用buf的作用简单示例 SDS机制重新分配内存分配内存机制小于1MB情况大于1MB情况为什么这样分配 惰性释放内存 什么是SDS SDS:全名 simple dynamic string,意为简单动态字符串,作为redis里的一种数据结构…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
