【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

当前端遇到机器学习?听 TensorFlow.js 负责人怎么说(二)

  • 2019-12-18
  • 本文字数:1962 字

    阅读完需:约 6 分钟

当前端遇到机器学习?听 TensorFlow.js 负责人怎么说(二)

TERVIEW


采访内容


Q :Hi, Ping Yu, 可否向中国的朋友们介绍一下您和您目前的工作?


Ping Yu:我在 Google 的 TensorFlow 团队中负责 TensorFlow.js 的开源项目。TensorFlow.js 是一个针对前端开发者机器学习平台,它不光提供建模,训练到推理的一套完整的 API, 还有一个结合实际应用场景的模型库。我们的目标是降低前端开发者使用机器学习的门槛,从而激发他们的创造力。


Q :我们知道,人工智能往往伴随着复杂的数据、模型和运算,而很多人认为 JavaScript 太弱了,不适合做人工智能,甚至说前端就不该趟 AI 这趟水,您怎么看待这个「老生常谈」的说法?


Ping Yu:这个问题可以从两个方面去看。首先,JavaScript 作为一个解释执行的语言,确实缺乏纯计算能力,但语言本身的计算速度并不决定它是否适合机器学习。比如 Python 同样作为解释执行的语言,速度并不是它的强项,甚至它比 JavaScript 的 V8 引擎要慢多了,这并没有妨碍它成为当今最受欢迎的机器学习语言。因为它并不需要直接解决速度的问题,它可以利用其他更底层的语言来获得计算速度的提升。TensorFlow Python 就是利用 binding C library 提供 CPU 上的加速,通过 cuDNN 的绑定获得了 GPU 提速。这都是 Javascript 可以做的事情。比如说 TensorFlow.js 通过 WebGL 的 Fragment Shader 来获得 GPU 加速,通过 Web Assembly 来获得 CPU 的加速等等。


另外作为一个机器学习 API Level 的语言,易用性才是真正吸引用户的地方。Python 的崛起很大程度上得益于一个非常受欢迎的数值运算库 numpy. 其实 Javascript 在易用性上并不逊色于 Python, 十几年来,从网页到后台,再到 iOT 设备,Javascript 无处不在。它跨平台的特性能很好的解决模型部署的任务。


我和很多工业界还有研究部门的伙伴了解的时候发现,他们现在共同的困境就是,缺乏人才能够真正把 AI 研究结果很好的落地。我们相信这个离不开前端工程师,但是需要有一套完善的工程解决方案。TensorFlow.js 只是一个开始,希望有更多的前端开发者可以加入我们的行列。


Q :那请问 TensorFlow.js 目前都有哪些应用场景、效果如何?如果没有足够的数据量能接入吗?


Ping Yu:TensorFlow.js 支持许多 Javascript 可以运行的环境,前端的浏览器,无线端的小程序,React Native 平台,中后台的 Node.js 等等。


不同的运行环境,应用场景也不尽相同。无线端多以实时人机交互模型为主,不论是视频还是语音,对模型的大小和执行速度的要求都很高。最近欧莱雅使用 TensorFlow.js 在微信小程序里推出了实时试妆,模型执行速度达到 25FPS, 但模型只有 800K. 在浏览器中的 Web App, 它的 AI 应用场景多以图形或文字模型为主。在中后台,应用场景会更丰富一些。TensorFlow.js 在 Node.js 里的执行速度和 TensorFlow Python 旗鼓相当,让 server 端的模型推理可以融入到现有的 BFF 架构内。


另外 TensorFlow.js 也支持模型训练,这意味着前端可以通过转移学习的方法为每个用户提供定制的模型。


Q :有人说,AI 技术的大进步,往往不是算法本身,而是源自人机交互的改进,您认同这个看法吗?目前(至少国内)已落地的人工智能大多是「人工人工智能」,请问国外面临这个窘境吗?您认为有何解法?


Ping Yu:这个问题涉及面有点广,但看法我是基本认同的。我理解这句话原意是,人机交互界面的改进,为 AI 技术提供的场景和契机。AI 的基础是数据,而前端技术可以帮助研究者更快更好地理解数据。虽然现在 AI 发展日新月异,新模型、新架构层出不穷,但当模型落地时候,如果并没有和前端实现一个闭环,也就会出现「人工人工智能」的现象。谷歌推出的联邦学习和 TFX 机器学习的框架,通过 AI 和前端的结合,就能够做到连续的验证和调整模型。


Q :您认为前端智能化未来会往什么方向发展?对于想做人工智能的前端工程师有什么学习建议?


Ping Yu:虽然前端有许多成功的框架,但总体来说还是有不少手工的工作。(我认为未来的考虑将是)如何将 AI 的能力融入到这些框架中,进一步减少前端工程师工作中低端的手工部分,从而进一步解放他们的创造力。


对于前端工程师而言,要对常用的模型和框架要有一定的认识,了解他们的特点和使用场景。要具备一定的 AI 工程方面的知识,比如模型加速和压缩,模型加密,端上和服务器上推理方案,这可以为模型落地提供切实可行的途径。


Q :请问参加您这次的分享需要准备什么前置知识?您将与国内开发者进行什么方面的交流?


Ping Yu:这次分享(我将)通过一些实例来介绍 TensorFlow.js 平台的能力,进一步探讨 AI 在前端落地的场景。目标受众就是前端工程师,没有特殊的前置知识。


本次专访是否解答你对于前端与机器学习的疑惑呢?本届 D2 上,Ping Yu 还将与我们探讨 TensorFlow.js 进一步优化的方式,以及未来发展的方向。


本文转载自淘系技术公众号。


原文链接:https://mp.weixin.qq.com/s/e3WoYNDwlzBoYNMBurANdA


2019-12-18 16:02703

评论

发布
暂无评论
发现更多内容

3-6月面经总结,200多页真题笔记和详解(含核心考点及6家大厂)

程序猿阿宇

Java java程序员 大厂面试 秋招 大厂面经

Java技术专家成长路线总结(思维导图)

程序猿阿宇

Java java程序员 大厂面试 秋招 大厂面经

史上最全的Java并发系列之Java中的锁的使用和实现介绍(二)

自然

多线程 并发 8月月更

95后跳槽阿里网晒工资条:多亏面试前补了这个,真香

程序猿阿宇

Java java程序员 大厂面试 大厂面经 内推

C++运算符重载(五)之关系运算符重载

CtrlX

c c++ C# 重载 8月月更

超新概念出炉,JDK17的封闭类使用解析

知识浅谈

8月月更

Android进阶(十二)Fragment与Activity讲解

No Silver Bullet

android Activity Fragment 8月月更

SpringCloud OpenFeign 请求重试

程序知音

Java spring 程序员 微服务 SpringCloud

【云原生】Spring Cloud Alibaba 之 Feign 远程调用 实战

Bug终结者

分布式 微服务 云原生 8月月更

Go-Excelize API源码阅读(九)——SetSheetBackground(sheet, picture string)

Regan Yue

Go 开源 源码解读 8月日更 8月月更

JSON 基本使用

兮动人

json

开源一夏|OpenHarmony视频播放器

坚果

开源 OpenHarmony 8月月更

史上最全的Java并发系列之Java中的线程池

自然

线程池 并发 8月月更

废除“网络君主制”,认识 Usenet ~

掘金安东尼

前端 网络 8月月更

类似TestLink的10大测试用例管理工具盘点

PingCode

测试用例 测试管理 测试管理工具

bug管理工具Jira的替代方案有哪些?

PingCode

开源/免费的知识库软件有哪些

PingCode

MyBatis(一、快速入门)

开源 springmvc Mybati 8月月更

PyCharm 2022.2 发布了,支持最新 Python 3.11 和 PyScript 框架!

Python猫

体验家辛济云:CEM不是MarTech,不仅要“从0到1”,更要规避“从1到0”

B Impact

大数据技术生态,不懂你捶我

大数据指北

大数据 大数据开发

应用系统日志打印规范实践之道

陈俊

日志 规范

TE数字化共创之路 | 这场旅程,从数字化共创平台开始

明道云

使用 JavaScript Promise 读取 Github 某用户的数据

Jerry Wang

JavaScript Promise 异步编程 Javascript框架 8月月更

大逆不道,从天界偷下来的算法修仙秘籍竟然传到你手上~~(结尾有彩蛋)

武师叔

数据结构与算法 有趣的技术知识 复杂度分析 签约计划第三季 8月月更

知乎疯传,吹爆阿里P7《K8s+Jenkins》的技术手册

程序知音

Java 编程 程序员 后端技术 #k8s

Java避坑指南:Java中 java.lang.String你真的以为是不可变的吗?java11和java17是相同的结果吗?

崔认知

云原生(十五) | Kubernetes篇之深入了解Pod

Lansonli

云原生 k8s 8月月更

【LeetCode】检查数组是否存在有效划分Java题解

Albert

LeetCode 8月月更

React Server Components 介绍 亮点

HullQin

CSS JavaScript html 前端 8月月更

《Effective Java》第16条:要在仅有类中使用访问方法而非公有域

okokabcd

Java

当前端遇到机器学习?听 TensorFlow.js 负责人怎么说(二)_语言 & 开发_淘系技术_InfoQ精选文章