阅读导航
- 先补背景 Chiplet 与 PIM 是什么
- 为什么 AI 负载会热到降频
- THERMOS 的两级调度框架
- 问题建模 目标函数与约束
- 状态动作空间与奖励设计
- MORL 学习动力学与 DDT 策略
- 实验对比与结果解读
- 开销分析局限与总结
这一篇在干嘛?
这篇论文叫 THERMOS,研究的是:当一颗封装里塞了几十个不同工艺的存内计算芯粒、上面跑着源源不断的 AI 推理任务时,怎么调度才能同时做到”跑得快、耗电少、还不发烫”。作者用多目标强化学习(MORL)训练了一个调度策略,运行时你给它一个偏好向量,它就能给出帕累托最优的方案——最高比现有方法快 89%、省电 57%,而调度本身的开销几乎可以忽略。适合对计算机体系结构、芯片封装、强化学习感兴趣的初学者,只要懂一点神经网络的基本概念就能读。
先补背景 Chiplet 与 PIM 是什么
要理解 THERMOS 在解决什么问题,得先补两块背景知识:Chiplet(芯粒/小芯片)和 PIM(存内计算,Processing-in-Memory)。这两者正是这篇论文的舞台。
Chiplet:把一颗大芯片拆成很多小芯片。 传统造芯片的思路是在一整块硅片(monolithic die,单片式晶粒)上做出整个系统,这叫单体集成。但晶体管越做越多,良率(yield,即无缺陷芯片的产出比例)就成了噩梦——芯片面积越大,出现缺陷的概率越高,一片坏掉整颗报废。Chiplet 思路反其道而行:把系统拆成几十上百个小芯粒(chiplet),再用先进封装技术(比如 2.5D 的硅中介层 interposer)把它们拼装在一起。每个小芯粒面积小、良率高、成本低,而且不同芯粒可以用完全不同的工艺制造——有的用新兴存储器,有的用 SRAM,有的专门做 I/O。这就是所谓的异构集成(heterogeneous integration):在一颗封装里组合多种技术,取长补短。论文图 1 展示的正是这样一套系统。
PIM:让计算搬进内存里。 传统的冯·诺依曼架构(von Neumann architecture)中,计算和存储是分开的,数据要在处理器和内存之间来回搬运。对深度学习(DL,Deep Learning)这种数据密集型应用来说,搬运数据的能耗和延迟往往远超计算本身,这就是著名的内存墙(memory bottleneck)问题。PIM 的解法很直接:既然模型权重(weights)存放在内存里,那就在内存里直接做计算。深度学习的核心运算是矩阵向量乘法(MVM,Matrix-Vector Multiplication),而交叉阵列(crossbar arrays)天生擅长这件事——把输入值编码成电压加到阵列的行上,每条列线上积累的电流在物理上就等于一次乘加运算,再用模数转换器(ADC,Analog-to-Digital Converter)把模拟电流转回数字值。一次矩阵乘法就这么”物理地”完成了。
不同的 PIM 技术,各有各的脾气。 论文考虑了四种主流 PIM 实现,这正是”异构”二字的来源:
- 标准型(Standard):基于 ReRAM(阻性存储器,Resistive RAM)的宏单元,输入按 1 比特流式处理,每列交叉阵列都配独立的 ADC。精度好,但 ADC 又多又耗电。
- 共享 ADC 型(Shared ADC):基于 SRAM,让多列共享一个 ADC,靠跨列求和减少 ADC 数量,省面积也省电。SRAM 用 8 晶体管(8T)单元,比 ReRAM 的 1T-1R 结构大很多,但稳定性更好。
- 无 ADC 型(ADC-less):也叫近存计算(NMC,Near-Memory Computing),干脆放弃模拟域运算,每个存储单元直接接数字 MAC(乘累加,Multiply-Accumulate)单元,全程数字处理,彻底绕开 ADC。
- 累加器型(Accumulator):还是 ReRAM,但用模拟累加器把多个周期的输入先加起来再转数字,减少昂贵的 ADC 操作频率。
常见坑:别把"异构"理解成"有大有小"
之前很多异构芯粒工作(比如 Big-Little Chiplets)指的是芯粒尺寸不同——大芯粒交叉阵列多、小芯粒少。而 THERMOS 的异构是 PIM 技术路线的不同:ReRAM 和 SRAM 工艺根本无法做在同一块单片芯片上,所以异构 PIM 系统只能靠 chiplet 封装来实现。这也是为什么这个问题天然属于多芯粒架构。
图 1(b) 用雷达图对比了同构与异构系统的执行时间、能耗、存储密度和热敏感性:任何一种同构方案都有明显短板,而异构方案在四个维度上的综合权衡最好。这就是 THERMOS 要挖掘的潜力——问题在于,怎么调度才能把这个潜力真正变成性能。
图 1:异构多芯粒 PIM 架构总览。(a) 包含四个芯粒簇(标准型、共享 ADC、无 ADC、累加器型)的异构 PIM 系统,DL 负载的各神经层先被分配到某个簇,再分配到簇内具体芯粒;(b) 同构与异构 PIM 架构在执行时间、能耗、存储密度和热敏感性上的雷达图对比。
为什么 AI 负载会热到降频
补完了 Chiplet 和 PIM,我们来看这篇论文标题里最关键的词:热感知(Thermally-Aware)。为什么调度器必须关心温度?
第一层原因:芯粒挤在一起,热量无处可逃。 单片芯片本来就有热瓶颈,而多芯粒封装把几十个 die 塞进同一颗封装,功率密度进一步上升,相邻芯粒之间还会互相”烤”——一个芯粒发烫,旁边的芯粒温度也跟着涨。设计阶段的优化(比如调整芯粒在中介层上的摆放位置和间距)能缓解一部分,但没法应对运行时的突发状况,比如热失控(thermal runaway,温度恶性循环上升)。
第二层原因:PIM 芯片不能靠降频降温。 对传统 CMOS 芯片来说,管理温度的标配手段是 DVFS(动态电压频率调节,Dynamic Voltage-Frequency Scaling)——太热了就降频降压,减少功耗。但 PIM 不吃这一套:它的模拟电路是按特定电压水平精心设计的,改动电压会直接影响模拟计算的精度。也就是说,PIM 芯片一旦”发烧”,既不能降频降压,还得继续保证计算结果正确,管理手段非常受限。
第三层原因(也是 PIM 特有的):温度直接影响计算精度。 ReRAM 这类非易失性存储器(NVM)把权重以电导值(conductance)的形式存放在交叉阵列里,而电导值对温度非常敏感——温度一高,存储的电导就漂移,矩阵乘法的结果就不准了,推理精度随之下降。论文给不同类型的芯粒划了不同的温度红线:ReRAM 芯片(标准型和累加器型)的上限是 330K,而 SRAM 芯片(共享 ADC 型和无 ADC 型)可以容忍到 358K(也就是 85°C)。
THERMOS 的应对方式是阈值节流(threshold-based throttling):一旦某个芯粒的温度 超过该类型的上限 ,就让它暂停手头的任务、也不再接新任务,只消耗少量漏电功耗维持交叉阵列里存储的权重。温度降回阈值以下后再恢复执行。这等于用”牺牲一点执行时间”换”绝不牺牲精度和可靠性”。
常见坑:以为调度器只需要看算力和内存
传统调度教科书里,调度决策的输入通常是”任务需要多少计算、芯片还剩多少资源”。但在异构 PIM 系统里,温度是一等公民:一个”此刻最优”的分配方案,可能让某几个高性能芯粒持续满载而过热,触发节流,整体反而更慢。THERMOS 的核心贡献之一,就是让调度策略在决策时就把每个动作的热后果考虑进去。
理解了”为什么要怕热”,我们再来看 THERMOS 用什么办法又快又省又凉快。
THERMOS 的两级调度框架
THERMOS 的总体框架如图 2(a) 所示:宿主处理器(host processor)把源源到来的 DL 推理任务派发给多芯粒 PIM 系统,新任务先在作业队列(job queue)里排队,THERMOS 从队列中取出模型,逐层调度到可用的芯粒上。它采用分层调度(hierarchical scheduling)架构,把一个困难的大问题拆成两个层次的小问题。
图 2:THERMOS 框架概览。(a) THERMOS 与多芯粒 PIM 环境的集成方式;(b) 能耗与执行时间之间的示例帕累托前沿。
第一级:MORL 策略选”类型”。 对于 DL 模型的每一个神经层(neural layer,可以是一个全连接层、卷积层或注意力层),多目标强化学习(MORL,Multi-Objective Reinforcement Learning)策略从四种 PIM 类型中挑选一种,也就是选择一个芯粒簇(chiplet cluster,由同类型芯粒组成的逻辑分组)。为什么用强化学习?因为调度是一个动态的序贯决策问题:芯粒的可用性、温度、剩余内存都在实时变化,而 RL 智能体恰恰擅长在与环境的持续交互中学出适应性策略。
这里有一个关键设计:一个策略,多种偏好。传统 RL 处理多目标优化的办法要么是把多个目标加权求和压成单一目标,要么为每个目标单独训练一个策略——后者训练时间和存储开销都会成倍增长。THERMOS 则训练单一策略,运行时接收一个偏好向量(preference vector)(各分量之和为 1),动态适配目标:论文考虑三种偏好——最小化执行时间、最小化能耗、以及两者的平衡。训练好的策略对任意偏好向量都能给出帕累托最优(Pareto-optimal,即不牺牲任何一个目标就无法再改进另一个目标)的解,如图 2(b) 所示的帕累托前沿。
第二级:邻近驱动算法选”具体芯粒”。 MORL 选定了类型之后,还需要决定把这一层放到该类型下的哪几颗物理芯粒上。这一步由一个邻近驱动(proximity-driven)算法完成,核心目标是压缩芯粒间通信成本。它还会处理一种边界情况:如果某一层太大、单颗芯粒的本地内存装不下,就进行分片(tiling),先尽量填满一颗芯粒,不够就继续选同类型的下一颗,直到整层分配完毕。
为什么两级分层是聪明的做法?因为如果让 RL 直接为每一层挑选具体芯粒,动作空间会随着芯粒数量爆炸(这套系统有约 80 颗芯粒),探索起来又慢又贵。分层之后,RL 只需要在 4 个簇里做选择,动作空间极小;而”在同类芯粒中挑距离最近的那颗”这种有明确规则的子问题,交给启发式算法反而又快又好。这正是全文最重要的设计哲学:学习该学的,规则该规则的。
问题建模 目标函数与约束
现在把调度问题形式化。论文用两个图来刻画问题和系统。
DL 刻画图(DCG,DL Characterization Graph):一个有向图 ,顶点集合 中的每个顶点 代表一个神经层,携带二元组 —— 是该层权重的内存需求, 是该层需要的 MAC 运算总数;边集合 中的边 表示从第 层流向第 层的激活值(activations)数据量。DL 模型一旦确定,这些量都可以事先算出来。
架构刻画图(ACG,Architecture Characterization Graph):有向图 ,顶点集合 中每颗芯粒 用五元组 刻画—— 是 PIM 类型, 是交叉阵列总内存, 是 时刻的可用内存, 是 时刻的最高温度, 是允许的最高温度;边集合 中的链路 带有延迟和每比特能耗属性,由 NoI 拓扑决定。
假设一个新的 DL 模型要处理一批输入(比如用 ResNet50 处理一批图片),我们的目标是找到调度策略 ,把神经层 映射到芯粒 上,在满足约束的前提下按偏好向量共同优化执行时间 和能耗 。形式化的优化问题如下:
这四行分别对应:目标函数(按偏好加权最小化延迟与能耗)、热约束(所有被调度到的芯粒温度不超限)、偏好归一化(运行时给定的偏好分量之和为一)、以及容量约束(模型总权重必须装得下系统可用内存)。
热约束的具体执行方式就是上文提到的阈值节流,阈值按 PIM 类型区分:
注意这个约束是”硬”的:调度策略不能为了跑得快而短暂越温——因为对 NVM 型 PIM 来说,温度越限直接意味着精度劣化,这不是可以事后补救的误差。节流期间芯粒只消耗漏电能耗来保住权重,直到温度回落才恢复。
状态动作空间与奖励设计
调度问题被建模为一个马尔可夫决策过程(MDP,Markov Decision Process),由五元组 定义: 和 分别是状态空间和动作空间, 是状态转移概率, 是累积回报, 是折扣因子。RL 智能体逐层观察系统状态、逐层做出调度决策。下面看三个核心设计。
状态构造:三类特征拼成状态向量 。 全部特征都做归一化以保证训练稳定。
- 层特征:当前层 的内存需求 、MAC 运算量 、以及总输入激活量 (决定了这一层的通信开销)。
- DL 负载特征:还没调度的层数 、剩余各层总内存需求 、剩余各层总计算量 、剩余各层总激活量,以及待处理的输入帧总数 。这些”前瞻”特征让智能体学会给后面的层留足资源——比如前面的层少占大芯粒的内存。
- PIM 簇特征:每种 PIM 类型在 时刻的总可用内存 、该类型下的最高温度 ,以及上一层被调度到的位置 (用于推理当前决策的通信代价)。注意特征都聚合到簇级别——因为 RL 只选簇,不选单颗芯粒。
动作空间:小而离散。 动作空间 是一个长度等于簇数量的向量,每个分量代表选择对应簇的概率,RL 智能体用 argmax 选出簇——本质上是个分类问题。如果某一层大到单簇装不下,智能体会对剩余部分继续做决策。论文也讨论过为什么不用连续动作空间一步到位地分配到具体芯粒:连续空间的可能动作数量爆炸,探索起来计算代价极高。离散的小动作空间加上分层设计,让学习又快又稳。
无效动作屏蔽(invalid action masking)。 训练早期,智能体可能选中一个内存已耗尽的簇。THERMOS 不是靠巨额负奖励去”罚”它,而是在 softmax 之前把无效动作对应的输出值设为 ,从机制上杜绝这类选择。这样做的好处是探索更高效、奖励结构更简单、学习更稳定。
奖励设计:本文最有意思的工程细节。 智能体的奖励是一个向量,由整个 DL 负载的总执行时间和总能耗取负值构成——RL 最大化奖励,取负就等价于最小化这两个目标,且奖励向量化让每个目标可以单独学习。
但这里有两个现实的坑。其一,奖励是延迟的:所有层调度完之后推理才开始,中间动作的即时奖励全是零。其二,奖励是异步的:系统同时执行多个 DL 负载,新任务会不断到来,多个任务的执行相互重叠,完成顺序可能与到达顺序完全不同——论文图 4 举的例子是三个负载按 1→2→3 到达,却按 3→1→2 的顺序完成,导致奖励归属错乱。如果只是笼统地在一个负载结束时发一笔”打包奖励”,一次后续决策引发的节流惩罚可能会错误地记在之前某个优秀决策头上。图 4 直观展示了这个时间错位问题,以及无温度违规与有温度违规时奖励的分配方式。
图 4:无温度违规时,确定性的运行时间与能耗作为主奖励,将奖励与近期动作关联;出现违规时,额外的停顿时间和能耗开销作为次奖励在执行结束后补发。与此同时 RL 智能体继续调度其他 DL 负载,完成顺序可能是异步的。
THERMOS 的解法是奖励拆分(reward splitting):把奖励分成两部分——主奖励(primary reward)反映理想条件下的确定性执行成本,在负载完成调度后立即发放,帮助智能体建立”动作→结果”的即时因果关联;次奖励(secondary reward)则涵盖非确定性效应(节流引入的额外停顿时间、漏电导致的额外能耗),在实际执行完成后补发。虽然次奖励相对动作仍是异步的,但 RL 算法本来就会优化累积回报,所以这个两段式设计能兼顾因果归因和长期最优。
通关标准:你能独立回答这三个问题吗
- THERMOS 的状态里为什么要放”上一层调度位置 ”?(提示:激活值要在层与层之间流动,物理距离决定通信成本。)
- 为什么用无效动作屏蔽而不是大负奖励?(提示:屏蔽从分布上杜绝无效选择,还省去奖励调参。)
- 主奖励和次奖励分别解决什么问题?(提示:前者管因果归因的及时性,后者管热节流等动态效应。)
MORL 学习动力学与 DDT 策略
接下来是本文技术上最核心的部分:这个多目标策略到底是怎么训练出来的。
Actor-Critic 骨架。 THERMOS 采用 actor-critic(演员-评论家)架构:actor 依据策略 选择动作,critic 用价值函数评估预期收益。多目标问题的关键在于把价值函数向量化为 ,让每个目标可以独立学习,再借助偏好向量生成整条帕累托前沿。critic 用一个三隐藏层的全连接神经网络近似——但它只在训练期使用;训练完成后的 actor(也就是真正部署的调度策略)另有玄机。
DDT:可微分决策树。 论文没有用神经网络做 actor,而是采用了可微分决策树(DDT,Differential Decision Tree),结构如图 3(a) 所示。传统决策树每个节点做一次二元判断;DDT 的节点则对整个状态向量的线性组合(再叠加偏好向量)做加权求和,过一遍 sigmoid 激活函数,因此能表达复杂的非线性决策边界。叶子节点输出一个长度等于动作空间大小的向量,经 softmax 得到动作的概率分布。“可微分”意味着整棵树可以用梯度下降端到端地训练,无缝接入 RL 算法。选 DDT 而不是神经网络的动机有两个:可解释性(树的路径可以人读)和高效率(推理时只需向量乘和 sigmoid,极快——后面开销分析会给出具体数字)。
图 3:(a) 深度为 2 的 DDT 结构(、 等为可学习参数, 为选择某簇的概率);(b) 训练期间 RL 智能体与多芯粒 PIM 环境的交互过程。
训练算法:改造版 PPO。 训练采用近端策略优化(PPO,Proximal Policy Optimization),利用优势函数(advantage function)来稳定更新。给定奖励向量 和价值函数向量 ,优势函数也是向量:
直观地说,优势衡量的是”这个动作比平均水平好多少”。DDT 策略的损失函数在 PPO 的裁剪目标基础上,用偏好向量内积把优势向量标量化:
其中重要性采样比率定义为:
把向量优势按当前偏好压成一个标量, 是裁剪系数,防止新策略偏离旧策略太远导致训练崩坏。critic 的损失就是标准的时序差分(TD,Temporal Difference)目标的均方误差:
并行训练三种偏好。 论文训练单一 DDT,同时学习三种偏好:最小化执行时间 、最小化能耗 、以及均衡 。训练以回合(episode)为单位:每个回合重置环境时随机选定目标吞吐率,让智能体见过各种负载强度;回合内对当前 DL 模型逐层做出簇选择,选出的簇交给邻近驱动算法落到具体芯粒,直到整个模型映射完毕;然后基于目标函数计算奖励向量,进入队列中的下一个模型。为了高效训练多目标,系统用多线程并行跑三个偏好环境,各自收集 (状态, 动作, 奖励) 轨迹,回合结束时汇总更新同一个 actor-critic 模型。由于三个线程并发执行,总训练时间和单环境几乎相同。
第二级的邻近驱动算法逻辑很简洁:因为 DCG 基本是线性的(每一层主要把激活传给下一层),算法先找到上一层用过的芯粒 ,计算它们到目标簇内每颗有剩余内存的芯粒的加权距离,按距离排序,然后逐颗填满、逐层推进。这样层间激活的搬运距离最短,通信开销最小。
通关标准:抓住 MORL 的精髓
检验你是否真正理解了这一节:THERMOS 训练的是”一个”策略,为什么能输出”三种”行为?答案是:偏好向量 是策略网络的输入之一,同一个网络对不同的 会给出不同的动作分布——帕累托前沿被”编码”进了单一模型的参数里,运行时按需调用,无需重新训练。这正是它比”每个目标训一个策略”的方案省时省存储的根本原因。
实验对比与结果解读
方法讲完了,来看这套框架到底强多少。实验部分信息量很大,我们分块解读。
实验设置。 目标架构是一个 2.5D 异构多芯粒系统,包含四种 PIM 芯粒簇,具体配置见表 3。芯粒数量(25 颗标准型、28 颗共享 ADC 型、10 颗累加器型、15 颗无 ADC 型)是通过一个多目标优化流程预先确定的,共约 80 颗芯粒;作者强调 THERMOS 对任意配置都适用。仿真流程(图 5)是:宿主把 DL 任务按先进先出(FIFO)规则放入作业队列,THERMOS 取出任务交给 RL 智能体选簇,再由邻近算法落位;芯片内计算用 CiMLoop 仿真,芯粒间通信用基于 UCIe 参数的自制 NoI 模型,功耗再喂给开源热仿真工具 MFIT(580 个热节点、100ms 采样间隔)估算运行时温度。注意区分两个指标:端到端延迟(end-to-end latency)包含排队等待时间,执行时间(execution time)只算任务在 PIM 系统里实际运行的时间。
图 5:异构多芯粒 PIM 系统的仿真框架,对 DL 负载建模以评估延迟、能耗与热行为,处理结果以吞吐率 送回宿主系统。
| 参数 | 取值 |
|---|---|
| DDT 深度() | 5 |
| Critic 网络层数() | 3 |
| Critic 每层神经元数 | 64 |
| 折扣因子() | 0.95 |
| 学习率 | |
| 作业队列大小 | 20 |
| 预热期 | 1 分钟 |
| 芯粒间链路宽度 | 64 |
| 每跳通信能耗 | 0.5 pJ/b |
表 4:THERMOS 的训练与仿真参数。
训练负载与收敛。 工作负载选了六个 PIM 研究中常用的 DNN:AlexNet、ResNet18、ResNet50、EfficientNet-B3、MobileNetV3-Large、Inception-v3,每个模型处理最多 20000 张图片,并随机组合成 500 个 (模型, 图片数) 的负载混合,分别在 Mesh、Kite、Floret、Hexamesh 四种 NoI 拓扑上评估。训练时每个回合随机选 100 个 DNN 和随机图片数,让智能体充分泛化。图 6 展示了四种拓扑下的价值损失(value-loss)曲线:约 1500 万步后全部收敛到 0.06 以下并保持平稳——同一个共享 actor 不需要按拓扑单独调参就都收敛了。整套训练在单块 AMD Threadripper PRO 7985WX 工作站上约 5.5 小时完成。
图 6:四种 NoI 拓扑下的价值损失随训练步数的变化曲线。
三个基线调度器。 Simba 用最近邻策略把连续的层放到物理位置相近的芯粒上,只顾通信最小化;Big-Little 在单一 PIM 类型内利用芯粒尺寸异构,按”浅层小芯粒、深层大芯粒”和交叉阵列利用率来分配;RELMAS 是 RL 调度器,但用神经网络策略直接从所有芯粒中选择,动作空间大得多。对比维度覆盖执行时间、能耗和 EDP(Energy-Delay Product,能耗延迟积——兼顾两个目标的综合指标)。
Mesh 拓扑上的结果。 图 7(a) 显示吞吐率随到达率的变化:Big-Little 最早饱和(最高 1.95 DNN/s),Simba 和 RELMAS 达到 3.69 DNN/s,而 THERMOS 在延迟优先()下达到 4.59 DNN/s——即使切到省电偏好(4.13 DNN/s)仍高于所有基线。图 7(b) 显示 THERMOS 在吞吐率最高的同时还保持最低的端到端延迟;相比之下 Big-Little 的延迟随吞吐率飙升,Simba 和 RELMAS 也在 3 DNN/s 之后延迟快速上涨。

图 7:Mesh NoI 上 THERMOS 与各基线的对比。(a) 吞吐率 vs 到达率;(b) 端到端延迟 vs 吞吐率。
图 8 展示了不同吞吐率下执行时间与能耗的帕累托平面:理想调度应该贴近原点(时间与能耗都最小),而代表单一 THERMOS 策略三种偏好的三个点始终离原点最近、位于所有基线之前。例如在 2 和 2.5 DNN/s 吞吐率下,THERMOS 比最强的基线 Simba 快 36–37%、省能 9–10%。为什么能赢?作者给出的归因非常清晰:逐层独立地选”当下最好”的芯粒,往往因层间通信开销而次优;THERMOS 的 MORL 在训练中就捕捉到了计算与通信的耦合权衡,而 Simba 只优化通信、Big-Little 只优化计算、RELMAS 的扁平动作空间又让它难以收敛到最优。
图 8:单一帕累托最优 THERMOS 策略与其他调度策略在不同吞吐率场景下的对比(Mesh NoI)。
汇总数字:延迟优先配置下,THERMOS 平均比 Simba 提速 35%、比 Big-Little 提速 72%、比 RELMAS 提速 31%;省电配置下能耗分别降低 8%、48%、11%;均衡配置下 EDP 分别改善 36%、88%、34%。四种拓扑的完整数据见表 5——注意这全都是同一个策略在不同偏好下做到的。
| NoI | 提速 vs Simba | 提速 vs Big-Little | 提速 vs RELMAS | 省能 vs Simba | 省能 vs Big-Little | 省能 vs RELMAS | EDP 改善 vs Simba | EDP 改善 vs Big-Little | EDP 改善 vs RELMAS |
|---|---|---|---|---|---|---|---|---|---|
| Mesh | 35.29% | 72.00% | 30.99% | 8.31% | 48.33% | 11.41% | 36.41% | 87.93% | 34.40% |
| Floret | 15.58% | 88.83% | 57.93% | 22.17% | 56.52% | 25.67% | 26.77% | 112.62% | 104.15% |
| Hexamesh | 33.37% | 71.36% | 34.24% | 8.83% | 51.16% | 13.12% | 30.83% | 88.61% | 34.65% |
| Kite | 36.44% | 81.20% | 37.48% | 2.43% | 44.77% | 5.42% | 23.33% | 99.46% | 36.77% |
表 5:单一多目标 THERMOS 策略(三种偏好)相对各基线调度算法的平均百分比改进。
热约束真的有效吗? 作者对比了”无约束”与”热约束”两种调度:无约束时系统会频繁出现持续过热,威胁可靠性和精度;而细粒度热约束会主动暂停超温芯粒,这一停不仅让过热的芯粒降温,还减缓了相邻芯粒的升温速度,避免大面积过热——温度越限的持续时间和严重程度都大幅下降,而吞吐率几乎没有损失。
换拓扑还灵吗? 图 9 给出了 Floret、Hexamesh、Kite 三种替代 NoI 上的结果,结论一致:THERMOS 在所有拓扑、所有偏好下都是帕累托最优的。论文摘要里最亮眼的数字就来自 Floret:比 Big-Little 快最高 89%、省电最高 57%、EDP 低最高 113%。


图 9:单一帕累托最优 THERMOS 策略在不同吞吐率下与其他调度策略的对比:(a) Floret、(b) Hexamesh、(c) Kite NoI。
四种 PIM 芯粒的具体规格(表 3)也值得一看——它解释了为什么调度这么难:不同类型的芯粒在交叉阵列规模、内存容量、面积、数量上差异巨大,“这层放哪种”的决策远非显然。
| PIM 类型 | 制造工艺 | 交叉阵列 | 每单元比特 | ADC 精度 | 每芯粒内存 | 芯粒面积 | 数量 |
|---|---|---|---|---|---|---|---|
| Standard | ReRAM | 128×128 | 2 | 8 | 9,568 Kb | 4 mm² | 25 |
| Shared ADC | SRAM | 768×768 | 1 | 8 | 9,792 Kb | 9 mm² | 28 |
| Accumulator | ReRAM | 256×256 | 2 | 8 | 19,200 Kb | 4 mm² | 10 |
| ADC-less | SRAM | 128×128 | 1 | NA | 2,416 Kb | 4 mm² | 15 |
表 3:构成异构多芯粒系统的不同 PIM 芯粒的属性。
通关标准:会读帕累托图才算过关
图 8 这类”执行时间-能耗”散点图是本文结果的核心表达方式。读图三步:一看位置(越靠近原点越好,两个目标同时小);二看支配关系(如果一个策略的点在另一个的左下方,前者帕累托占优);三看”一个策略三个点”的含义——THERMOS 的三个点分别对应三种偏好,而基线只有一个固定工作点。能在任意偏好下都占据帕累托前沿,就是”单一自适应策略”的价值所在。
开销分析局限与总结
一个调度器再聪明,如果每次决策要花几百毫秒或者耗电惊人,就毫无实用价值。论文专门在 NVIDIA Jetson Xavier NX 开发板上实测了 THERMOS 的运行开销(表 6):DDT 策略单次推理仅 0.6 微秒、0.36 微焦(每个节点只是一次向量乘加一个 sigmoid);邻近驱动算法要计算加权最短距离,耗时 49.3 微秒、44.37 微焦;合计每次调用 49.9 微秒、44.73 微焦。换算到处理约 10000 张图片的负载上,时间开销占比 0.14%、能耗占比 0.022%——几乎可以忽略。而且开销随负载增大而稀释:即使最小的 1000 张图片负载,总时间开销也在 1.5% 以内(图 10)。热建模本身(MFIT 的 DSS 模型,每次调用约 15 微秒)也只占执行时间的 0.015% 左右。
| 项目 | 单次调用时间 | 单次调用能耗 | 每 DNN 时间占比(约 10000 张图) | 每 DNN 能耗占比(约 10000 张图) |
|---|---|---|---|---|
| RL 策略 | 0.6 μs | 0.36 μJ | 0.0017% | 0.00018% |
| 邻近驱动算法 | 49.3 μs | 44.37 μJ | 0.14% | 0.022% |
| THERMOS(合计) | 49.9 μs | 44.73 μJ | 0.14% | 0.022% |
表 6:THERMOS 在 NVIDIA Jetson Xavier NX 开发板上的开销分析。
图 10:随图片数量增加,THERMOS 开销占比的变化趋势。
可扩展性为什么好? 三个原因:其一,只需一个策略,输入输出维度取决于簇数量而非芯粒总数(本文 80 颗芯粒只对应 4 个簇);其二,分层设计把”选具体芯粒”这类有规律的子问题交给了轻量启发式;其三,DL 负载用 DCG 抽象表达,训练好的策略可以直接泛化到没见过的 DNN,无需针对任务重训。
诚实的局限。 作者也列出了未来方向:目前只训练了执行时间、能耗两种目标加上热约束,目标维度增多(比如可靠性、成本)会让偏好驱动 PPO 在更高维的奖励空间中训练变难;评估聚焦 PIM 芯粒,推广到 systolic array、CPU/GPU tile 等其他计算基底需要适配功耗与热模型;策略训练依赖 trace 驱动仿真,与封装内真实监测器结合、在硅片上验证仍是待完成的工作。
一句话总结。 THERMOS 证明了在异构多芯粒 PIM 架构上,“怕热”和”高性能”不是对立面:一个把温度纳入状态、把热后果纳入奖励的单一 MORL 策略,配上两级”学习+规则”的分层调度,就能在运行时按偏好动态给出帕累托最优的调度——最高提速 89%、最高节能 57%、EDP 最多降低 113%,而这一切的代价只有 0.14% 的时间开销。它为下一代异构 AI 加速器的调度设计提供了一个值得记住的范式:让学习处理复杂的权衡,让规则处理确定性的几何。
自测题:读完了检验一下
1. 为什么 PIM 芯片不能像传统芯片那样用 DVFS 降温?THERMOS 用什么替代? PIM 的模拟电路按特定电压水平设计以保证计算精度,改变电压频率会让模拟运算结果失准;而且 ReRAM 以电导值存权重,对温度敏感。THERMOS 改用阈值节流:芯粒超过温度上限(ReRAM 型 330K、SRAM 型 358K)就暂停任务,只保留漏电功耗维持权重,温度回落后恢复,用少量时间损失换取精度和可靠性。
2. THERMOS 为什么采用”RL 选簇 + 规则算法选芯粒”的两级设计,而不是让 RL 直接选具体芯粒? 若直接从约 80 颗芯粒中选择,动作空间过大,探索计算代价高、难以收敛(基线 RELMAS 正是这样)。两级设计把 RL 的动作空间压缩到簇数量级(4 个),而”同类芯粒中挑离上一层最近的那颗”这种几何问题交给邻近驱动启发式即可又快又好——各取所长。
3. 奖励拆分(主奖励 + 次奖励)分别解决什么问题?如果不拆会发生什么? 主奖励在负载调度完成后立即发放,反映确定性执行成本,建立动作与结果的及时因果关联;次奖励在执行完成后补发,覆盖热节流引入的额外停顿和漏电能耗等非确定性效应。若不拆,延迟且异步的打包奖励会把后续决策导致的节流惩罚错误地记到之前的好决策头上,干扰学习。
4. “单一 MORL 策略”是如何做到运行时适配不同目标的? 偏好向量 作为策略的输入(训练时三个并行环境分别跑 [1,0]、[0,1]、[0.5,0.5] 并共享同一套参数更新),奖励与优势都以向量形式计算、按 标量化。因此帕累托前沿被编码进一个 DDT 模型,部署时输入任意偏好即可得到对应的行为,无需重训或存多个策略。
5. THERMOS 相比基线的核心优势数字是多少?这些优势建立在哪些设计之上? 相对最强基线:比 Simba 最高快 36%(平均 15%–36%)、比 Big-Little 最高快 89%、比 RELMAS 最高快 58%;能耗最高降 57%;EDP 最高降 113%;吞吐率最高达 4.59 DNN/s;调度开销仅 0.14% 时间、0.022% 能耗。支撑这些数字的关键设计是:热感知的状态与奖励、DDT 轻量可解释策略、两级分层调度、以及奖励拆分解决延迟/异步奖励问题。