TensorFire:WEB端的高性能神经网络框架

摘要: 近日,一种专门用于在网页内执行神经网络算法的JavaScript库——TensorFire引起了人们的关注,这种JavaScript库在浏览器中使用GPU加速运行谷歌的TensorFlow,是机器学习走向大众化的一种方式。

TensorFire由麻省理工学院研究生团队开发,可以在任何GPU上运行TensorFlow-style的机器学习模型,不需要任何像Keras-js这样特定于GPU中间件的机器学习库。TensorFire是通过程序员已经接触过的一些软件或硬件来向广大用户提供学习。TensorFire通过准确预测模型的工作进展,可以得到部分所需资源。

浏览器中的机器学习

TensorFire使用WebGL标准,WebGL标准是用于在浏览器中加速渲染GPU图形的跨平台系统,支持GLSL。GLSL类似C语言,用于编写着色器,可以直接在GPU上转换数据的短程序。

着色器通常在WebGL传输渠道转换图形的呈现方式,比如渲染阴影或其他视觉效果。但是TensorFire使用着色器并行计算从TensorFlow模型生成预测的计算需求。另外,TensorFire还提供了一个用于导入现有TensorFlow和Keras模型的库。

使用这个框架,可以将经过训练的模型直接部署到web浏览器中,并在浏览器中进行本地预测。用户不需要下载、安装或编译任何东西,所有的工作都是直接在浏览器中完成,用于进行预测的数据也完全在客户端处理。GPU的品牌也没有限制,像AMD和NvidiaGPU都可以。

TensorFire基于网络的例子展示了一种style-transfer神经网络,style-transfer就是一件作品的风格可以映射到另一个图像。演示中最慢的部分是下载模型和编译着色器过程,而实际执行只需要一两秒钟。

TensorFire比其他解决方案更快。弹跳数据是GPU和CPU之间常见的性能瓶颈,为避免这种情况,TensorFire在GPU上保留尽可能多的数据。

TensorFire的优势

TensorFire最突出的优点是它的便携性和便利性。现代web浏览器在大多数操作系统和硬件平台上运行,甚至低端智能手机也有大量的GPU功耗。从机器学习模型中获得大部分有价值的工作都是建立机器学习流程,执行培训或交付预测。把这个过程的大部分工作都归结为“打开一个网页浏览器点击”,对某些类工作来说非常有用。

TensorFire的另一个优点是允许部署、预测完全在客户端完成。其实这对于已经部署到云计算的成熟模型和数据的优势并不大。但是对于部署模型很小的应用程序来说,非常有用。如果数据在客户端,用户上传资料会比较谨慎。

TensorFire的第三个优点是基于Nvidia和AMDGPU的高速增长,从理论上放宽显卡可用于机器学习品牌的限制。

从以往来看,Nvidia的CUDA标准一直是通过GPU加速机器学习的首选,提供比支持广泛的硬件OpenBS标准更多的性能。AMD针对OpenCL性能问题有自己的解决办法,但TensorFire让用户和程序员完全避开了这个问题。

TensorFire利用增长现象,使机器学习模型更加紧凑、高效,只具有轻微(通常不可检测)的精度损失。这种“低精度量化张量”方法意味着可以将更小的模型部署到客户端,并且可以使预测更迅速。TensorFire“量化精度低张量”方法允许软件在更广泛的GPU和浏览器上运行,特别是那些不支持全范围WebGL扩展的软件。

TensorFire将该库发布为有MIT许可证开源项目,所以在TensorFire中加速方法也可以应用于其他软件应用中,包括与TensorFlow或机器学习没有任何关系的应用。TensorFire中的低级别GLSLAPI也可以用于执行任意并行的通用计算,也就是说,其他支持GPU-powered、浏览器以及客户端计算的框架都可以在上面构建。

TensorFire:WEB端的高性能神经网络框架的更多相关文章

  1. web前端开发常用的10个高端CSS UI开源框架

    web前端开发常用的10个高端CSS UI开源框架   随着人们对体验的极致追求,web页面设计也面临着新的挑战,不仅需要更人性化的设计理念,还需要设计出更酷炫的页面.作为web前端开发人员,运用开源 ...

  2. 《物联网框架ServerSuperIO教程》-22.Web端对传感器实时监测与控制。附:v3.6.8版本,支持WebSocket

    1.ServerSuperIO v3.6.8更新内容 1.1 增加WebSocket服务端功能,支持自控模式.并发模式.单例模式,不支持轮询模式1.2 接收数据缓存与现有的IO实例分离.1.3 优化代 ...

  3. 从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(一)

    摘要:随着前端技术的飞速发展,越来越多的技术领域开始被前端工程师踏足.从NodeJs问世至今,各种前端工具脚手架.服务端框架层出不穷,“全栈工程师”对于前端开发者来说,再也不只是说说而已.在NodeJ ...

  4. 【原创】从零开始搭建Electron+Vue+Webpack项目框架(六)Electron打包,同时构建客户端和web端

    导航: (一)Electron跑起来(二)从零搭建Vue全家桶+webpack项目框架(三)Electron+Vue+Webpack,联合调试整个项目(四)Electron配置润色(五)预加载及自动更 ...

  5. dubbo框架的web端(war)和server端(tar.gz)结合jenkins打包方式

    一.web端程序,打包成war包 jenkins配置 1.项目名称,旧文件处理配置 2.参数构建配置 3.源码库配置 4.打包文件pom.xml配置及多环境打包传参,此处传参qa(表示打测试环境包,名 ...

  6. 移动Web UI库(H5框架)

    1.Framework7 Framework7 - is a free and open source mobile HTML framework to develop hybrid mobile a ...

  7. 移动Web UI库(H5框架)有哪些,看这里就够了

    前言 今年上半年,项目组在项目开发的过程中建立了一套风格统一,组件丰富完善,命名统一规范的PC端UI库,适用于做大型站点,该UI库也是应用到了整个平台的项目中,在各个项目组中进行推广.因为项目的保密性 ...

  8. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

  9. CAD网页Web端显示开发为什么要以WebGIS的思路来开发?

    背景 在之前的博文CAD图DWG解析WebGIS可视化技术分析总结中讲解了如何把CAD的DWG格式的图纸Web可视化的方案.博文发布后,受到不少同行们的关注,也有不少咨询一些专业问题,其中大家可能疑惑 ...

随机推荐

  1. 【SQL】from a,b。表a 和b之间是什么关系?

    1.select a.id from a,b……——>这里a和b用逗号隔开,a,b之间默认是inner join的关系.

  2. OSError:[Errno 13] Permission denied:'my_library' 问题解决方法

    出现问题: 执行 rosrun rosserial_windows make_libraries.py my_library 命令时出现OSError:[Errno 13] Permission de ...

  3. Java基础知识(JAVA之泛型)

    什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”.一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参.那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似 ...

  4. Python3学习之路~3.3 内置函数

    Python内置函数表: 内置参数详解:https://docs.python.org/3/library/functions.html?highlight=built#ascii 用法: #Auth ...

  5. 前端框架之Vue(7)-事件处理

    监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 示例: <div id="example-1"> <butt ...

  6. Scala枚举--Enumeration

    object Color extends Enumeration(2){ val Red,Green,Blue = Value val Yellow = Value("YELLOW" ...

  7. Scala数据类型的继承结构

    Scala中,所有的值都是类对象,而所有的类,包括值类型,都最终继承自一个统一的根类型Any.统一类型,是Scala的又一大特点.更特别的是,Scala中还定义了几个底层类(Bottom Class) ...

  8. Go包管理工具Vendor使用

    一.Go包管理工具Vendor 一.使用步骤 1.首先,从go get -u github.com/kardianos/govendor下载govendor工具到本地. 2.govendor使用时,必 ...

  9. js贪心算法---背包问题

    /* * @param {Object} capacity 背包容量 6 * @param {Object} weights 物品重量 [2,3,4] * @param {Object} values ...

  10. js 数组里面任意两个数的和与目标值

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...