柴立巖 龐超 張進猛

摘 要:隨著人工智能的廣泛應用,智能模型訓練成為研發周期的關鍵路徑。灰度發布的引入,將模型訓練實現多“進程”,及時抓取用戶反饋信息,提高模型的成型效率。
關鍵詞:灰度發布;用戶分流;人工智能;算法調優
0? ? 引言
灰度發布又稱金絲雀發布,是指在黑與白之間能夠平滑過渡的一種發布方式。可以讓一部分用戶繼續使用產品特性A,一部分用戶用產品特性B,然后再根據用戶反饋信息決定逐步擴大范圍。智能模型訓練實質為調整算法參數,不斷地重復抓取用戶反饋數據和模型調整。灰度發布的運用與傳統智能模型訓練相比,可以同時運行多個不同維度參數、不同權重的模型版本,結合用戶反饋信息,多管齊下,大大縮短模型篩選的時間,加速模型定型。
1? ? 概述
1.1 智能模型訓練現狀
目前的智能模型訓練都是根據業務需求進行模型設定,利用一套模型算法來完成用戶信息采集和重要節點優化,根據用戶的反饋信息調優維度參數及權重參數。在日常測試中,一般要經過十多次的優化周期才能達到上線需求。此流程使得開發周期延遲,不能滿足業務發展需求。
1.2 建設目標
借鑒知名IT企業7*24不停止服務,結合引流條件前置,完成多個模型版本無縫鏈接,壓縮訓練周期,滿足業務需求。
(1)將模型訓練算法試行灰度發布,做到7*24不停止服務,多版本共存,標記不同引流下用戶信息;通過信息的整理、加工、分析調優算法參數。
(2)開發灰度發布,對用戶調查問卷進行分揀歸檔,調整模型參數,優化模型算法,縮短研發周期。
(3)版本迭代上線。讓算法模型按照“A類用戶、B類用戶-->C類用戶、D類用戶-->全網用戶正式發布”的發布流程,抽取的各類用戶按照系統中的不同屬性來定,并不斷擴大指定類型用戶數量,實現新版本模型算法的平滑上線。
2? ? 概要設計
2.1 傳統模型訓練
傳統模型訓練流程通過需求分析以后,交由軟件研發部進行開發。先進行單元代碼測試和功能測試,滿足業務需求的功能后進行性能測試,如果測試不通過,需要研發人員進行修改,直到測試滿足業務需求后,提交到代碼管理系統,執行生產環境流水線[1]。發布過程需要停止當前模型版本,既浪費時間又有不好的用戶體驗。已上線版本存在測試未發現問題,用戶反饋后若短期不能解決,只能進行版本回退。
2.2 模型灰度發布
模型灰度發布指同時存在多個版本模型,并非直接廢除舊的模型使用新模型,而是有一個新舊交替前的共存。通過不斷調優維度參數及權重參數,直到找到一個符合業務需求的模型版本。此方法創新點體現在可同時收集多個維度和權重下的模型分析效果,同時對多個不同參數模型進行調優,通過漸進式分析不同模型的反饋效果,即為:在較短的時間維度中,通過引流規則的條件前置,動態調整各個測試模型負載。方便建立應急演練,建立完善應急預案,并加快模型訓練過程,縮短開發周期。
3? ? 模型灰度發布實踐
3.1 模型灰度發布概述
灰度規則總體設計如圖1所示。核心部件為客戶端、引流策略、多套服務端。客戶端,處理用戶請求,根據預先設定的引流規則將不同特性的用戶請求轉發不同的模型版本上;引流規則的設定是通過后臺的管理頁面進行按需配置,根據業務發展需要為接入層提供服務;多套模型測試服務,分別部署多個服務器或者同一服務器的不同容器下,根據預先設定的前置條件對用戶進行分流處理,達到不同的用戶請求在不同的服務器響應的效果。
3.2? 模型灰度規劃
3.2.1? 灰度發布的集群
根據業務需要,對現有訓練模型版本進行分析[2],可以部署多套后臺服務或者Web頁面的方式應對不同客戶請求。不同的灰度規則適用不同的生產系統,針對同一模型的訓練也可以間歇采用不同灰度策略來獲取更多的用戶反饋信息,方便做到比較全面的測試效果。
3.2.2? 客戶端
客戶端是一個用戶發起請求所使用的工具的總稱,隨著電子產品的發展,目前主流的電腦端、手機端、各種自助服務終端,從容器的分類上有微信小程序、瀏覽器,在源端的灰度,可根據客戶端的指定灰度規則,也可按照負載策略指定規則[3],例如:源地址策略或IP地址輪詢等多種引流方式。原始負載均衡主要是為了平衡各應用服務器的壓力,將訪問的用戶通過預先指定的規則進行分流[4]。而為了滿足灰度發布,在原始負載均衡上必須新建一套分流規則,需要將用戶群再次進行區分,即在原來的負載均衡的策略上增加一層灰度發布的分流規則[1]。
本次研究的系統為BS架構的軟件系統,接入層采用nginx。由于BS架構的軟件系統并沒有直接識別客戶端的能力,只能借助于cookie和seesion的機制來完成對客戶端的標識和分類。客戶終端灰度,可以根據用戶使用playform字段對不同終端進行標識;也可以采用基于JWT的Token認證機制完成用戶請求參數的處理。
3.2.3? 灰度發布規則制定
根據要訓練的模型需求,對比目前的用戶畫像、用戶特點及用戶量,也可以是普通的隨機用戶等。一般模型的訓練是按照用戶的區域范圍、崗位級別、年齡分布等維護對用戶進行歸類,根據不同的類別,引流到相應的服務,根據篩選設定的流程規則,把不同類別用戶關鍵信息同步到數據庫集群中,再交由灰度算法調度,完成引流規則的設定。
3.2.4? 用戶分流
客戶端發起請求轉發到后端服務器,在轉發過程中根據提前設定的引流規則,可以根據終端不同或者用戶特性等分發到不同的生產服務器。灰度發布算法根據數據庫中的配置信息,判斷當前訪問者的身份明細,再配合引流的策略設置記錄訪問日志,以便后期對人員訪問情況、操作情況、使用評價等信息的匯總分析。
同時對一大批用戶進行多個模型版本內測,根據分發規則區分不同版本之間的用戶反饋信息,版本信息對應上用戶反饋之后進行分析調優。確定出滿足業務需求的模型版本后,確定線上唯一版本,根據引流規則設定,關閉其他訪問渠道。通過多模型、多集群的用戶測試,收集測試用戶反饋信息,進行及時的版本優化,加快版本的迭代開發[5]。
3.2.5? 應用效果分析
根據業務需求并結合目前系統情況,筆者對智能問答模型算法進行了負載灰度、服務端灰度兩種不同規則的性能測試,性能測試工具采用Jemeter。在同樣客戶端配置、服務器配置、網絡帶寬、并發量的情況下,負載灰度與服務端的性能測試,兩次測試服務器吞吐量分別為63.3和67.7,這個結果差異可以忽略,與未使用灰度發布前的服務器吞吐量66.68相比差異均不大。
綜上分析結果,消除了灰度發布可能影響性能的疑慮。灰度發布系統的使用雖然增加了服務器代碼或者負載的處理工作,但是再高并發的測試中并未影響服務器性能;模型算法的研發可以根據不同應用場景選擇合適的灰度策略,盡量縮短模型算法的研發周期。
4結語
一個智能模型算法的研發,在保證研發周期和資源合理調配的前提下[4],灰度發布的運用完美解決開發周期長和線上產品問題需回退版本的應急辦法。智能問答模型算法灰度發布的使用,能夠嘗試新的模型參數,可以大跨度測試,加快算法開發速度。同時隨著人工智能給世界帶來的巨大變革,算法優化的效率也急需提高,面對業務需求不斷提高,如何更精進地選擇合理的研發技巧來縮短開發周期,還需在更多的維度中研究灰度發布的適用場景。
[參考文獻]
[1]周智,吳世進,徐建鋒.移動互聯網程序的灰度發布[J].電腦知識與技術,2017(9):47-49.
[2]冷彪. 三維模型檢索的特征描述和相關性反饋算法的研究[D].北京:清華大學,2009.
[3] MARTINEZ-GARCIA J ,CASTILLO-BARRERA F E ,PALACIO R ,et al. An ontology for knowledge condensation to support expertise location in the code phase during software development process[J]. IET Software,2020(14):11.
[4]賈偉洋. 基于群組用戶畫像的農業信息化推薦算法研究[D].咸陽:西北農林科技大學,2017.
[5]周慧娟. 鐵路應急管理中的預案管理與資源配置優化[D].北京:北京交通大學,2011.
(編輯 姚 鑫)