深信服的AI平臺了解一下?看它如何助力AI算法敏捷開發
近日,QCon全球軟件開發大會在廣州舉辦。深信服工程技術部AI研發平臺負責人孟賓賓在現場帶來《數算工程一體化機器學習開發平臺助力AI算法敏捷開發》的主題演講。本次演講重點分享了深信服AI平臺團隊多年AI研發的實戰經驗。以下是他的演講內容摘要。

機器學習平臺建設背景介紹
深信服的AI技術主要是應用在網絡安全和云計算兩大業務中。在網絡安全方面,AI能力會應用在病毒文件檢測和家族分類、Web對抗攻擊、威脅情報、數據分級分類等產品中。在云計算方面,像桌面云視頻畫面的增強、托管云平臺故障智能預測和性能診斷與優化、邊緣云的安全生產視頻監控分析等場景也會用到AI。

針對不同的安全數據分析任務,并結合不同的模型部署場景,機器學習平臺會涉及到非常復雜的特征工程和AI算法工程化開發。
深信服AI算法研發的過程,可以抽象成這樣一個典型研發范式,業務上從網絡安全和云計算兩個維度來看,都會涉及到對接海量業務數據,比如說網絡流量、系統日志、各種惡意文件以及云平臺的運維日志。中間要經過業務強相關的特征提取,或者基于自動編碼器、Graph Embedding、Word2Vec等技術自動的特征提取。最后考慮基于云端、PC端或者邊緣計算設備端,高效地將算法部署運行起來。

深信服AI技術研發,主要面臨數據、算法、算力這三大核心挑戰。

第一個挑戰是AI數據層面。深信服AI研發面臨首要問題是業務數據孤島比較多,不同的細分的業務,會有自己獨立的數據存儲系統。算法工程師想獲取這些研發的數據,面臨的阻礙會比較大,獲取研發數據的時間長。其次,算法工程師取到的這些數據,因為要做精細化的特征工程,但是現在企業內部缺少比較高效地能夠去管理這些中間特征以及一些高價值數據的支撐工具,導致它的數據很難被算法工程師二次使用以及被相關性比較高的任務復用起來。
第二個挑戰是AI算法層面。首先表現在AI算法針對業務人員,有一定的開發門檻,并且專業算法工程師的數量是有限的,這樣就無法擴大AI賦能業務的覆蓋面。其次是從業務規劃想法產生到AI算法原型產出,再到AI模型的最終上線,整體流程時間比較長,跟不上企業內部業務創新發展的速度。
第三個挑戰是AI算力層面。針對安全服務SaaS化趨勢,算法工程師基于機器學習平臺有海量的安全數據可以消費使用,如果提供分布式CPU和GPU算力管理能力,可以支撐分布式AI建模;針對新業務或者小規模實驗場景,現在主流基于整張物理卡分配或者GRID vGPU方式靜態分配都無法實現資源的動態共享,使得高昂貴的GPU算力利用率十分低。
數算工程一體機器學習平臺設計方案
基于敏捷開發理念,通過DevOps、DataOps、ModelOps、ServiceOps四個行動,來實現算法開發流程可自動化、AI實驗可重現以及AI模型可迭代。當前機器學習平臺的重點是實現異構數據的統一治理、異構計算任務的統一調度、多樣用戶的統一賦能。

異構數據的統一治理是指結構化數據和非結構化基于統一的對象存儲服務和統一的元數據管理服務。
異構計算任務的統一調度是指對數據分析型的特征提取任務和AI模型訓練任務,針對這兩個異構任務,實現一個任務調度和集群管理方案,同時實現異構計算框架之間的數據高效交換。
多樣用戶統一賦能是指針對專業的算法工程師和業務人員可以統一使用這個機器平臺開發AI能力。
深信服的機器學習平臺共計分為五個抽象層:

最底層是基礎平臺層。基于公司的托管云和EDS服務,實現異構AI算力管理,高性能存儲以及網絡資源的統一調度和管理。
基礎平臺層上面是數據層。數據層實現海量的結構化、非結構化數據的統一接入和存儲服務以及這兩類異構數據的元數據的統一管理,同時還實現中間研發數據管理。此外,還提供了基于元數據的數據集數據目錄管理功能,方便工程師通過數據schema字段、安全產品類型(AF、SIP、EDR等)、日志類型(http、dns等)、用戶名等多維度實現AI研發數據的搜索、詳情查看服務。
數據層上面是框架層。包括機器學習或大數據的一些典型計算&訓練框架。再往上層是核心計算層,支持自動化機器學習、分布式訓練、一鍵部署,灰度發布等等的機制,以及通過AI Flow進行模型的二次的開發、低代碼開發等。
在框架層上面,會持續去沉淀出一些典型場景或者業務中能夠更廣泛使用的算法能力,最終實現AI能力的二次開發復用,比如說,網絡安全領域的網頁篡改、病毒檢測分析等。
接下來介紹AI研發數據治理模塊:

針對外部異構的數據,深信服提出了AI Data Store,一種繼承湖倉一體設計理念的多樣性AI研發數據統一存儲和消費的數據系統,實現了外部數據的統一接入和存儲管理。比如數據庫類的結構化數據、文件類的結構數據以及文件類的非結構化數據這三類數據,可以統一存儲管理。
深信服開發了data store SDK工具或CLI命令行工具,基于CLI命令行,算法工程師就可以像提交代碼一樣或者代碼管理的方式一樣去管理自己的數據集,包括支持以push或pull的方式管理AI數據集。
同時也支持向海量的數據操作,即直接內存的方式讀取分布式到計算節點,這種方式是可以避免通過notebook本地存儲空間的限制,這樣會更方便進行大數據或者分布式的計算。

對于data store的實現來說,深信服采用數據抽象分層的設計方案,主要分為三層。
第一層也就是最底層的原始數據層Raw Data Layer, 負責對海量的接入或上傳的文件數據進行統一存儲管理,算法工程師基于這一層原始數據進行數據清洗以及做一些精細化的特征提取。
提取后的數據存放在Feature Data Layer,這一層的數據還可以進一步轉換成用于訓練的機器學習訓練。
在離線AI算法訓練的過程當中,就可以消費ML DataSet Layer的數據,實際上每一層的數據都可以被AI框架直接加載消費。
除了上面的離線消費場景,還有在線消費場景。可以直接從Feature Data Layer這一層實現在線消費。同時,會在Raw Data Layer加一個Slidding Window ,支持Latest-K方式的熱數據消費使用,在線消費或者模型灰度測試的時候,可以實現這種相對最新數據的接入,來實現算法的效果驗證。

此外,還會通過統一元數據的管理來實現AI數據集CRUD操作。缺少元數據管理的數據湖,本質就是一個數據沼澤,算法工程師或者AI研發人員沒有辦法高效使用海量數據,即使有海量的業務數據也難以高效率的價值變現。
針對結構化數據和非結構化數據,機器學習平臺設計了一個統一的元數據層,支持用戶自定義數據集的元數據,由其對于非結構化數據集的管理帶來很大的方便,因為非結構化數據本身缺少豐富的元數據,自然也就無法供算法工程師高效和靈活地對文件數據進行CRUD操作。

針對多樣性AI任務導致異構計算引擎調度管理難的問題,深信服AI研發團隊把AI計算引擎分為兩大類,一類是大數據分析型的,主要用于數據清洗、特征提取,比如Spark,Flink;另一類是AI算法計算型的,主要用于ML&DL算法訓練,甚至包括圖分析、計算框架dgl、graphscope、以及強化學習menger等。

此外,深信服AI研發平臺實現了異構計算框架的統一調度和數據的高效通信。
在泛AI領域,大數據分析平臺和AI計算平臺一直存在兩種對接方式:
一種是以大數據資產或特征處理等為中心的數據工程為主,其特點是:數據需要顯式落盤存儲,以此來實現數據復用、降低計算開銷、數據debug。
一種是以以AI計算性能(訓練和推理)等為中心的算法工程為主,其特點是:數據不需要落盤存儲,以此來實現加速特征提取與模型訓練異構任務的數據傳遞(尤其在大規模、生產環境)、加速CPU和GPU之間的數據傳遞(尤其在大規模DL模型訓練和推理環境)。
這兩種異構任務的“分”與“合”,在不同的場景,有其存在的必要性,而深信服機器學習平臺建設的目標就是基于一套任務調度框架,實現大數據分析任務和AI計算任務的統一管理。
深信服的解決方式是基于Ray實現異構數據分析和AI計算框架統一調度,避免多套調度引擎,同時基于ML DataSet可以實現框架之間的數據高效傳輸,有效解決異構分布式任務對接問題。
針對GPU訓練數據,深信服通過對dataloader 層面的優化,降低GPU訓練任務本身的忙等時間,端到端實現GPU訓練任務的優化和加速。具體來說該平臺通過兩個維度來優化:
維度一:縮短分布式存儲系統與分布式計算系統之前的數據傳輸時間;由于機器學習平臺是典型的計算和存儲分離架構, 導致AI研發數據訪問時延問題,業界做法是在開始模型訓練之前:將訓練數據復制到本地的磁盤存儲中,如普通機械硬盤或者 NVMe、SSD等高速存儲設備;將數據提前復制到部署在計算節點上的分布式存儲系統中,如Ceph、GlusterFS;

維度二:基于GPU加速和數據pipeline并行優化s數據集預處理的時間;像計算機視覺類任務(釣魚網頁檢測、桌面云視頻幀超分優化、數據防泄密檢測、邊緣AI視頻分析等)的算法訓練會涉及大規模數據集的讀取,這些任務都會存在數據集加載效率低導致GPU任務忙等,使得GPU利用率低問題。原生的pytorch&tensorflow框架的data loader是基于CPU實現數據的加載和數據的預處理,最后將預處理之后的時候從CPU內存交換到GPU顯存。

由于CV類任務的大量操作,比如Resize、Crop、Normlize等都非常適合GPU并行加速,所以深信服選擇利用DALI將預處理任務遷移到GPU計算,這樣既降低了CPU負載,又提高了GPU的利用率。
針對AI訓練任務而言,還有一個特點是數據并非一次性加載到內存或顯存,而是以batch迭代的方式加載,這里面就存在CPU 負責加載數據和GPU并行計算兩個任務交叉進行的任務。由于這兩個子任務的服務和計算特點差異很大,而如果僅以串行的方式執行這兩個任務,勢必會有一個任務大概率會出現負載相對低的現象。

通過將這兩個子任務流水線化,可以實現兩個子任務執行時間的重疊,最終數據加載和算法訓練都可以高負載執行,從端到端加速AI訓練速度。

賦能AI研發實踐效果
借助于低代碼開發算法平臺,可以使得各個角色之間高效協作。針對端到端的AI研發人員來講,如果是任務比較小,算法工程師可以獨自完成這些工作。但當AI的任務業務變得比較大的時候,數據特征的提取、模型的調參、算法的測試,包括集成到產品線、產品當中去,就可以利用該平臺,實現多角色任務協作。

在數據規模層面,已經實現支持TB級的異構數據的統一管理。在集群規模上,支持10+CPU節點。在研發效率上,大規模病毒文件特征提取時間由45天縮短到15天。

總體而言,數算工程一體化機器學習開發平臺未來也有可以持續發展的能力空間。

在線、無監督學習可以降低網絡安全標注數據標注門檻、成本,支撐少樣本在線無監督學習。
Al使用門檻可以進一步降低,除了基于算法模板和Auto-ML,MLSQL方案也可運行。
模型漂移檢測與持續學習,可以持續自動捕捉到安全AI模型的效果漂移問題,持續更新訓練模型。
AI模型訓練和推理加速可以通過數據并行、模型并行、流水線并行的策略進行協同優化訓練。