為提高廣告、素材、活動(dòng)、插件等投放收益,這些流量入口都會(huì)對(duì)接算法,通過(guò)算法能力進(jìn)行精準(zhǔn)投放;對(duì)接算法則需要在業(yè)務(wù)系統(tǒng)引入算法TF模型(本地深度模型),算法系統(tǒng)會(huì)把對(duì)線上流量特征、收益等深度學(xué)習(xí)生成的TF模型加載到對(duì)應(yīng)業(yè)務(wù)系統(tǒng)的NAS服務(wù)中,十分鐘更新一次;業(yè)務(wù)系統(tǒng)從NAS讀取算法TF模型存儲(chǔ)到本地緩存,也需要十分鐘讀取一次做更新。在實(shí)際投放中,如活動(dòng)推薦,業(yè)務(wù)系統(tǒng)會(huì)將用戶流量信息(deviceId、ua、ip等)、活動(dòng)候選集和本地緩存的TF模型傳入算法接口,由算法退出一個(gè)最優(yōu)活動(dòng),然后進(jìn)行投放。
主要缺陷
模型更新,正在使用的線程因模型丟失而異常退出。
服務(wù)剛啟動(dòng)或模型更新后,加載速度非常慢,流量瞬間打入會(huì)出現(xiàn)大量超時(shí)而異常退出。
主要目的
加快投放響應(yīng),提升用戶體驗(yàn);提高算法接入質(zhì)量,最大化收益
基本構(gòu)思
利用隊(duì)列將本地緩存的算法TF模型進(jìn)行排序,隊(duì)列大小設(shè)置成3(可同時(shí)緩存三個(gè)TF模型,一個(gè)待刪除,一個(gè)在使用,一個(gè)預(yù)熱),利用隊(duì)列的先進(jìn)先出特性對(duì)緩存的TF模型做刪除操作,刪除操作只在隊(duì)列滿時(shí)。模型更新后不直接使用,先利用配置或線上流量進(jìn)行模型預(yù)熱加載,預(yù)熱完成后再使用。
具體實(shí)施例
服務(wù)啟動(dòng)初始化流程:

- 服務(wù)啟動(dòng)后,先從本地NAS服務(wù)中讀取TF模型;
- 對(duì)取出的模型進(jìn)行預(yù)熱處理,
- 將預(yù)熱好的TF模型插入隊(duì)列并存入本地Guava緩存。
服務(wù)運(yùn)行中預(yù)熱與懶刪除流程:

- 服務(wù)接受到活動(dòng)的投放請(qǐng)求后,會(huì)先從本地的Guava緩存中獲取模型;
- 若緩存未過(guò)期則取出TF模型直接使用推出活動(dòng)并返回;
- 若緩存已過(guò)期,先使用過(guò)期的模型同時(shí)異步從隊(duì)列的頭部取出一個(gè)TF模型放入緩存;
- 接著從NAS服務(wù)中讀取新的TF模型,進(jìn)行預(yù)熱處理;
- 從隊(duì)列尾部刪除一個(gè)TF模型(最舊的一個(gè)),并將更改預(yù)熱的TF模型從頭部插入隊(duì)列,結(jié)束異步線程,任務(wù)完成。
主要優(yōu)點(diǎn)
異步預(yù)熱,提升投放鏈路響應(yīng),避免流量等待預(yù)熱過(guò)期造成浪費(fèi);惰性刪除,防止實(shí)時(shí)刪除正在使用的模式導(dǎo)致投放失敗。