59

tensorflow.js的服务器端安装-张阳君的个人网站

 4 years ago
source link: https://www.zhangyangjun.com/post/tensorflow-backend-installation.html?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

tensorflow.js的服务器端安装

2019年08月14日 作者: 张阳君 分类: 前端技术

tensorflow是谷歌推出的一款神经网络算法库,利用这个算法库可以实现深度学习。目前这个算法库已经绑定了多种开发语言,而tensorflow.js就是Javascript语言的具体实现,在tensorflow的官网上有专门的Javascript板块,地址:https://www.tensorflow.org/js。tensorflow.js的最初版本只能运行在浏览器中,借助webgl调用GPU资源实现快速运算,但是毕竟浏览器功能有限,项目中也不太可能会把一个深度学习的流程丢到前端去处理。后来官方又推出了两个node版本,一个基于CPU,另一个基于GPU。本文主要介绍这两种库的后端安装方法。

  1. 确定服务器的操作系统和硬件是否符合安装要求,参考https://www.npmjs.com/package/@tensorflow/tfjs-node
  2. 电脑或者服务器一定要安装python2.7的环境(注意不能安装python3)
  3. 使用npm全局安装node-gyp这个库
  4. windows需要安装vs studio(需要有vcxproj编译组件),mac需要安装xcode
  5. gpu版本需要确认显卡是否能够支持(注:mac所有系统都不支持gpu),参考https://developer.nvidia.com/cuda-gpus
  6. gpu版本需要安装好显卡驱动
  7. gpu版本需要安装CUDA工具包,推荐10.0,网址:https://developer.nvidia.com/cuda-toolkit-archive
  8. gpu版本需要下载CUDNN SDK,版本必须和上一步中的CUDA工具包版本匹配,下载解压后把对应文件夹的文件覆盖到上一步的安装目录中,网址https://developer.nvidia.com/cudnn,这里下载前需要注册会员
  9. gpu版本需要添加CUDA、CUPTI和cuDNN到系统环境变量,windows和linux方法不同,参考https://www.tensorflow.org/install/gpu

如果安装CPU版本,只需要准备1-4步,GPU版本则需要1-9的所有步骤。

到这里,你已经完成了tensorflow服务器版本的一半安装。

安装tensorflow到node项目

接下来我们需要把@tensorflow/tfjs-node(@tensorflow/tfjs-node-gpu)安装到项目依赖中,其实只需要下面这一步:

npm install @tensorflow/tfjs-node
或者
npm install @tensorflow/tfjs-node-gpu

运气好的话你会看到一个很长的下载过程,一大串代码编译过程,最后安装成功!但是!

绝大多数都会遇到莫名其妙的问题,譬如卡在了下载进度上,或者报一些node-gyp的错误。一般来说,@tensorflow/tfjs-node如果安装出现问题,多装两次就行。但是@tensorflow/tfjs-node-gpu出问题的话,就需要具体问题具体分析。

GPU版本安装问题解决思路

  1. 卡在下载进度条的问题:

这个主要是由于gpu版本需要下载一个将近250M的libtensorflow包,而国内访问谷歌服务器又不是特别稳定,下载过程经常掉线。解决方法是可以间断性地重复执行npm rebuild @tensorflow/tfjs-node-gpu -f。或者修改node_modules/@tensorflow/tfjs-node-gpu/scripts/install.js文件,将其中的storage.googleapis.com域名修改成本地的https服务,然后用下载工具单独把libtensorflow包下载到https目录,通过本地下载实现稳定安装。另外可能有同学考虑用科学上网的方法获取稳定下载,本人亲测效果不咋地。

  1. node-gyp错误:

下载libtensorflow包后,tensorflow的钩子会继续执行代码编译,node-gyp会调用本地环境对下载源码进行编译。编译过程出错就会出现node-gyp的错误。

这种编译错误大多数都是本地编译环境缺失导致的,譬如windows中vs studio缺失相应的项目编译组件,这种问题一般通过下载缺失的组件就能完美解决!

CPU vs GPU

GPU版本的tensorflow一定比CPU版本的快吗?我一开始折腾安装了两个版本的tensorflow就是想看看GPU到底比CPU快了多少。实际我的项目主要运行了LSTM时序神经网络,测试跑下来的结果傻了眼,GPU速度只有CPU的2/3。为什么呢?Tensorflow的一位参与者给出了答案,地址在这里: https://github.com/tensorflow/tfjs/issues/468。大意就是:GPU版本绝大多数的运行时间都消耗在了数据传输过程,对于一些相对单一神经网络结构,速度反而会比CPU版本慢,但是像加入了池化层的这种复杂神经网络结构,GPU的速度会快得多。所以根据网络结构选择对tensorflow的版本非常重要!

上面这个故事告诉我们,付出的努力不一定和结果成正比,选择大于努力。

(全文完)

本文由张阳君原创,文章链接:https://www.zhangyangjun.com/post/tensorflow-backend-installation.html,转载请注明出处!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK