渐进切片:一种用于深度学习模型的带宽自适应推理方法
3.2 渐进切片
**基础知识:**一个深度学习模型M可以用有向无环计算图G = (V, E)来表示,其中包括了一组层V和一组有向边E。图中的切片点是计算图G中的一个切割C ⊂ E,将模型M分成两部分。
为了简化这个优化问题,我们限制切片发生在模型中相邻的两层之间。我们假设模型有K层,切片发生在Lk和Lk+1之间,其中k ∈ {1, ..., K-1}。因此,在分层情况下,切割C的选择决定了端到端延迟和总能量消耗之间的权衡。在这一点上,准确性不变,因为我们只是在边缘设备和云端之间分配计算图。
**学习有序的隐藏表示:**Clio通过一种渐进的方式不断调整中间激活的大小,以在给定的带宽条件下最大化最佳推理。我们通过一种新颖的训练过程实现了这一点,该过程学习了一个单一模型,可以不断地调整从边缘设备上的第Lk层到云端上的第Lk+1层传输的隐藏表示的大小。我们为云端每种隐藏表示大小学习一个单独的模型。这些模型接收和解码来自每个大小的第Lk层传输的表示,生成最终输出。
令O𝑘 = 𝑓𝜃(x)为一个函数,实现了模型M在层𝑘的输出处的计算图,假设该层包含𝑊𝑘个单元。现在,定义切片函数O1:𝑖 = slice(𝑖, O),将输入向量O映射到由其前𝑖个通道组成的O的子向量O1:𝑖。定义𝑦 = 𝑔𝜙𝑖(O1:𝑖,𝑘 )为一个函数,实现了模型M在只接收来自层𝑘的前𝑖个隐藏单元值作为输入,并生成网络的最终输出。注意,该函数对于每个𝑖的值都有一组独立的参数。
在给定的延迟约束和可用带宽下,模型尽可能多地从层𝑘传输隐藏单元到层𝑘 + 1。然后,模型给出的最终预测输出为:𝑦 = 𝑔𝜙𝑖(slice(𝑖, 𝑓𝜃(x)))
这种方法成功的关键是使用考虑到可用带宽分布的损失函数来训练模型,从而考虑到可以传输的表示大小的分布。令𝜋𝑖为发送slice(𝑖, 𝑓𝜃(x))所需的带宽可用性的概率。给定数据集D = {(x𝑛, 𝑦𝑛), 𝑛 = 1 : 𝑁}和预测损失函数ℓ(𝑦, 𝑦′),我们通过中间表示slice(𝑖, 𝑓𝜃(x))定义基于损失的损失函数L𝑖(D; 𝜃, 𝜙𝑖)。我们优化的总体损失是L𝑖(D; 𝜃, 𝜙𝑖)的期望值,其中期望是在我们可以发送表示slice(𝑖, 𝑓𝜃(x))的概率𝜋𝑖上进行的。因此,模型学习了能够使得在给定表示大小𝜋的渐进切片操作下最小化期望误差的参数。具体细节如下所述。
𝜃∗, 𝜙∗1:𝑊𝑘 = arg min𝜃,𝜙1:𝑊𝑘 E𝜋 [L𝑖(D; 𝜃, 𝜙𝑖)] (1)
L𝑖(D; 𝜃, 𝜙𝑖) = 𝑁ℓ(𝑦𝑛, 𝑔𝜙𝑖(slice(𝑖, 𝑓𝜃(x𝑛)))) (2) 其中 n ∈ [1, N]。
**示例:**我们用图3中的例子来说明渐进切片。在这里,物联网设备执行初始层直到第3层,其余的管道在云端执行。在这个例子中,第3层的输出被划分为三个切片,根据带宽的不同,不同数量的切片被传输到云端。云端有三个相应版本的层来处理三个可能的切片作为输入。在推理阶段,物联网设备将本地执行层1-3,并将第3层的中间结果传递给无线电进行传输。由于网络动态性,无线电将在可用时间内尽可能多地发送数据,云端将激活相应的路径以接收渐进切片的中间结果。
原文地址: https://www.cveoy.top/t/topic/jLM 著作权归作者所有。请勿转载和采集!