天天看點

位元組跳動端智能工程鍊路 Pitaya 的架構設計1、Client AI-Pitaya 定位2、Pitaya 架構3、Pitaya 平台4、Pitaya SDK

Client AI 是位元組跳動産研架構下屬的端智能團隊,負責端智能 AI 架構和平台的建設,也負責模型和算法的研發,為位元組跳動開拓端上智能新場景。本文介紹的 Pitaya 是由位元組跳動的 Client AI 團隊與 MLX 團隊共同建構的一套端智能工程鍊路。

作者|覃量

1、Client AI-Pitaya 定位

這些年,随着算法設計和裝置算力的發展,AI 的端側應用逐漸從零星的探索走向規模化應用。行業裡,FAANG、BAT 都有衆多落地場景,或是開創了新的互動體驗,或是提升了商業智能的效率。

Client AI是位元組跳動産研架構下屬的端智能團隊,負責端智能AI架構和平台的建設,也負責模型和算法的研發,為位元組跳動開拓商業智能新場景。

Pitaya則是由位元組跳動的Client AI 團隊與 MLX 團隊共同建構的一套端智能工程鍊路,為端智能應用提供從開發到部署的全鍊路支援。

Pitaya的願景是打造行業領先的端智能技術,助力位元組智能商業化應用。我們通過 AI 工程鍊路為端智能業務提供全鍊路支援;通過 AI 技術方案,幫助業務提升名額、降低成本、改善使用者體驗。

迄今為止,Pitaya端智能已經為抖音、頭條、西瓜、小說等應用的 30+場景提供了端智能支援,讓端智能算法包在手機端每天萬億生效次數的同時,錯誤率控制在不到十萬分之一。

位元組跳動端智能工程鍊路 Pitaya 的架構設計1、Client AI-Pitaya 定位2、Pitaya 架構3、Pitaya 平台4、Pitaya SDK

2、Pitaya 架構

位元組跳動端智能工程鍊路 Pitaya 的架構設計1、Client AI-Pitaya 定位2、Pitaya 架構3、Pitaya 平台4、Pitaya SDK

在這一節我們來詳細介紹一下Pitaya架構的兩個最核心的部分:Pitaya平台和Pitaya SDK。

  • Pitaya 平台為端上AI提供了工程管理、資料接入、模型開發、算法開發和算法包部署管理等一系列的架構能力。在端上算法政策開發過程中,Pitaya 平台支援在AB平台對端智能算法政策進行實驗,驗證算法政策的效果。除此之外,Pitaya 平台還支援對端上AI的效果進行實時的監控和告警配置,并在看闆上進行多元度的分析與展示。
  • Pitaya SDK為端智能算法包提供了在端上的運作環境,支援端上AI在不同裝置上高效地運轉起來。Pitaya SDK同時還支援在端上進行資料處理和特征工程,提供了為算法包和AI模型提供版本和任務管理、為端上AI運作的穩定和效果進行實時監控的能力。

3、Pitaya 平台

3.1 Pitaya Workbench

位元組跳動端智能工程鍊路 Pitaya 的架構設計1、Client AI-Pitaya 定位2、Pitaya 架構3、Pitaya 平台4、Pitaya SDK

*MLX: 位元組通用機器學習平台

*Libra: 位元組大規模線上AB實驗評估平台

*Slardar: 位元組性能和體驗保障的端監控APM平台

Pitaya平台為算法包的開發、管理、調試、釋出、部署、實驗、監控提供了一套完善易用的Pitaya Workbench。

  • 為了提高算法開發效率,Pitaya Workbench為算法工程師提供了一套可以友善配置資料、模型、算法的開發環境。
  • 為了簡化調試,Pitaya Workbench在 WebIDE 上實作了真機聯調,支援斷點、SQL 執行等能力。
  • 為了驗證AI政策效果,Pitaya平台打通了位元組的 A/B 實驗平台 Libra ,進而實作更靈活的實驗環境設定。
  • 為了保證端上AI的效果和穩定性,Pitaya平台提供監控告警能力來監控算法包的性能、成功率等運作名額,以及端上模型的準确率、AUC等模型效果名額,并在Dashboard中進行可視化展示。

3.2 機器學習平台

為了應對大資料處理、深度學習模型訓練需求,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建構。

4、Pitaya SDK

位元組跳動端智能工程鍊路 Pitaya 的架構設計1、Client AI-Pitaya 定位2、Pitaya 架構3、Pitaya 平台4、Pitaya SDK

4.1 端上AI環境

4.1.1 端上虛拟機

Pitaya SDK 的核心是自研實作的端上虛拟機 - PitayaVM,為算法包和端上模型在手機端上運作提供了必要的環境。為了能夠讓虛拟機在端上運作,解決端上虛拟機存在的性能差、體積大的問題,Pitaya在保留了大部分的核心功能的同時,對虛拟機做了許多優化:

  • 輕量:包體積影響使用者更新更新率。通過對核心、标準庫進行功能裁剪,優化代碼實作,并開發自研工具對包體積進行詳細解析,PitayaVM的包體積在保證核心功能的同時,包體積縮減到了原來的10%以下,控制在了1MB以内。
  • 高效:PitayaVM在保持輕量的同時,性能上也進行了對應的優化。在容器操作、數值統計場景處理的性能甚至超越了Android和iOS上的原生性能。同時虛拟機也支援并行執行算法代碼,大幅度提升執行效率。除此之外,PitayaVM還支援通過JIT的方式優化在Android上的執行性能,開啟JIT後可以提升将近30%的表現。
  • 安全:PitayaVM使用自研的位元組碼和檔案格式,確定檔案和虛拟機的安全性。

對于嚴格要求體積的産品線(比如ToB業務),還可以選用Pitaya SDK的MinVM方案,通過自研輕量級解釋器,在PitayaVM的基礎上進行極緻輕量優化,将包體積壓縮到100KB以内。

4.2 端智能核心流程

4.2.1 資料準備

Pitaya SDK提供了對資料準備流程的一系列支援。提供從裝置、應用、業務、端上特征中心,雲端裝置畫像平台、搜推廣子產品擷取特征資料的能力。同時Pitaya SDK也支援在端上進行動态labeling來對資料進行标注,提升訓練資料品質,進而提高端上模型效果。

4.2.2 端上特征工程

端上特征工程分成三個主要部分:「特征管理」、「端上特征存儲」、「端上特征中心」。

位元組跳動端智能工程鍊路 Pitaya 的架構設計1、Client AI-Pitaya 定位2、Pitaya 架構3、Pitaya 平台4、Pitaya SDK

特征存儲

Pitaya SDK提供了KV和SQL lite等多種方式的特征存儲,在端上實作了類似于Redis和Hive的資料存儲子產品。同時Pitaya SDK也提供針對端上進行裁剪優化的numpy、MobileCV、MLOps等基礎庫,以相容更多格式的資料、提供更複雜的端上資料處理能力。

Pitaya SDK提供的高時效、多元度、長序列特征和合規允許下的隐私資料,除了可以支援相當比例的端内決策,還可以進一步加工特征、樣本,為雲端模型推理、訓練提供支援,進而支援CV、NLP、資訊流等不同的端上智能場景。

端上特征中心

Pitaya SDK提供一個端上特征中心子產品,通過對端上的豐富多樣的特征資料進行多元度的整合和管理,來讓不同的端上業務場景友善高效地消費、共享、定制、複用各自的特征資料。端上特征中心可以通過中心化部署的形式,自動化地通過時間、應用生命周期、甚至自定義的session來對特征資料進行整合和生産,然後提供給不同的子產品進行使用,顯著提高特征開發效率。同時由于資料的生産、消費都在本地,整個過程可以實作毫秒級的資料時效。

特征管理

端上資料來源豐富,特征生産靈活,可以經過端上特征工程處理後得到較複雜高階的端上特征,還可以進行二次特征交叉後再提供給業務場景進行消費。針對端上特征的這種特性,Pitaya SDK在端上維護了一套特征管理機制,做到特征上下遊生産可靠、可維護、可溯源。同時提供以下能力:

  • 端上特征監控:特征管理子產品對端上特征建立了一系列校準和監控,實時監控端上特征缺失、特征值異常、特征值偏移等情況,確定端上特征的正常生産。
  • 端上特征地圖:為了實作跨團隊的特征共享與協作,特征管理子產品提供端上特征地圖的能力,讓不同業務團隊都可以通過特征地圖對裝置上的特征進行發現、檢索、貢獻和管理。端上特征地圖提供一套添加和使用特征的标準規範,并可以通過建立特征組,為特征添加metadata資訊來最大化降低對特征含義的了解成本,提高特征建設和複用的效率。

4.2.3 端上模型推理

Pitaya SDK對AI模型在端上的部署和實際應用進行了深度優化,連通位元組自研的高性能異構推理引擎架構,Client AI團隊開發的機器學習決策樹推理引擎ByteDT,以及AML團隊談發的位元組TVM引擎,讓AI模型可以在端上進行快速部署和高性能推理。目前Pitaya SDK支援的端上推理引擎可以覆寫大部分端上AI場景,并提供完善的工具鍊支援,包括:

  • 高相容:支援将業務主流架構訓練的模型(Caffe、Pytorch(ONNX)、TensorFlow(tflite)、XGBoost、CatBoost、LightGBM、...)轉換成端上支援的模型格式并進行壓縮量化。覆寫CV、Audio、NLP等多個業務領域的常用OP,在端上相容全部安卓機型和iOS機型。
  • 高通用:支援CPU/GPU/NPU/DSP/CUDA等處理器、可以結合處理器硬體情況、目前系統資源占用情況進行擇優選擇與排程。
  • 高性能:支援多核并行加速和低比特計算(int8,int16,fp16),降低功耗的同時提升性能,整體性能在業界持續保持領先。

4.3 端智能核心配套能力

4.3.1 端監控

端監控子產品提供對端上AI耗時、成功率、大盤穩定性和模型效果的主動監控。

用戶端在推理任務運作過程中,會自動監控算法包運作關鍵鍊路上的性能并進行埋點,然後針對不同類型的埋點,上報到不同的平台進行相應的展示。

位元組跳動端智能工程鍊路 Pitaya 的架構設計1、Client AI-Pitaya 定位2、Pitaya 架構3、Pitaya 平台4、Pitaya SDK

對應不同的平台,端監控支援:

  • 在元件監控平台上,通過自定義配置的形式為大盤的穩定性,比如整體算法包運作耗時、人均觸發次數等名額定制化告警配置以及告警頻率。
  • 在行為分析系統上,埋點算法包運作結果和行為,通過 報表/看闆 展示算法包運作成功率、模型推理準确度等資訊。
  • 在單點追查平台上,針對推理耗時太長的問題,檢視方法樹的詳細耗時。

4.3.2 算法包管理

資源管理資源管理具備對算法包的更新、下線、版本相容等能力,讓算法包能夠自動絲滑地部署在端上;同時還維護了一整套的用戶端AI運作環境。經過長時間的磨練,我們提供了這些功能:

  • 定制下發:支援按需下發和手動下發等不同的下發方式,兼顧可用性和使用者體驗。
  • 靈活觸發:支援多種算法包觸發方式,可以通過定時、事件、以及自定義的方式在業務期望的時機點去執行端上AI模型或政策。
  • 環境隔離:針對不同算法包的不同環境依賴,以及相同依賴不同版本之間的相容性,提供了子產品隔離的環境;同時提供子產品緩存和釋放能力,避免子產品頻繁切換,兼顧了運作速度和記憶體占用。

任務管理

由于資料和模型都在端上進行計算和推理,不需要依賴網絡,也沒有網絡延遲。是以端上AI相比雲端AI的耗時低非常多,使得端上AI可以做到頻率更高,響應更快。任務管理專門對應端上AI的特性進行設計,支援了多種能力:

  • 高并發:支援多任務并發、多線程排程的任務管理模式來給AI任務保證一個高效的運作環境。
  • 熔斷保護:為了保證業務核心場景的穩定性,Task Management子產品支援熔斷保護,對于連續N次運作失敗,或者連續N次導緻崩潰的算法包,我們會進行熔斷,暫時阻止其運作。
  • 優先排程:當業務場景較多時,高頻觸發推理任務可能導緻任務堆積。為了保證高優任務的優先級,我們支援通過優先級對任務進行排程;此外,實時性較高的場景下,我們還支援合并處于待執行狀态的中間任務,保證任務響應的實時性。
  • 防卡死:算法代碼動态性較高,可能會引入死循環,端上若運作包含死循環代碼的推理任務,會導緻資源持續占用。為此我們開發了卡死檢測功能,檢測到死循環後,會在解釋器層面退出死循環,并清理環境和恢複解釋器,以保證正常任務排程。

4.3.3 聯邦學習

為了保障使用者的資料隐私,Pitaya SDK提供Pitaya聯邦學習子產品,支援在不上傳任何隐私資料的情況下訓練AI模型。在這個過程中,AI模型訓練隻依賴于經過隐私保護和加密技術處理後的端上模型更新結果,使用者相關的資料不會被傳送到雲端儲存,也無法反推出原始資料資訊,實作了模型訓練和雲端資料存儲的解耦。除此之外,Pitaya SDK還支援直接在端上進行模型訓練、部署和疊代,來實作千人千模或者千人百模的使用者個性化模型。

為了保證使用者體驗,Pitaya FL在端上實作了一套自動排程方案,隻有在裝置同時滿足空閑、充電以及有wifi連接配接狀态下才會進行聯邦學習訓練,整個過程不會對裝置造成任何影響。

Pitaya 未來建設

位元組Client AI團隊的端智能架構Pitaya目前已經為端智能提供了一套完善成熟的開發平台,為端智能開發workflow中的各項環節都提供了完整易用的功能子產品,并在SDK裡提供了業界領先的端上虛拟機、特征、監控、推理引擎支援。