DNN云边协同工作汇总(持续更新)

DNN云边协同工作汇总(持续更新)

云边协同旨在充分利用云边端资源完成DNN任务的推理计算,将整体模型进行划分后,利用终端设备、边缘服务器以及云计算中心的计算资源,将DNN划分为多个部分,分别部署在不同设备上进行推理。

  • 充分利用系统中可用的计算资源
  • 降低输入数据的传输开销

1 DNN Partitioning

DNN Partitioning 主要研究如何对单个DNN任务进行协同推理

1.1 链式拓扑

垂直划分首次由neurosurgeon这篇论文提出,首次提出了云边协同+模型划分的过程来降低模型推理时延。

1.2 DAG拓扑

DADS使用图论中的最大流最小割算法对DAG拓扑结构进行了分析,解决了一部分含有拓扑结构的模型的划分问题。

对于DNN模型推理时延的预测是模型划分中重要的一部分,总结了一些讲解推理时延预测的论文,如下:

1.3 水平划分

对DNN中的某一层进行分段划分,或者像网格一样划分后,使用多个边缘设备并行计算。

2 Task Offloaing

3 DNN Partitioning + Task Offloading

在多个边缘服务器和终端设备组成的云边端系统中,使DNN任务进行合理调度,降低任务完成的平均时延或平均能耗。在进行调度的过程中可以使用垂直划分和水平划分,也可以直接将一个DNN任务作为划分单位。

  • 参考资料:https://github.com/Tjyy-1223
### 调度深度神经网络于异构处理器的技术与工具 #### 技术概述 在现代计算环境中,为了最大化资源利用率和性能表现,在异构处理器上高效调度深度神经网络DNN)成为研究热点。通过采用特定策略和技术手段,可以在CPU、GPU以及专门设计用于AI推理的加速卡之间实现更优的任务分配方案。 #### 架构支持 对于旨在提升DNN模型训练速度及能效比的新颖硬件结构而言,存在一种由大小即时内存计算单元组成的Chiplet架构[^3]。此架构不仅提供了显著优于传统图形处理单元(GPU)十倍以上的运算效能增益,而且实现了大约百倍级别的能耗节省效果。这种差异使得它特别适合部署那些对实时性和功耗敏感的应用场景下的机器学习算法。 #### 并行化框架 考虑到大规模分布式系统的复杂性及其内部组件间的通信开销问题,《GSPMD: General and Scalable Parallelization for ML Computation Graphs》提出了一种通用而可伸缩的方法论来解决多机环境下张量级联作业划分难题。借助于此技术,能够灵活定义各层之间的分割模式,并允许跨节点间的数据交换机制优化配置,从而有效支撑起从图像识别到自然语言理解等一系列高级认知服务的需求[^4]。 #### 工具链集成 当涉及到具体实施层面时,则需依赖一系列辅助软件平台完成整个流程的设计开发工作。例如,上述提到的研究成果还配套发布了名为SIAM的仿真测试环境,它可以协助开发者快速搭建原型验证系统;与此同时,内置有详尽的成本效益分析模块帮助决策者权衡利弊得失,最终挑选出性价比最高的解决方案组合。 ```python import torch from torch import nn class HeterogeneousScheduler(nn.Module): def __init__(self, model_parts, device_map): super().__init__() self.model_parts = model_parts self.device_map = device_map def forward(self, input_data): outputs = [] for part_id, (part_model, target_device) in enumerate(zip(self.model_parts, self.device_map)): current_input = input_data if part_id == 0 else previous_output # Move data to the appropriate device. current_input_on_target_device = current_input.to(target_device) # Perform computation on this part of the network using specified device. output_from_part = part_model(current_input_on_target_device).to('cpu') # Store result or pass it as an input to next stage depending upon architecture design requirements. outputs.append(output_from_part.detach().numpy()) return sum(outputs) # Example usage: model_partition_1 = ... # Define first segment of neural net here model_partition_2 = ... # Define second segment of neural net here device_mapping = ['cuda', 'mps'] # Specify devices like GPU/CPU etc. scheduler_instance = HeterogeneousScheduler([model_partition_1, model_partition_2], device_mapping) input_tensor = torch.randn((batch_size, channels, height, width)) final_result = scheduler_instance(input_tensor) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马不常有

整理不易,点滴助力就是不竭动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值