卷积神经网络协同推断仿真系统

发布于 2021-10-17 17:23:56 字数 3034 浏览 1356 评论 0

随着移动云计算和边缘计算的快速发展,以及人工智能的广泛应用,产生了边缘智能 (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(下载文件)

项目地址:https://github.com/wyc941012/Edge-Intelligence

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文