专栏首页人人都是极客TensorFlow Lite发布重大更新!支持移动GPU、推断速度提升4-6倍

TensorFlow Lite发布重大更新!支持移动GPU、推断速度提升4-6倍

为什么要支持GPU?

虽然移动设备的处理能力和功率都有限。虽然TensorFlow Lite提供了不少的加速途径,比如将机器学习模型转换成定点模型,但总是会在模型的性能或精度上做出让步。

而将GPU作为加速原始浮点模型的一种选择,不会增加量化的额外复杂性和潜在的精度损失。

随着 TensorFlow Lite GPU 后端开发者预览版的发布,将能够利用移动 GPU 来选择模型训练 (如下所示),对于不支持的部分,将自动使用 CPU 进行推理。

新的后端利用了:

  • OpenGL ES 3.1 在 Android 设备上计算着色器
  • iOS 设备上的金属计算着色器

目前 TensorFlow Lite 仍使用 CPU 浮点推断进行人脸轮廓检测 (非人脸识别)。未来会利用新的 GPU 后端,可以将 Pixel 3 和三星 S9 的推理速度提升 4~6 倍。

GPU 与 CPU 性能

在Pixel 3的人像模式(Portrait mode)中,与使用CPU相比,使用GPU的Tensorflow Lite,用于抠图/背景虚化的前景-背景分隔模型加速了4倍以上。新深度估计(depth estimation)模型加速了10倍以上。

在能够为视频增加文字、滤镜等特效的YouTube Stories和谷歌的相机AR功能Playground Stickers中,实时视频分割模型在各种手机上的速度提高了5-10倍。

对于不同的深度神经网络模型,使用新GPU后端,通常比浮点CPU快2-7倍。对4个公开模型和2个谷歌内部模型进行基准测试的效果如下:

公共模型:

  1. MobileNet v1(224 x 224)图像分类 ( 专为移动和嵌入式视觉应用而设计的图像分类模型 ) 下载地址:https://ai.googleblog.com/2017/06/mobilenets-open-source-models-for.html
  2. 用于姿势估计的 PoseNet ( 估计图像或视频中人物姿势的视觉模型 ) 下载地址:https://github.com/tensorflow/tfjs-models/tree/master/posenet
  3. DeepLab 分割(257 x 257) ( 图像分割模型,为输入图像中的每个像素分配语义标签,例如,狗,猫,汽车 ) 下载地址:https://ai.googleblog.com/2018/03/semantic-image-segmentation-with.html
  4. MobileNet SSD 对象检测 ( 检测带有边框的多个对象的图像分类模型 ) 下载地址:https://ai.googleblog.com/2018/07/accelerated-training-and-inference-with.html

Google 专有用例:

  1. MLKit
  2. Playground Stickers 和 YouTube Stories 使用的实时视频分段

在更加复杂的神经网络模型上 GPU 加速效果最显著,这些模型本身更有利于 GPU 的利用,例如密集的预测 / 分割或分类任务。在小型模型中,加速效果效果可能略差,但 CPU 的使用可以降低内存传输固有的延迟成本。

如何使用?

以 Android 为例,谷歌已经准备了一个完整的 Android 存档 ( AAR ),包括带有 GPU 后端的 TensorFlow Lite。编辑 gradle 文件替换当前版本,以包含这个 AAR,并将此代码片段添加到 Java 初始化代码中。

import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.experimental.GpuDelegate;

// Initialize interpreter with GPU delegate
GpuDelegate delegate = new GpuDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Interpreter interpreter = new Interpreter(model, options);

// Run inference
while (true) {
  writeToInput(input);
  interpreter.run(input, output);
  readFromOutput(output);
}

// Clean up
delegate.close();

如何加速?

在推断每个输入时:

  • 如有必要,输入将移至 GPU:输入张量(如果尚未存储为 GPU 内存)可由框架通过创建 GL 缓冲区或 MTLBuffers 进行 GPU 访问,同时还可能复制数据。由于 GPU 在 4 通道数据结构中效率最高,因此通道大小不等于 4 的张量将重新调整为更加适合 GPU 的布局
  • 执行着色器程序:将上述着色器程序插入命令缓冲区队列中,GPU 将这些程序输出。在此步骤中,我们还为中间张量管理 GPU 内存,以尽可能减少后端的内存占用
  • 必要时将输出移动到 CPU:一旦深度神经网络完成处理,框架将结果从 GPU 内存复制到 CPU 内存,除非网络的输出可以直接在屏幕上呈现,不需要这样的传输

为了获得最佳体验,我们建议优化输入 / 输出张量复制和 / 或网络架构。有关此类优化的详细信息,可以在 TensorFlow Lite GPU 文档中找到。

本文分享自微信公众号 - 人人都是极客(rrgeek)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GPU的工作原理

    在GPU出现以前,显卡和CPU的关系有点像“主仆”,简单地说这时的显卡就是画笔,根据各种有CPU发出的指令和数据进行着色,材质的填充、渲染、输出等。 较早的娱乐...

    刘盼
  • 两段小视频轻松理解CPU & GPU的工作原理

    CPU的工作原理 ? GPU的工作原理 ? 视频来源:啃芝士

    刘盼
  • AI 芯片和传统芯片的区别

    比如,自动驾驶需要识别道路行人红绿灯等状况,但是如果是当前的CPU去算,那么估计车翻到河里了还没发现前方是河,这是速度慢,时间就是生命。如果用GPU,的确速度要...

    刘盼
  • 英伟达深度学习专家路川详解“如何升级GPU深度学习系统”

    GPU 成为在构建深度学习系统时必不可少的需要关注的方向,但是诸如如何选择一款 GPU 来搭建深度学习平台,如何升级自己的 GPU 之类的问题一直困扰着开发者。...

    小莹莹
  • 奔涌吧,GPU! GPU选型全解密

    ? 为了让大家了解不同应用场景下的GPU云服务器选型 我们邀请腾讯云大茹姐姐创作了这篇深度好文 要看完呐~~↓↓↓ 随着云计算、大数据和人工智能技术的飞速发展...

    腾讯云计算产品团队
  • 人工智能&大数据:加速GPU在数据中心领域的应用

    随着数据需求工作负载渗透到数据中心并覆盖传统的CPU性能,GPU各供应商已经为数据中心补充了全新的设备和显示卡。 最近大数据、人工智能以及机器学习的潮流正在企业...

    企鹅号小编
  • 【年薪千万超级矿工】共享矿机训练神经网络,收益是挖矿4倍

    【新智元导读】共享单车有了,共享GPU还会远吗?最近有人发起了一个项目,从挖掘加密货币的矿工那里租借GPU,借给AI研究人训练神经网络。矿工能够得到双倍乃至三倍...

    新智元
  • 1.1 Programmable Graphics Processing Unit 发展历程

    面纱掩盖了过去、现在和将来,历史学家的使命是发现它现在是什么,而不是过去是什么。 ——Henry David Thoreau

    代码咖啡
  • 【杂谈】学深度学习的你有GPU了吗

    计算机常见的处理器包括CPU和GPU,CPU即中央处理单元(Central processing unit),它是计算机的控制核心。CPU需要很强的通用性来处理...

    用户1508658
  • 腾讯云GPU云服务器_高性能服务器_高速计算 - 腾讯云优惠

    GPU 云服务器(GPU Cloud Computing,GPU)是基于 GPU 应用的计算服务,具有实时高速的并行计算和浮点计算能力,适应用于 3D 图形应用...

    用户5892957

扫码关注云+社区

领取腾讯云代金券