一、什么是端智能?

AI 技术现在已经覆盖到了互联网的方方面面,在云端的应用已经非常广泛和成熟。为了追随人工智能的浪潮,各大厂商也在不断加强移动设备的 AI 能力,主要体现在以下方面:

  1. 通过专门为 AI 能力定制的 Soc,提供更好的计算能力

  2. 轻量级推理引擎技术的成熟(例如:TensorFlow Lite),对算力有限的移动设备更加友好

  3. 模型压缩技术使得模型体积大大降低,使得其部署在移动设备上成为了可能

经过这几年的飞速发展,在终端部署 AI 能力渐渐步入了大众的视野,端智能的概念应运而生,旨在提供在终端设备上使用 AI 能力的完整框架。相比云端,端智能具备以下优势:

  1. 低延迟:节省了网络请求的延迟

  2. 安全性:更好的保护用户隐私数据

  3. 定制化:根据用户习惯进行本地训练,逐步迭代优化,真正做到用户定制

  4. 更丰富的特征:可获取更加丰富的用户特征,提高预测的准确率

  5. 节约云端资源:与云端推理结合,在终端进行预处理,从而降低对云端算力的压力

  6. 更丰富的使用场景:人脸识别、手势识别、翻译、兴趣预测、图像搜索等智能场景已被广泛使用,更多的应用场景也在不断涌现。

在端智能的应用方面,Google、Facebook、Apple 等巨头已经走在了前列。Google 提出了 Recommendation Android App 的概念,根据用户兴趣进行内容推荐。Apple 的 Face ID、Siri 推荐也都是端智能应用的代表。

图 1-1 Recommendation Android App

在国内,阿里、腾讯等企业也先后进行了端智能的尝试。阿里在手淘中宝贝列表重排、智能刷新、跳失点预测、智能 Push、拍立淘(以图搜图)等多个场景实现了端智能的落地,并推出了 MNN 神经网络深度学习框架。腾讯则推出自研的 NCNN 框架,并在医疗、翻译、游戏、智能音箱等领域广泛应用端智能技术。

图 1-2 典型端智能开发流程示意图

一个典型的端智能开发流程如图 1-2 所示。首先在云端利用收集的数据进行算法设计和模型训练,并输出模型。此时的模型并不适用于移动设备,需通过模型转换和压缩转换为移动端推理引擎所支持的格式。最后通过云端配置,将算法和模型动态部署到目标设备上。在终端设备上,在合适的使用场景和时机触发推理流程,根据模型进行输入数据的整理并传递至推理引擎,获取并解析推理结果后进行相应的逻辑调整和反馈。

二、端智能面临的挑战

在移动设备部署端智能并非易事,现阶段的开发流程存在诸多的问题需要我们一一解决。

  1. 开发效率

按照典型的端智能开发流程,首先需要算法工程师在云端训练和输出模型,模型决定了数据的输入、输出格式。下一阶段,客户端工程师需进行端侧的开发来适配当前模型,包括输入数据的收集和整理、输出数据的解析等。开发完毕后,再交由测试工程师进行后续的质量保障。这期间需要多个角色的协同和沟通,整体开发链路冗长且低效。

  1. 灵活性

正如上面所提到的,一旦模型确定后,其输入输出就遵循固定的格式。如果模型想调整输入数据的策略,就一定要同时修改客户端逻辑。因此,线上验证与功能迭代的灵活性受到了极大的限制,无形中拉长了整个功能上线周期。此外,不同端智能应用场景(CV、推荐等)也存在着较大的需求差异,如何满足不同的业务场景需求也是需要解决的头部问题。

  1. 端上环境复杂性

构建一套完整的端智能运行环境并非易事,除了在云端进行模型的训练和下发,还需要在客户端进行数据的收集、存储、处理,硬件资源的评估与调度,推理引擎的选择,操作系统的兼容,推理任务的管理与调度等等。这些问题无形之中提高了端智能应用的门槛,如何能够屏蔽这些复杂的端上环境也是端智能目前面临重要挑战。

三、Pitaya 端智能一体化解决方案

为了解决上面的问题,Pitaya 与 MLX 团队进行了深度合作,共建了一套从端(云端)到端(终端)的全链路动态部署方案。MLX 是云端的模型训练开发平台,提供模型训练、转化、调试、发布、A/B 等能力。客户端 Pitaya SDK 则提供特征工程、推理引擎、算法包管理、任务管理、监控等端上能力。两者深度整合,覆盖了端智能流程的各个环节,大大降低端智能的应用门槛。

Pitaya-MLX深度能力融合

1. MLX 平台

在介绍 Pitaya 前,先着重介绍一下 MLX 平台。在进行模型训练的过程中,我们会碰到很多的环境差异,比如不同的数据源的存储方结构、数据格式,不同的机器学习框架,以及不同操作系统环境和基础设施能力的搭建。MLX 平台就是为了解决上面的问题而诞生的。它提供了一个在云端实现模型训练、转换并将其最终产品化的服务平台,通过广泛接入了各类计算框架和服务平台,省去了复杂的环境搭建工作。

图 3-1-1 MLX 架构示意图

MLX 的架构如图 3-1-1 所示:

  • Base Infra:提供了诸多基础设施能力支撑上层功能。

  • ML:提供对各类机器学习框架的支持,主要分为 Scheduler、Model Training、Model Serving 三部分,是模型训练和转换的核心能力。

  • Core:开发人员直接接触的主要功能,在算法开发环节 MLX 提供 Notebook、Web Studio 等在线 IDE 编辑环境,支持 DAG Designer 的拖拽模式的工作流控制,更加简单易用。在模型产品化的流程中,覆盖了训练、任务管理、导出、发布等整个链路环节。

  • Scene:在以上基础能力的支撑下,MLX 平台上可以搭建不同的智能场景任务,例如:NLP、CV、GDBT,而 Pitaya 就是其中的新成员。

2. Pitaya

2.1 算法包

Pitaya 将自身的工作流与 MLX 平台特性进行了深度的整合,如下图所示。在传统的端智能开发流程中,云端仅负责模型的输出,能够动态部署下模型。而在 Pitaya 工作流中,“算法包”是一个完整资源的集合。“算法包”包括推理过程中使用到的模型,也包括算法逻辑及其依赖库信息,这些所有的内容被统一打包成为“算法包”。如果客户端同步了算法包内容,且具备算法包运行所需的各项能力,那么就可以在运行该算法包,实现一个完整的推理流程。

图 3-2-1 Pitaya 与 MLX 协同工作示意图

2.2 开发与调试

算法包的开发过程中,可以临时生成测试算法包。通过扫码将宿主 App 与 Pitaya-MLX 平台建立数据通道,推送测试算法包到客户端,通过真机运行和调试算法包,输出的日志信息也会在 MLX 的 IDE 环境展示,从而实现云端调试的完整体验。得益于 Pitaya 与 MLX 深度融合,算法工程师不再依赖客户端工程师进行任何开发,就可以独立完成算法在端上的运行与调试,极大的提升了算法开发的效率。

图 3-2-2 Pitaya-MLX 平台调试流程示意图

2.3 动态部署

当算法工程师完成算法包的调试后就可以将当前项目打包成一个算法包。每个业务场景都有一个当前 App 下的唯一 Business 标识,算法包与 Business 绑定。在 Pitaya-MLX 发布平台可针对某一 Business 业务,从 App、App 版本、OS 版本、渠道等多个维度对算法包的下发进行配置与管理。发布平台还与 A/B 平台实现了数据打通,可以实现无缝的线上实验对比,大大加快业务线上效果的验证。

除了上面提到的常规配置能力,Pitaya-MLX 发布平台还支持对当前设备机型进行性能打分,根据打分的结果来进行算法包的差异化下发。这种部署方式可以更加细粒度的对线上设备性能进行划分,针对高性能或支持某些 AI 加速的设备下发精度更高的模型,而针对性能较弱的设备为了追求更好的使用体验,则部署相对精简的模型。

2.4 特征工程

Pitaya 中一个核心能力就是“特征工程”。端上推理一般需要从原始数据生成输入到模型中的特征,再由模型推理得到结果。如果需要业务方自行收集和保存原始数据,其工作量是巨大的。特征工程的作用就是帮助业务方无侵入式的收集端上的用户特征数据,用于后续的推理预测。Pitaya 特征工程与 Applog SDK(事件统计 SDK)打通,支持在算法包中对推理过程中需要使用到的的 Applog Event 进行配置,当算法包在本地生效时,Pitaya 就可以根据算法包的配置收集数据。同时,Pitaya 也提供定制化的接口,用于关联用户行为上下文,例如:点击、曝光、滑动等。在算法包运行过程中,可以通过特征工程的能力获取用户的原始数据,通过数据的处理生成模型需要的输入数据。这种数据收集的方式较传统链路具备更好的动态性和灵活性,让业务方从繁重的数据处理工作中解放了出来。

此外,特征工程还支持上传指定的数据至 MLX 平台,用于云端的模型训练,形成一个完整的数据闭环,如图 3-2-1。

2.5 算法包的运行

当一个算法包同步到了终端设备后,触发算法包的运行可以有两种方式。

  1. Applog Event 触发:通过算法包配置可以触发运行的 Applog Event,当有监控到有对应 Applog Event 事件时,则会间接触发该算法包的运行。该触发方式是提供给业务方一个通过 Applog Event 触发算法包执行的时机,可在算法包中进行特征数据的提取与预处理等操作。

  2. 主动触发:业务方在合适的场景和时机下主动调用 Pitaya 的接口(下图所示为 Objective-C 上的调用接口),可自定义输入数据和任务配置,在回调中获取推理结果。

- (void)runBusiness:(NSString *)businessinput:(PTYInput *_Nullable)inputconfig:(PTYTaskConfig *_Nullable)configtaskCallback:(PTYTaskCallback _Nullable)taskCallback;

每触发一个算法包的运行实际上就相当于创建了一个任务(Task),Pitaya 内部的任务管理模块会对任务进行统一的接管与处理。算法包是在 Pitaya 的运行容器中执行的,该容器为每一个任务提供独立的运行环境,并通过 Pitaya 提供的接口来进行特征工程数据的存取和模型推理等。Pitaya 对推理流程和接口进行了高度的抽象,支持不同类型的推理引擎的集成(ByteNN、ByteDT、TFLite),最大程度上的满足了不同业务方的使用需求,降低项目迁移到 Pitaya 框架的成本。

2.6 任务监控

为了实现一键集成的使用体验,Pitaya 内部打造了一套对任务进行全面、细致的监控体系。监控内容涵盖以下几个方面:

  • 指标监控:任务 PV/UV、成功/失败、算法包下载成功率/覆盖率

  • 性能监控:内存、各个链路阶段耗时、初始化耗时

  • 异常监控:任务卡死、失败原因、网络请求失败

Pitaya SDK 将以上指标进行了分类整理,依托于 Slardar 平台的数据展现能力,每个集成业务方都可以一键复制模板,在宿主 App 内建立完善的数据看板,真正做到开箱即用。

图 3-2-3 Pitaya 监控数据示意图

四、总结与展望

Pitaya 是专门为移动端打造的端智能一体化方案,与传统方案相比,具备以下优势:

  1. 降低了端智能使用成本,方便业务快速集成,拿到业务收益

  2. 完善的动态化能力,支持模型的快速迭代与效果验证

  3. 提升多方协作的效率,让算法工程师深入参与客户端场景中

  4. 算法、模型高度复用,可以快速推广已经验证的方案

目前,字节跳动内已经有抖音、头条、西瓜等众多产品线基于 Pitaya 开始了端智能的实践和探索,在此过程中我们也与业务方持续沟通,不断打磨产品和使用体验,并对未来 Pitaya 的发展方向进行如下规划:

  1. 特征工程:强化特征工程能力,充分利用端侧特有信息,结合云端数据,提供更加丰富和准确的数据。

  2. 模型自衍化:端智能的最大使用场景就是根据用户自身的行为特征进行不断的学习,从而更加符合使用者的习惯。为了达到这种效果,需要解决本地训练数据、模型本地训练的问题,以及建立一套对模型准确率评估和回退的管理机制。

  3. 通用 AI 能力建设:针对通用性的使用场景(网络状态预测等),Pitaya 可内置相关能力,快速推广至业务方。

关于字节移动平台团队

字节跳动移动平台团队(Client Infrastructure)是大前端基础技术行业领军者,负责整个字节跳动的中国区大前端基础设施建设,提升公司全产品线的性能、稳定性和工程效率,支持的产品包括但不限于抖音、今日头条、西瓜视频、火山小视频等,在移动端、Web、Desktop 等各终端都有深入研究。

就是现在!客户端/前端/服务端/测试开发 面向全球范围招聘!一起来用技术改变世界,感兴趣可以联系邮箱 chenxuwei.cxw@bytedance.com,邮件主题 简历-姓名-求职意向-电话

 点击阅读原文,快来加入我们吧!

轻松玩转移动AI,一键集成的端智能框架Pitaya相关推荐

  1. 轻松玩转Excel,springboot集成easyexcel

    最近这不又接到一个需求,上游用户想要下载上报给我们的列表数据,用来进行一些简单的线下分析. 用户的需求必须满足啊!于是我就吭哧吭哧的找到俺的chrome大哥,立即所搜"springboot下 ...

  2. AI一键抠像工具,轻松完成视频抠像操作

    影视经常用到绿幕背景拍摄视频,然后抠图合成到其他场景中,一般是拍摄人物然后扣出来合成到其他背景中,是实现了各种各样的精彩视频. 我们知道,一些影视作品尤其是古装剧,必须要对人物的背景进行后期处理.为了 ...

  3. 轻松玩转AI(从Python开始之Python3入门)

    轻松玩转AI路径: 从Python开始 [链接] 数据科学 [链接] 机器学习 [链接] 深度学习--神经网络 [链接] 从Python开始: Python3入门 [链接] Python3进阶 [链接 ...

  4. ChatGPT提示词指令大全调教指南,6个网站让你轻松玩转AI聊天机器人!

    ChatGPT提示词大揭秘!6个网站让你轻松玩转AI聊天机器人! ChatGPT 的火热程度大家都看在眼里.很多人都想知道 : 要想用好 ChatGPT 需要什么 Prompt 提示词.提问模板 经常 ...

  5. oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换

    几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...

  6. 使用cocoaPods一键集成第三方登录(新浪微博,qq,微信)

    第三方登录是现在app很常用的功能,而这个功能我已经写过两三次了...每次都写大同小异的代码真的是很痛苦,而且每次都要根据说明去添加那些依赖库,配置linkFlag什么的,完全是体力活,所以一直想把这 ...

  7. 轻松玩转iPhone 3GS(第三版)

    轻松玩转iPhone 3GS(第三版) 基本信息 作者: Scott Kelby    Terry White    [作译者介绍] 译者: 顾荣杰[同译者作品] 出版社:电子工业出版社 ISBN:9 ...

  8. 10个问卷模板,教你轻松玩转网络调研,深度洞悉客户需求

    2016年,耐克(Nike)生产了一款中档价位的运动鞋.到了2017年,他们想在16年款的基础上改进设计出一款新的运动鞋.要出新品就必须有市场.有需求,那么什么样的鞋子是受欢迎的呢?多少钱的鞋子是客户 ...

  9. Plug and AI!569元让你轻松组装自己的AI“玩具”

    2018年5月25日,角蜂鸟Horned Sungem嵌入式AI视觉套件在北京正式发布,这是触景无限科技(北京)有限公司基于"Plug and AI"理念打造的一款即插即用人工智能 ...

最新文章

  1. linux+用户的shell,Linux用户管理(十)Linux Shell高级
  2. JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
  3. 《马哥教育协办GIAC、GOPS顶级技术峰会完美落幕》
  4. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
  5. 合工大python期末复习知识点汇总
  6. 从零写一个编译器(八):语义分析之构造符号表
  7. python thinker canvas create_arc 使用详解
  8. 19 FI配置-财务会计-定义销售/采购税代码
  9. 深度学习入门(一):LeNet-5教程与详解
  10. Atitit 数据分析存储位置的查找方法与流程attilax总结
  11. 远距离WiFi模块图传,无线wifi技术方案,CV5200无线传输应用
  12. 【企业微信点餐系统】
  13. ASO优化方法_获取ASO关键词指数接口
  14. CF Buns (01背包问题)
  15. 【spring-security基础】基于数据库的认证方式
  16. 编程学习应用 Growth 发布 3.0,在碎片时间里练习
  17. 国外和国内高校官网的差异
  18. 玩转华为ENSP模拟器系列 | 配置IS-IS基本功能示例
  19. MS COCO数据集人体关键点评估(Keypoint Evaluation)(来自官网)
  20. AcWing 1875.贝茜的报复

热门文章

  1. python补充符号和图片_Python 图片转符号图
  2. 博士申请 | 中山大学金枝教授课题组招收计算机视觉方向2023级博士生
  3. UE4 骨骼穿模问题,血的教训
  4. Android 加载圆角的图片轮播图
  5. 【Unity3D】【NGUI】选中某个图标后高亮(或者灰化)
  6. 手机软件测试用例设计实践
  7. 任正非:直到2006年我才抛弃自杀的念头
  8. 5G赋能五大重点行业
  9. python学习的第二十五天:对PDF文件的读写操作
  10. 谁能告诉我文字生成图片在线制作要如何做?