為提高廣告、素材、活動、插件等投放收益,這些流量入口都會對接算法,通過算法能力進行精準投放;對接算法則需要在業務系統引入算法TF模型(本地深度模型),算法系統會把對線上流量特征、收益等深度學習生成的TF模型加載到對應業務系統的NAS服務中,十分鐘更新一次;業務系統從NAS讀取算法TF模型存儲到本地緩存,也需要十分鐘讀取一次做更新。在實際投放中,如活動推薦,業務系統會將用戶流量信息(deviceId、ua、ip等)、活動候選集和本地緩存的TF模型傳入算法接口,由算法退出一個最優活動,然后進行投放。
主要缺陷
模型更新,正在使用的線程因模型丟失而異常退出。
服務剛啟動或模型更新后,加載速度非常慢,流量瞬間打入會出現大量超時而異常退出。
主要目的
加快投放響應,提升用戶體驗;提高算法接入質量,最大化收益
基本構思
利用隊列將本地緩存的算法TF模型進行排序,隊列大小設置成3(可同時緩存三個TF模型,一個待刪除,一個在使用,一個預熱),利用隊列的先進先出特性對緩存的TF模型做刪除操作,刪除操作只在隊列滿時。模型更新后不直接使用,先利用配置或線上流量進行模型預熱加載,預熱完成后再使用。
具體實施例
服務啟動初始化流程:
啟動初始化
- 服務啟動后,先從本地NAS服務中讀取TF模型;
- 對取出的模型進行預熱處理,
- 將預熱好的TF模型插入隊列并存入本地Guava緩存。
服務運行中預熱與懶刪除流程:
運行中預熱與懶刪除
- 服務接受到活動的投放請求后,會先從本地的Guava緩存中獲取模型;
- 若緩存未過期則取出TF模型直接使用推出活動并返回;
- 若緩存已過期,先使用過期的模型同時異步從隊列的頭部取出一個TF模型放入緩存;
- 接著從NAS服務中讀取新的TF模型,進行預熱處理;
- 從隊列尾部刪除一個TF模型(最舊的一個),并將更改預熱的TF模型從頭部插入隊列,結束異步線程,任務完成。
主要優點
異步預熱,提升投放鏈路響應,避免流量等待預熱過期造成浪費;惰性刪除,防止實時刪除正在使用的模式導致投放失敗。