Client AI 是字节跳动产研架构下属的端智能团队,负责端智能 AI 框架和平台的建设,也负责模型和算法的研发,为字节跳动开拓端上智能新场景。本文介绍的 Pitaya 是由字节跳动的 Client AI 团队与 MLX 团队共同构建的一套端智能工程链路。
作者|覃量
这些年,随着算法设计和设备算力的发展,AI 的端侧应用逐步从零星的探索走向规模化应用。行业里,FAANG、BAT 都有众多落地场景,或是开创了新的交互体验,或是提升了商业智能的效率。
Client AI是字节跳动产研架构下属的端智能团队,负责端智能AI框架和平台的建设,也负责模型和算法的研发,为字节跳动开拓商业智能新场景。
Pitaya则是由字节跳动的Client AI 团队与 MLX 团队共同构建的一套端智能工程链路,为端智能应用提供从开发到部署的全链路支持。
Pitaya的愿景是打造行业领先的端智能技术,助力字节智能商业化应用。我们通过 AI 工程链路为端智能业务提供全链路支持;通过 AI 技术方案,帮助业务提升指标、降低成本、改善用户体验。
迄今为止,Pitaya端智能已经为抖音、头条、西瓜、小说等应用的 30+场景提供了端智能支持,让端智能算法包在手机端每天万亿生效次数的同时,错误率控制在不到十万分之一。
在这一节我们来详细介绍一下Pitaya架构的两个最核心的部分:Pitaya平台和Pitaya SDK。
*MLX: 字节通用机器学习平台
*Libra: 字节大规模在线AB实验评估平台
*Slardar: 字节性能和体验保障的端监控APM平台
Pitaya平台为算法包的开发、管理、调试、发布、部署、实验、监控提供了一套完善易用的Pitaya Workbench。
为了应对大数据处理、深度学习模型训练需求,Pitaya平台连通字节MLX平台,为通用机器学习场景提供一套自研的云端协作式Notebook解决方案。
MLX Notebook内置Spark 3.0以及Flink等大数据计算引擎,和local、yarn、K8S等多种资源队列,可以将多种数据源(HDFS / Hive / Kafka / MySQL)和多种机器学习引擎(TensorFlow, PyTorch, XGBoost, LightGBM, SparkML, Scikit-Learn)连接起来。同时MLX Notebook还在标准SQL的基础上拓展了MLSQL算子,可以在底层将SQL查询编译成可以分布式执行的工作流,完成从数据抽取,加工处理,模型训练,评估,预测,模型解释的Pipeline构建。
Pitaya SDK 的核心是自研实现的端上虚拟机 - PitayaVM,为算法包和端上模型在手机端上运行提供了必要的环境。为了能够让虚拟机在端上运行,解决端上虚拟机存在的性能差、体积大的问题,Pitaya在保留了大部分的核心功能的同时,对虚拟机做了许多优化:
对于严格要求体积的产品线(比如ToB业务),还可以选用Pitaya SDK的MinVM方案,通过自研轻量级解释器,在PitayaVM的基础上进行极致轻量优化,将包体积压缩到100KB以内。
Pitaya SDK提供了对数据准备流程的一系列支持。提供从设备、应用、业务、端上特征中心,云端设备画像平台、搜推广模块获取特征数据的能力。同时Pitaya SDK也支持在端上进行动态labeling来对数据进行标注,提升训练数据质量,进而提高端上模型效果。
端上特征工程分成三个主要部分:「特征管理」、「端上特征存储」、「端上特征中心」。
特征存储
Pitaya SDK提供了KV和SQL lite等多种方式的特征存储,在端上实现了类似于Redis和Hive的数据存储模块。同时Pitaya SDK也提供针对端上进行裁剪优化的numpy、MobileCV、MLOps等基础库,以兼容更多格式的数据、提供更复杂的端上数据处理能力。
Pitaya SDK提供的高时效、多维度、长序列特征和合规允许下的隐私数据,除了可以支持相当比例的端内决策,还可以进一步加工特征、样本,为云端模型推理、训练提供支持,进而支持CV、NLP、信息流等不同的端上智能场景。
端上特征中心
Pitaya SDK提供一个端上特征中心模块,通过对端上的丰富多样的特征数据进行多维度的整合和管理,来让不同的端上业务场景方便高效地消费、共享、定制、复用各自的特征数据。端上特征中心可以通过中心化部署的形式,自动化地通过时间、应用生命周期、甚至自定义的session来对特征数据进行整合和生产,然后提供给不同的模块进行使用,显著提高特征开发效率。同时由于数据的生产、消费都在本地,整个过程可以实现毫秒级的数据时效。
特征管理
端上数据来源丰富,特征生产灵活,可以经过端上特征工程处理后得到较复杂高阶的端上特征,还可以进行二次特征交叉后再提供给业务场景进行消费。针对端上特征的这种特性,Pitaya SDK在端上维护了一套特征管理机制,做到特征上下游生产可靠、可维护、可溯源。同时提供以下能力:
Pitaya SDK对AI模型在端上的部署和实际应用进行了深度优化,连通字节自研的高性能异构推理引擎框架,Client AI团队开发的机器学习决策树推理引擎ByteDT,以及AML团队谈发的字节TVM引擎,让AI模型可以在端上进行快速部署和高性能推理。目前Pitaya SDK支持的端上推理引擎可以覆盖大部分端上AI场景,并提供完善的工具链支持,包括:
端监控模块提供对端上AI耗时、成功率、大盘稳定性和模型效果的主动监控。
客户端在推理任务运行过程中,会自动监控算法包运行关键链路上的性能并进行埋点,然后针对不同类型的埋点,上报到不同的平台进行相应的展示。
对应不同的平台,端监控支持:
资源管理资源管理具备对算法包的更新、下线、版本兼容等能力,让算法包能够自动丝滑地部署在端上;同时还维护了一整套的客户端AI运行环境。经过长时间的磨练,我们提供了这些功能:
任务管理
由于数据和模型都在端上进行计算和推理,不需要依赖网络,也没有网络延迟。因此端上AI相比云端AI的耗时低非常多,使得端上AI可以做到频率更高,响应更快。任务管理专门对应端上AI的特性进行设计,支持了多种能力:
为了保障用户的数据隐私,Pitaya SDK提供Pitaya联邦学习模块,支持在不上传任何隐私数据的情况下训练AI模型。在这个过程中,AI模型训练只依赖于经过隐私保护和加密技术处理后的端上模型更新结果,用户相关的数据不会被传送到云端保存,也无法反推出原始数据信息,实现了模型训练和云端数据存储的解耦。除此之外,Pitaya SDK还支持直接在端上进行模型训练、部署和迭代,来实现千人千模或者千人百模的用户个性化模型。
为了保证用户体验,Pitaya FL在端上实现了一套自动调度方案,只有在设备同时满足空闲、充电以及有wifi连接状态下才会进行联邦学习训练,整个过程不会对设备造成任何影响。
字节Client AI团队的端智能架构Pitaya目前已经为端智能提供了一套完善成熟的开发平台,为端智能开发workflow中的各项环节都提供了完整易用的功能模块,并在SDK里提供了业界领先的端上虚拟机、特征、监控、推理引擎支持。
在未来的几个月,字节Pitaya会致力于进一步建设端到端的 AI 工程链路,覆盖开发、迭代、监控流程,提升业务 AI 算法研发能效。同时我们计划在目前已经趋近成熟的端智能架构上,沉淀更多可复用的 AI 应用能力,实现 AI 能力在应用间、To B 的高效迁移,将端上AI进行规模化应用。
Client AI团队一直在招募杰出人才,包括端智能算法工程师、端智能应用工程师(iOS/Android)、端智能数据研发工程师等岗位,来让我们在这个领域上创造自己的影响力。如果你对端智能有热情,动力,经验,欢迎加入我们团队,一起探索端智能的可能性~
联系邮箱:[email protected]