tensorflow.js 的服务器端安装 - 分享自 @开发者头条

简介: tensorflow.js 的服务器端安装 - 分享自 @开发者头条

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)安装到项目依赖中,其实只需要下面这一步:

npminstall @tensorflow/tfjs-node

或者

npminstall @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的版本非常重要!

结语

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

(全文完)

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
3天前
|
开发框架 JavaScript 前端开发
揭秘:如何让你的asp.net页面变身交互魔术师——先施展JavaScript咒语,再引发服务器端魔法!
【8月更文挑战第16天】在ASP.NET开发中,处理客户端与服务器交互时,常需先执行客户端验证再提交数据。传统上使用ASP.NET Button控件直接触发服务器事件,但难以插入客户端逻辑。本文对比此法与改进方案:利用HTML按钮及JavaScript手动控制表单提交。后者通过`onclick`事件调用JavaScript函数`SubmitForm()`来检查输入并决定是否提交,增强了灵活性和用户体验,同时确保了服务器端逻辑的执行。
19 5
|
3天前
|
缓存 JavaScript 安全
2022年最新最详细的安装Node.js以及cnpm(详细图解过程、绝对成功)
这篇文章提供了2022年最新最详细的Node.js和cnpm安装教程,包括步骤图解、全局配置路径、cnpm安装命令、nrm的安装与使用,以及如何管理npm源和测试速度。
2022年最新最详细的安装Node.js以及cnpm(详细图解过程、绝对成功)
|
2天前
|
虚拟化
网工,第一次在服务器上安装AD域服务
网工,第一次在服务器上安装AD域服务
|
4天前
|
存储 Ubuntu 关系型数据库
在 Ubuntu 14.04 服务器上安装和使用 Graphite 的方法
在 Ubuntu 14.04 服务器上安装和使用 Graphite 的方法
8 1
|
4天前
|
JavaScript 前端开发 Ubuntu
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
11 0
|
4天前
|
Ubuntu 关系型数据库 MySQL
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
6 0
|
4天前
|
Ubuntu 关系型数据库 应用服务中间件
在Ubuntu 18.04上安装和配置pgAdmin 4服务器模式的方法
在Ubuntu 18.04上安装和配置pgAdmin 4服务器模式的方法
12 0
|
4天前
|
网络协议 Linux Shell
如何在运行Centos 6的虚拟服务器上安装cPanel
如何在运行Centos 6的虚拟服务器上安装cPanel
8 0
|
4天前
|
存储 缓存 Ubuntu
如何在 Apache Web 服务器中安装、配置和使用模块
如何在 Apache Web 服务器中安装、配置和使用模块
13 0
|
4天前
|
存储 Ubuntu 关系型数据库
在Ubuntu 14.04上安装Bacula服务器的方法
在Ubuntu 14.04上安装Bacula服务器的方法
9 0