輕鬆玩轉移動AI,一鍵集成的端智能框架Pitaya

做者:字節跳動技術——白崑崙前端

1、什麼是端智能?

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推薦也都是端智能應用的表明。markdown

image-20210406104907712
圖1-1 Recommendation Android App

在國內,阿里、騰訊等企業也前後進行了端智能的嘗試。阿里在手淘中寶貝列表重排、智能刷新、跳失點預測、智能Push、拍立淘(以圖搜圖)等多個場景實現了端智能的落地,並推出了MNN神經網絡深度學習框架。騰訊則推出自研的NCNN框架,並在醫療、翻譯、遊戲、智能音箱等領域普遍應用端智能技術。網絡

image-20210406110421904
圖1-2 典型端智能開發流程示意圖

一個典型的端智能開發流程如圖2-2所示。首先在雲端利用收集的數據進行算法設計和模型訓練,並輸出模型。此時的模型並不適用於移動設備,需經過模型轉換和壓縮轉換爲移動端推理引擎所支持的格式。最後經過雲端配置,將算法和模型動態部署到目標設備上。在終端設備上,在合適的使用場景和時機觸發推理流程,根據模型進行輸入數據的整理並傳遞至推理引擎,獲取並解析推理結果後進行相應的邏輯調整和反饋。架構

2、端智能面臨的挑戰

在移動設備部署端智能並不是易事,現階段的開發流程存在諸多的問題須要咱們一一解決。框架

  1. 開發效率

按照典型的端智能開發流程,首先須要算法工程師在雲端訓練和輸出模型,模型決定了數據的輸入、輸出格式。下一階段,客戶端工程師需進行端側的開發來適配當前模型,包括輸入數據的收集和整理、輸出數據的解析等。開發完畢後,再交由測試工程師進行後續的質量保障。這期間須要多個角色的協同和溝通,總體開發鏈路冗長且低效。機器學習

  1. 靈活性

正如上面所提到的,一旦模型肯定後,其輸入輸出就遵循固定的格式。若是模型想調整輸入數據的策略,就必定要同時修改客戶端邏輯。所以,線上驗證與功能迭代的靈活性受到了極大的限制,無形中拉長了整個功能上線週期。此外,不一樣端智能應用場景(CV、推薦等)也存在着較大的需求差別,如何知足不一樣的業務場景需求也是須要解決的頭部問題。oop

  1. 端上環境複雜性

構建一套完整的端智能運行環境並不是易事,除了在雲端進行模型的訓練和下發,還須要在客戶端進行數據的收集、存儲、處理,硬件資源的評估與調度,推理引擎的選擇,操做系統的兼容,推理任務的管理與調度等等。這些問題無形之中提升了端智能應用的門檻,如何可以屏蔽這些複雜的端上環境也是端智能目前面臨重要挑戰。性能

3、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工做流中,「算法包」是一個完整資源的集合。「算法包」包括推理過程當中使用到的模型,也包括算法邏輯及其依賴庫信息,這些全部的內容被統一打包成爲「算法包」。若是客戶端同步了算法包內容,且具有算法包運行所需的各項能力,那麼就能夠在運行該算法包,實現一個完整的推理流程。

image-20210407104620681
圖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 *)business
                  input:(PTYInput *_Nullable)input
             config:(PTYTaskConfig *_Nullable)config
       taskCallback:(PTYTaskCallback _Nullable)taskCallback;
複製代碼

每觸發一個算法包的運行實際上就至關於建立了一個任務(Task),Pitaya內部的任務管理模塊會對任務進行統一的接管與處理。算法包是在Pitaya的運行容器中執行的,該容器爲每個任務提供獨立的運行環境,並經過Pitaya提供的接口來進行特徵工程數據的存取和模型推理等。Pitaya對推理流程和接口進行了高度的抽象,支持不一樣類型的推理引擎的集成(ByteNN、ByteDT、TFLite),最大程度上的知足了不一樣業務方的使用需求,下降項目遷移到Pitaya框架的成本。

2.6 任務監控

爲了實現一鍵集成的使用體驗,Pitaya內部打造了一套對任務進行全面、細緻的監控體系。監控內容涵蓋如下幾個方面:

  • 指標監控:任務PV/UV、成功/失敗、算法包下載成功率/覆蓋率
  • 性能監控:內存、各個鏈路階段耗時、初始化耗時
  • 異常監控:任務卡死、失敗緣由、網絡請求失敗

Pitaya SDK將以上指標進行了分類整理,依託於Slardar平臺的數據展示能力,每一個集成業務方均可以一鍵複製模板,在宿主App內創建完善的數據看板,真正作到開箱即用。

image-20210406203956556
圖3-2-3 Pitaya監控數據示意圖

4、總結與展望

Pitaya是專門爲移動端打造的端智能一體化方案,與傳統方案相比,具有如下優點:

  1. 下降了端智能使用成本,方便業務快速集成,拿到業務收益
  2. 完善的動態化能力,支持模型的快速迭代與效果驗證
  3. 提高多方協做的效率,讓算法工程師深刻參與客戶端場景中
  4. 算法、模型高度複用,能夠快速推廣已經驗證的方案

目前,字節跳動內已經有抖音、頭條、西瓜等衆多產品線基於Pitaya開始了端智能的實踐和探索,在此過程當中咱們也與業務方持續溝通,不斷打磨產品和使用體驗,並對將來Pitaya的發展方向進行以下規劃:

  1. 特徵工程:強化特徵工程能力,充分利用端側特有信息,結合雲端數據,提供更加豐富和準確的數據。
  2. 模型自衍化:端智能的最大使用場景就是根據用戶自身的行爲特徵進行不斷的學習,從而更加符合使用者的習慣。爲了達到這種效果,須要解決本地訓練數據、模型本地訓練的問題,以及創建一套對模型準確率評估和回退的管理機制。
  3. 通用AI能力建設:針對通用性的使用場景(網絡狀態預測等),Pitaya可內置相關能力,快速推廣至業務方。

關於字節移動平臺團隊

字節跳動移動平臺團隊(Client Infrastructure)是大前端基礎技術行業領軍者,負責整個字節跳動的中國區大前端基礎設施建設,提高公司全產品線的性能、穩定性和工程效率,支持的產品包括但不限於抖音、今日頭條、西瓜視頻、火山小視頻等,在移動端、Web、Desktop等各終端都有深刻研究。

就是如今!客戶端/前端/服務端/測試開發 面向全球範圍招聘!一塊兒來用技術改變世界,感興趣能夠聯繫郵箱 chenxuwei.cxw@bytedance.com,郵件主題 簡歷-姓名-求職意向-電話。

相關文章
相關標籤/搜索