引言

天猫精灵(TmallGenie)是阿里巴巴人工智能实验室(Alibaba A.I.Labs)于2017年7月5日发布的AI智能语音终端设备。天猫精灵目前是全球销量第三、中国销量第一的智能音箱品牌。

在天猫精灵业务系统中,大量使用了算法模型。如领域分类模型,意图分类模型,槽填充模型,多轮对话模型等。当前天猫精灵后台有上百个正在使用的算法模型。

在模型服务方面,有两个问题非常重要:

  • 首先,为了保证服务能够得到快速响应,模型的 RT 必须尽可能的短。
  • 其次,我们希望在硬件资源一定的情况下能够支持更多的 qps 访问,从而降低整体成本。

机器学习PAI是阿里巴巴AI开发平台,为AI开发者提供软硬一体的编程环境和高性能训练与推理引擎框架。

天猫精灵业务 PAI 模型的优化主要通过 AutoAI 接入 PAI Blade 的模型推理优化能力。实践显示,在天猫精灵业务中,结合使用 blade 优化和编译优化,使用 PAI-Blade 优化在最多可节省 86% 的资源,同时将 RT 降低了70%。

关于 PAI-Blade

PAI-Blade 是 阿里巴巴PAI平台针对深度学习模型开发的通用推理优化引擎。目前支持Tensorflow(包括Keras .h5模型),Caffe,及Onnx格式模型。通过这几种主流的模型前端表示,直接或间接涵盖了几乎所有深度学习框架。

Blade推理优化引擎有机融合了包括Blade graph optimizer、TensorRT、PAI-TAO、Blade custom optimizer、Blade int8 (mixed-precision)Blade Auto-Compression在内的多种优化技术。Blade会首先对模型进行分析,基于对模型的理解对模型的部分或全部应用上述的优化技术,优化过程包括但不限于:

  • 通用图优化
  • 基于理解的计算图等效变换
  • 算子融合
  • 对计算图算子丰富的高效实现所进行的组合优化
  • JIT编译
  • 基于模板及历史数据实现的半自动或自动codegen
  • 启发式的Auto-Tuning
  • 模型压缩、剪裁
  • 模型低精度及混合精度量化
  • 模型低精度量化前提下的精度恢复技术

所有的优化技术均面向通用性设计,可以应用在不同的业务场景中。Blade的每一步优化过程都对数值结果的准确性进行了验证,确保输出的优化结果不会对模型本来的精度或指标产生非预期的影响。

Blade推理优化引擎近期有机融合了PAI-TAO编译优化的技术,可以对模型中长尾的一些算子进行自动融合编译为后端的高效实现,可以进一步扩大Blade的优化覆盖面及提升模型推理性能。

接入方案

AutoAI 是 AILabs 内模型训练、部署、发布、灰度的一体化平台。我们在 AutoAI 实现模型推理优化功能的接入。

AutoAI 在线部分主要分为模型管理和调用 SDK。

  • 模型管理: 用户通过模型管理进行模型的部署、发布操作。将模型部署到 EAS 服务,并将配置信息发布到 Diamond。
  • 模型调用 SDK: 调用模型的应用通过 autoai 提供的模型调用 sdk 访问模型服务。模型管理同 sdk 通过共享 diamond 配置数据实现协同。模型更新后,diamond 配置信息同步更新。这些更新会同步给集成了 sdk 的应用。应用调用模型服务时使用对应的配置信息访问已发布的模型。
  • blade 切面:blade 模型同普通 eas 模型在部署和发布的时候执行的动作都不相同。使用 blade 方式部署和发布的模型,调用的时候需要使用 blade-sdk,一般的 eas 模型调用的时候使用 eas-sdk。因此,我们使用 blade 切面来控制模型的部署、发布和调用。部署的时候,通过 blade 切面,根据配置是否是blade 模型进行部署。发布的时候,blade 模型指定特定的 processor 写入到 diamond。调用的时候,根据是否是 blade 模型,决定通过哪个模型访问客户端访问模型。

应用场景

我们在多个场景都使用 Blade 对模型进行推理优化。部分模型进行过定制优化,部分模型集成了 blade 已有的优化能力。

模型1

模型1 是一个 ASR 模型,整个模型架构采用encoder-decoder结构,其性能的消耗主要是在decoder上。

我们对比了有无blade,有无编译优化时的性能。相关配置:

  • instance = 1
  • gpu=1
  • cpu = 16

测试结果如下:

模型2

介绍

该模型使用BERT进行二分类,其中pre-train模型为google提供的中文bert模型,进行分类的句对分别为user query以及在answer库中召回的answer,如“天猫精灵早上好”和“你也早上好”。模型的返回值为0-1之间的连续值,返回值越大,表示qury和answer之间的问答对应关系越强。

测试

测试结果如下:

模型3

介绍

该模型用于天猫精灵NLU时的领域分类。

输入是用户的query及词典数据,输出是领域类别标签。该模型也是基于 Transformer 结构的。

压测:

资源配置:1GPU, 4CPU

参数配置:batch_timeout=5, batch_queue_size=256

模型4

介绍:

该模型是个语义匹配模型,输入是两段文本,输出是相关性分数。

测试:

资源配置:1GPU, 1CPU

参数配置: max_batch_timeout=5, max_queue_size=256

总结

为了提升天猫精灵业务的用户体验,需要对模型推理进行优化。我们主要接入了 PAI Blade 的模型优化能力,通过 AutoAI 接入 blade 模型的部署发布以及调用过程。从效果上看,接入 blade 最高可以降低 rt 70% 以上。在未经过定制优化的场景,blade 也可以减少至少 10% 到 20% 左右的 rt。

本文作者:如切,悟双,楚哲,晓祥,旭林

原文链接

本文为云栖社区原创内容,未经允许不得转载。

天猫精灵业务如何使用机器学习PAI进行模型推理优化的更多相关文章

  1. [阿里云-机器学习PAI快速入门与业务实战 ]课时1-机器学习背景知识以及业务架构介绍

    什么是机器学习? 机器学习指的是机器通过统计学算法,对大量的历史数据进行学习从而生成经验模型,利用经验模型指导业务. 目前机器学习主要在一下一些方面发挥作用: 营销类场景:商品推荐.用户群体画像.广告 ...

  2. (二 -3-1) 天猫精灵接入Home Assistant-自动发现Mqtt设备--灯系列 实战

    #本片教程介绍了具体如何实现天猫精灵控制一个灯. 前提: HASS平台 你已经搭建一个可以在公网IP访问到的HASS平台--- 我用的是租了阿里云服务器,买了个域名,ubuntu1604系统 你已经搭 ...

  3. 【机器学习PAI实践十二】机器学习算法基于信用卡消费记录做信用评分

    背景 如果你是做互联网金融的,那么一定听说过评分卡.评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应 ...

  4. 阿里巴巴大数据产品最新特性介绍--机器学习PAI

    以下内容根据演讲视频以及PPT整理而成. 本次分享主要围绕以下五个方面: PAI产品简介 自定义算法上传 数加智能生态市场 AutoML2.0自动调参 AutoLearning自动学习 一.PAI产品 ...

  5. 【机器学习PAI实战】—— 玩转人工智能之综述

    摘要: 基于人工智能火热的大背景下,通过阿里云的机器学习平台PAI在真实场景中的应用,详细阐述相关算法及使用方法,力求能够让读者读后能够马上动手利用PAI搭建属于自己的机器学习实用方案,真正利用PAI ...

  6. 机器学习PAI产品架构

    机器学习PAI产品架构 本文介绍PAI的产品架构. 如上图所示,PAI的业务架构分为五层: 基础设施层:包括CPU.GPU.FPGA及NPU. 计算引擎和容器服务层:包括MaxCompute.EMR. ...

  7. 机器学习PAI

    机器学习PAI 机器学习PAI(Platform of Artificial Intelligence)是阿里云人工智能平台,提供一站式的机器学习解决方案.本文介绍什么是机器学习PAI. 什么是机器学 ...

  8. 天猫精灵X1智能音箱使用感想

    11.22音箱到手,等了刚好一个月. 主要是测评语音交互功能. 测试条件:正宗普通话. 1)问天气.温度:表现良好.2)找手机功能:试了多次,每次都说手机号码格式不对3)小孩听故事:正常.但是开头会有 ...

  9. 接入天猫精灵auth2授权页面https发送ajax请求

    已存在一个应用A,采用的是http交互, 在接入天猫精灵时,要求请求类型是https,所以在应用服务前加了个nginx转发https请求.在绑定授权页面,会发送ajax请求验证用户名和密码,采用htt ...

随机推荐

  1. 【学术篇】CF932E Team Work && bzoj5093 图的价值

    两个题的传送门 对于CF这道题, 分别考虑每种可能的集合大小, 每个大小为\(k\)的集合数量有\(\binom nk\)个, 所以最后的答案就是 \[\sum_{i=0}^n\binom{n}{i} ...

  2. goto和函数调用

      goto: 函数调用: 作用域 label在函数内定义,所以函数内   跳转操作 无条件 调用时先保存现场,复制实际参数,然后才是跳转 生存期 由于不是左值,它没有生存期,仅在编译期有意义.   ...

  3. 安卓8.0真机运行appium1.4遇到的问题:运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装?

    运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装? 这3个apk的目录分别是: D:\P ...

  4. Linux part2(系统的相关设置变更)

    修改Linux的系统语言 首先查看当前系统的语言 1.echo $LANG 查看当前操作系统的语言 中文:zh_CN.UTF-8 英文: en_US.UTF-8 2.临时更改默认语言,当前立即生效 重 ...

  5. vs code的简单插件

    Auto Close Tag VSCode Color Info Mithril Emmet support for VS Code Open HTML in Default Browser open ...

  6. js设计模式——8.中介者模式

    js设计模式——8.中介者模式 /*js设计模式——中介者模式*/ class A { constructor() { this.number = 0; } setNumber(num, m) { t ...

  7. (15)centos7 系统服务

    centos7 服务启动脚本在 /usr/lib/systemd目录下 1.服务基本操作指令 systemclt [command] [unit] #其中command包括: #start 立即启动 ...

  8. springBoot使用PageHelper当超过最大页数后仍然返回数据

    在SpringBoot中使用PageHelper分页插件时,如果设置pagehelper.reasonable=true时,pageNum<=0 时会查询第一页, pageNum>page ...

  9. html01. <!DOCTYPE html>

    解释 在HTML文档初,往往会有这么一句话<!DOCTYPE html>,它是html5标准网页声明,全称为Document Type HyperText Mark-up Language ...

  10. Java 反射获取私有方法

    通常我们创建一个类时,它的私有方法在类外是不可见的,但是可以通过反射机制来获取调用.具体的反射机制的介绍大家自己百度. 所以反射可能会破坏我们的单例模式,当然解决方案也是有的,就是做个标记记录次数,第 ...