卷积神经网络协同推断仿真系统
随着移动云计算和边缘计算的快速发展,以及人工智能的广泛应用,产生了边缘智能 (Edge Intelligence) 的概念。深度神经网络(例如CNN)已被广泛应用于移动智能应用程序中,但是移动设备有限的存储和计算资源无法满足深度神经网络计算的需求。
神经网络压缩与加速技术可以加速神经网络的计算,例如剪枝、量化、卷积核分解等。但是这些技术在实际应用非常复杂,并且可能导致模型精度的下降。在移动云计算或边缘计算中,任务卸载技术可以突破移动终端的资源限制,减轻移动设备的计算负载并提高任务处理效率。
通过任务卸载技术优化深度神经网络成为边缘智能研究中的新方向。例如 Neurosurgeon: Collaborative Intelligence Between the Cloud and Mobile Edge 这篇文章提出了协同推断的思想,将深度神经网络进行分区,一部分层在移动端计算,而另一部分在云端计算。
根据硬件平台、无线网络以及服务器负载等因素实现动态分区,降低时延以及能耗。本项目给出了边缘智能方面的相关论文,并且给出了一个Python语言实现的卷积神经网络协同推断仿真系统。
关键词:边缘智能 (Edge Intelligence),计算卸载 (Computing Offloading),CNN 模型分区 (CNN Partition),协同推断 (Collaborative Inference),移动云计算 (Mobile Cloud Computing)
程序运行步骤
在树莓派和 PC 机上分别安装 Python 以及 PyTorch,提供神经网络的运行环境。
1、将 cloud 文件夹放到 PC 机上,运行 initCloud.py 文件,启动服务端。
2、将 mobile 文件夹放到树莓派上,运行 initMobile.py 文件,传入参数分别为模型名称和最大可接受费用。程序将根据网速、费用等因素进行最优决策,得到神经网络模型每一层的最优运行位置(在移动端或者云端),程序根据卸载决策分配计算任务,完成神经网络模型的推断计算。
程序说明
cloud 和 mobile 目录分别代表云端和移动端运行程序,使用 PC 机仿真云端,树莓派仿真移动端。
本实验在 cifar-10 数据集上训练了 AlexNet 和 VGG16 模型。其中 datasets 目录存放 cifar-10 数据集,model 目录存放训练好的 CNN 模型。程序借助 PyTorch 框架的特性,改写模型的forward方法,训练模型后,以层为粒度运行计算任务,实现模型的分层推断。
def forward(self, x, startLayer, endLayer, isTrain):
if isTrain:
x = self.features(x)
x = x.view(x.size(0), 2*2*128)
x = self.classifier(x)
else:
if startLayer==endLayer:
if startLayer==10:
x = x.view(x.size(0), 2*2*128)
x = self.classifier[startLayer-10](x)
elif startLayer<10:
x = self.features[startLayer](x)
else:
x = self.classifier[startLayer-10](x)
else:
for i in range(startLayer, endLayer+1):
if i<10:
x = self.features[i](x)
elif i==10:
x = x.view(x.size(0), 2*2*128)
x = self.classifier[i-10](x)
else:
x = self.classifier[i-10](x)
return x
树莓派系统安装
Raspberry 系统安装
下载 Raspberry 系统镜像文件,安装 SDFormatter,格式化 TF 卡,安装 Win32DiskImager,将系统写入 TF 卡中,在 TF 卡中 /boot 目录下新建 wpa_supplicant.conf 文件,文件内容如下:
country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="hhuer" psk="hhu4208@" key_mgmt=WPA-PSK priority=2 scan_ssid=1 }
在 TF 卡中新建 ssh 文件夹,将 TF 卡插到树莓派上,启动系统。
Raspberry 系统下安装 Python 及 Tensorflow:
sudo apt-get install python3-pip python3-dev sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev pip3 install numpy pip3 install scipy pip3 install sklearn pip3 install tensorflow.whl(下载文件)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 中文标点符号使用标准 PDF 文档
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论