偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

vivo 官網(wǎng) APP 首頁端智能業(yè)務(wù)實(shí)踐

人工智能
本文介紹端智能技術(shù)在vivo官網(wǎng)APP的落地實(shí)踐,通過抽象問題、提出端智能解決方案、方案落地這三大塊內(nèi)容逐步遞進(jìn)地展開端智能技術(shù)的應(yīng)用過程。

一、前言

vivo官網(wǎng)APP首頁是流量最大的頁面,承載著新品、活動(dòng)、商品、其他入口等流量分發(fā)的重任。在流量分發(fā)上,云端針對(duì)首頁的主要場(chǎng)景建設(shè)了算法支撐。通過梳理首頁的場(chǎng)景發(fā)現(xiàn),智能硬件樓層場(chǎng)景的商品配置還是運(yùn)營純手工動(dòng)態(tài)配置,而非算法推薦。為此,我們探索了端智能技術(shù),將其運(yùn)用在智能硬件樓層場(chǎng)景,用于提升商品分發(fā)效率,進(jìn)而提升智能硬件樓層場(chǎng)景的點(diǎn)擊率。

端智能廣義上來說,是指將人工智能算法部署到端側(cè)設(shè)備中,使端側(cè)設(shè)備具備感知、理解和推理能力;狹義上來說,端智能就是將機(jī)器/深度學(xué)習(xí)算法集成到端側(cè)設(shè)備中,通過算法模型處理端側(cè)感知的數(shù)據(jù)從而實(shí)時(shí)得到推理結(jié)果。而所謂的“端”實(shí)際上是相對(duì)于“云”的概念,是一些帶有計(jì)算能力的個(gè)體設(shè)備,如手機(jī)、家庭路由器、網(wǎng)絡(luò)的邊緣節(jié)點(diǎn)等。因此,可以看到端智能的應(yīng)用離不開這幾個(gè)關(guān)鍵點(diǎn):數(shù)據(jù)、算法模型及計(jì)算能力。

二、抽象問題

端智能是如何提高vivo官網(wǎng)APP首頁智能硬件樓層場(chǎng)景的商品分發(fā)效率的呢?在回答這個(gè)問題之前,我們先了解下智能硬件樓層場(chǎng)景,如下圖所示:

圖片

圖1:vivo官網(wǎng)APP首頁-智能硬件樓層

智能硬件樓層場(chǎng)景,有4個(gè)商品展示資源位,由運(yùn)營在眾多的智能硬件商品中挑選出4個(gè)商品進(jìn)行配置。所以,不同的用戶群體進(jìn)入到vivo官網(wǎng)APP首頁看到該場(chǎng)景下的商品都是相同的。而引入端智能技術(shù)要解決的問題是:不同的用戶群體看到的商品推薦是不一致的,是更加符合該用戶群體的商品,做到推薦的精準(zhǔn)匹配,如下圖所示:

圖片

圖2:智能硬件樓層商品分發(fā)

端智能推薦分發(fā),就是在智能硬件資源池中推薦最適合的4個(gè)商品展示在智能硬件樓層場(chǎng)景中。我們抽象下問題,也就是在N個(gè)商品中選取前K個(gè)商品(K<=N)進(jìn)行展示,進(jìn)一步思考下,如何選取前K個(gè)商品呢?其實(shí)本質(zhì)是將N個(gè)商品按照推薦的概率值進(jìn)行排序,選取概率值較大的前K個(gè)商品。因此,問題就可以進(jìn)一步被抽象為設(shè)計(jì)一個(gè)算法模型,通過對(duì)用戶群體的特征分析,輸出該用戶群體對(duì)N個(gè)商品感興趣的概率值。

三、端智能方案

為什么是使用端智能技術(shù),而不是使用人為約束規(guī)則或者云端模型來解決“針對(duì)某個(gè)用戶群體,N個(gè)商品被推薦的概率值”的問題呢,是因?yàn)槎酥悄芗夹g(shù)的優(yōu)勢(shì)是:

  • 推理計(jì)算是在端側(cè)進(jìn)行的,可以有效地節(jié)約云端計(jì)算資源及帶寬;
  • 因?yàn)樵诙藗?cè)進(jìn)行,響應(yīng)速度相較于網(wǎng)絡(luò)請(qǐng)求會(huì)更快;
  • 端側(cè)的數(shù)據(jù)處理是本地的,數(shù)據(jù)隱私更安全;
  • 算法模型是使用深度學(xué)習(xí)算法通過訓(xùn)練樣本學(xué)習(xí)出來的,而非人工規(guī)則約束,因此可以應(yīng)對(duì)復(fù)雜的場(chǎng)景,做精細(xì)化的推薦。

3.1 整體架構(gòu)

vivo官網(wǎng)APP端智能整體架構(gòu)設(shè)計(jì)如下:

圖片

圖3:vivo官網(wǎng)APP端智能整體架構(gòu)

端智能整體架構(gòu)主要由模型離線訓(xùn)練、云端配置、APP端執(zhí)行三大模塊構(gòu)成,離線訓(xùn)練主要負(fù)責(zé)算法模型的訓(xùn)練生成、模型轉(zhuǎn)換以及模型發(fā)布;云端主要負(fù)責(zé)模型版本管理和模型運(yùn)行及埋點(diǎn)監(jiān)控;APP端在業(yè)務(wù)調(diào)用的時(shí)候主要負(fù)責(zé)計(jì)算推理,通過設(shè)備感知數(shù)據(jù),將其通過特征工程處理后輸入到算法模型中,模型在TensorFlow-Lite的基礎(chǔ)上充分調(diào)用設(shè)備計(jì)算資源進(jìn)行推理得到結(jié)果后反饋給業(yè)務(wù)使用。

離線訓(xùn)練:將原始數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗后,送入到設(shè)計(jì)的特征工程中處理為算法模型能夠處理的特征。然后使用TensorFlow深度學(xué)習(xí)語言搭建網(wǎng)絡(luò)模型,并使用處理后的數(shù)據(jù)進(jìn)行訓(xùn)練得到后綴為.h5的模型文件,需要將該模型文件通過模型轉(zhuǎn)換為后綴為.tflite的文件,因?yàn)?tflite的文件是可以在Android上通過TensorFlow-Lite工具庫加載并執(zhí)行推理。

云端:每次模型的訓(xùn)練都有相應(yīng)的版本控制及監(jiān)控能力,這樣方便做模型的ABTest實(shí)驗(yàn),也可以動(dòng)態(tài)的升級(jí)和回退線上模型版本。

APP端:Google提供了TensorFlow-Lite機(jī)器學(xué)習(xí)工具庫,在此庫上可以加載后綴為.tflite的模型文件,并提供了執(zhí)行前向計(jì)算推理能力。因此,在此基礎(chǔ)上,APP端側(cè)通過實(shí)時(shí)地感知數(shù)據(jù),并通過特征工程處理后得到特征數(shù)據(jù)后,可以在端側(cè)利用TensorFlow-Lite提供的能力進(jìn)行加載模型并運(yùn)行模型,進(jìn)而實(shí)時(shí)得到計(jì)算推理結(jié)果。

3.2 原始數(shù)據(jù)

無論是離線的訓(xùn)練模型,還是APP端側(cè)的計(jì)算推理都離不開“數(shù)據(jù)”,因?yàn)閿?shù)據(jù)是整個(gè)架構(gòu)的靈魂所在。所以,在明確了要解決問題的前提下,就需要全面梳理埋點(diǎn)上報(bào)信息,查看下當(dāng)前擁有的數(shù)據(jù)信息,如下圖所示:

圖片

圖4:原始數(shù)據(jù)特征

從上圖可以看到能夠獲取到很多緯度的數(shù)據(jù)信息,但是在能夠被利用之前,要先進(jìn)行數(shù)據(jù)清洗工作。并不是每個(gè)信息都會(huì)包含這些緯度的信息、也并不是每個(gè)緯度的信息都同樣重要,所以要結(jié)合場(chǎng)景來做數(shù)據(jù)的清洗。例如,在智能硬件樓層場(chǎng)景下,基礎(chǔ)信息設(shè)備型號(hào)很重要,因?yàn)檫@個(gè)信息代表著當(dāng)前用戶使用的是哪款手機(jī)型號(hào),所以在數(shù)據(jù)清洗時(shí),若此信息采集時(shí)是為空,則需要設(shè)計(jì)默認(rèn)值的方式進(jìn)行處理。

在完成了數(shù)據(jù)清洗工作后,就可以進(jìn)行下一步動(dòng)作了,將設(shè)備型號(hào)、性別、所在城市等語義信息,通過特征工程處理為能夠輸入到算法模型處理的特征信息。在本文案例中,我們以基礎(chǔ)信息為例子來展開介紹,基礎(chǔ)信息如手機(jī)設(shè)備型號(hào)、當(dāng)前用戶所在城市、用戶性別等。舉例,若一個(gè)男性用戶在使用x200手機(jī)訪問vivo官網(wǎng)APP,并且授予vivo官網(wǎng)APP定位權(quán)限,獲取的定位在南京,則當(dāng)前獲取一條原始數(shù)據(jù)為“vivo x200,南京,男”。

3.3 特征工程

獲取的原始數(shù)據(jù)是自然語言的特征,需要將其處理為算法模型能夠處理的數(shù)字化表示形式的離散特征。現(xiàn)在AI大模型層出不窮,可以很好地處理自然語言,輸入的自然語言可以通過Embedding模型或者Word2Vec進(jìn)行特征處理,將自然語言處理為模型能處理的“0.1 0.6 ... 0.4”形式,如下圖所示:

圖片

圖5:語義特征

通過Embedding模型處理的特征是具有語義相似性的,但回歸本文,我們并不需要這種具有語義相似性的特征。輸入的特征緯度越大,則模型的復(fù)雜度就越高,而需要的計(jì)算資源也就越高。在端側(cè)做計(jì)算推理,在滿足業(yè)務(wù)需求的前提下,算法模型要足夠小,因此我們化繁為簡,采用簡單的方式來處理原始數(shù)據(jù)。這個(gè)時(shí)候,我們回顧下原始數(shù)據(jù)“vivo X200,南京,男”,這幾個(gè)特征實(shí)際上是并列關(guān)系,我們可以逐個(gè)地處理為One-Hot編碼特征表示,然后再組裝。

3.3.1 位置特征

我們以地理位置信息為例,用戶可以分布在全國的各個(gè)地方,如在北京、上海、南京、重慶等,因此,我們需要找到一定的規(guī)律來處理地理位置信息。這個(gè)時(shí)候需要通過大數(shù)據(jù)的方式,大致了解到城市消費(fèi)的平均價(jià)位信息的分布情況,像北京、上海等城市消費(fèi)趨勢(shì)相當(dāng);像武漢、合肥等城市消費(fèi)相當(dāng)。因此,我們可以根據(jù)此反映出來的現(xiàn)象,將消費(fèi)趨勢(shì)一致的城市歸為一個(gè)聚類。例如,可以簡單劃分為三個(gè)聚類,分別是聚類A、聚類B、聚類C,通過這樣的方式,就可以將不同的城市劃分到這三個(gè)聚類中去。如“南京”屬于聚類A,“揚(yáng)州”屬于聚類B等。再進(jìn)行抽象下,可以使用三位數(shù)字(000)這種形式表示聚類。第一位數(shù)字0表示不是聚類A,數(shù)字是1則表示是聚類A,這樣就可以通過三位數(shù)字來表示地理位置信息了。如,可以通過“100”來代表“南京”。

默認(rèn)值處理:如果此時(shí)獲取不到地理位置信息,可以按一定策略處理獲取不到的信息進(jìn)行填充,如,新增一位聚類D表示是沒有獲取到地理位置信息,亦或者將其都籠統(tǒng)歸納為聚類C。

3.3.2 設(shè)備型號(hào)

我們?cè)倏聪?,如何處理手機(jī)設(shè)備名稱特征的。隨著手機(jī)的更新迭代,市場(chǎng)上的手機(jī)名稱也枚不勝舉。但是,每款手機(jī)都是有其定位的,而這個(gè)定位實(shí)際上是可以通過手機(jī)發(fā)布的系列能夠得知的。如,vivo X200手機(jī)是旗艦機(jī)型,屬于vivo的X系列。參考地理位置信息通過聚類的分類方法,我們也可以簡單地將設(shè)備機(jī)型名稱通過系列來做區(qū)分。在vivo官網(wǎng)APP的選購頁面,可以看到vivo品牌下有三個(gè)系列機(jī)型,分別是X系列、S系列和Y系列。因此,我們?nèi)绶ㄅ谥?,也可以使用三位?shù)字(000)這種形式來表示設(shè)備機(jī)型名稱。例如:第一位數(shù)字0表示不是X系列手機(jī),1表示是X系列手機(jī);同理第二位數(shù)字0表示不是S系列手機(jī),1表示是S系列手機(jī)等。因?yàn)?,vivo X200屬于X系列,所以可以將其vivo X200原始數(shù)據(jù)處理為“100”來表示,同理如果此時(shí)獲取手機(jī)設(shè)備是vivo S20 Pro,則被轉(zhuǎn)換為抽象的特征“010”來表示。

默認(rèn)值處理:參考位置特征的處理方式,可以新增一位One-Hot特征表示UnKnow,即未獲取手機(jī)設(shè)備名稱特征時(shí),UnKnow這一列數(shù)字為1,反之為0。

3.3.3 性別特征

性別可以使用3位數(shù)字(000)表示,第一位表示女性,第二位表示男性,使用第三位表示未獲取性別時(shí)的默認(rèn)值。如,“男”可以通過“010”表示。

3.3.4 特征組合

因此,通過上述的處理規(guī)則,就可以將一條原始數(shù)據(jù)“vivo x200,南京,男”處理為“1001000010”來表示了,如下圖所示:

圖片

圖6:特征組合

特別需要注意的是,自然語言特征組合的順序和處理后的數(shù)字化特征順序一定是保持一致的。

3.4 算法模型

3.4.1 算法模型整體架構(gòu)

算法模型整體架構(gòu)如下圖所示:

圖片

圖7:算法模型整體架構(gòu)

由三部分構(gòu)成:分別是輸入層、隱藏層輸出層

  • 輸入層:是經(jīng)過特征工程處理后的特征,主要是用戶基礎(chǔ)信息和實(shí)時(shí)上下文信息。
  • 隱藏層:由多層全連接神經(jīng)網(wǎng)絡(luò)組成,使其擁有非線性變化能力,可以在更高緯度空間中逼近尋找擬合特征的最優(yōu)解。
  • 輸出層:第一個(gè)輸出層是將每個(gè)分類商品打上標(biāo)簽,輸出該標(biāo)簽概率集合;第二個(gè)輸出層是在第一個(gè)輸出層的基礎(chǔ)上直接通過模型中存入的標(biāo)簽和商品SkuId映射關(guān)系,直接輸出商品SkuId集合。

在設(shè)計(jì)算法模型的時(shí)候,要選擇適合貼近要處理的場(chǎng)景,而非盲目地選擇大模型做基座或者搭建很深的模型。不僅需要考慮模型的預(yù)測(cè)準(zhǔn)確率,還需要考慮端側(cè)的計(jì)算資源。

3.4.2 模型代碼示例

算法模型的核心代碼,如下示例:

# 輸入層
input_data = keras.layers.Input(shape=(input_size,), name="input")
output = tf.keras.layers.Dense(64, activatinotallow="relu")(input_data)
output = tf.keras.layers.Dense(128, activatinotallow="relu")(output)
output = tf.keras.layers.Dense(output_size, activatinotallow="softmax")(output)
# 輸出層:top k index
output = NewSkuAndFilterPredictEnvSkuIdLayer(index_groups=acc.index_groups, )(output)
# 輸出層:index 映射 skuid 直接出
output = SkuTopKCategoricalLayer(acc.skuid_list, spu_count=len(acc.spuid_list))(output)

3.4.3 模型訓(xùn)練

原始數(shù)據(jù):訓(xùn)練模型的原始數(shù)據(jù)是來源于大數(shù)據(jù)提供的埋點(diǎn)信息數(shù)據(jù),例如獲取當(dāng)前日期前3個(gè)月的埋點(diǎn)信息數(shù)據(jù)。

數(shù)據(jù)清洗:并不是所有的原始數(shù)據(jù)都可以拿來直接使用,有部分?jǐn)?shù)據(jù)是不符合約束條件的,稱之為臟數(shù)據(jù),即將不滿足約束規(guī)則的臟數(shù)據(jù)清理后,則可以獲得真正的用于訓(xùn)練模型的數(shù)據(jù)。

2:8分割原則:為了驗(yàn)證模型訓(xùn)練的Top5的準(zhǔn)確率,將清洗后的數(shù)據(jù),80%分為訓(xùn)練數(shù)據(jù)、20%分為測(cè)試數(shù)據(jù);需要注意的是,訓(xùn)練數(shù)據(jù)在真正訓(xùn)練的時(shí)候,需要使用shuffle來打散,可以增強(qiáng)模型的魯棒性。

代碼示例:

train_dataset = tf.data.Dataset.from_tensor_slices((train_data, train_labels))
test_dataset = tf.data.Dataset.from_tensor_slices((train_data, train_labels))
# 使用shuffle方法對(duì)數(shù)據(jù)集進(jìn)行隨機(jī)化處理
# 參數(shù) buffer_size 指定了用于進(jìn)行隨機(jī)化處理的元素?cái)?shù)量,通常設(shè)置為大于數(shù)據(jù)集大小的值以確保充分隨機(jī)化、batch() 則指定了每個(gè)批次的數(shù)據(jù)量。
train_dataset = train_dataset.shuffle(buffer_size=datasets.train_len).batch(config.BATCH_SIZE)
test_dataset = test_dataset.shuffle(buffer_size=datasets.test_len).batch(config.BATCH_SIZE)
 
# 獲取模型輸入、輸出緯度大小
acc_input_size = datasets.acc_columns - 1
acc_out_size = datasets.acc_output
 
# 構(gòu)建模型
model = build_parts_model(acc_input_size, acc_out_size)
optimizer = tf.keras.optimizers.legacy.RMSprop(learning_rate=config.LEARN_RATIO)
model.compile(optimizer=optimizer, loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=[tf.keras.metrics.SparseTopKCategoricalAccuracy(k=5, name="top5_acc_accuracy")])
model.fit(train_dataset, epochs=config.TRAIN_EPOCH)

3.4.4 保存模型

通過13輪epoch的訓(xùn)練后,獲得TensorFlow模型:

# 保存模型
model.save(f'output/{config.MODEL_NAME}.h5')

3.4.5 模型轉(zhuǎn)換

通過上面的步驟,可以得到在一個(gè)后綴名為.h5文件的模型文件,但我們需要將模型部署在APP端側(cè)運(yùn)行,端側(cè)運(yùn)行環(huán)境是依賴TensorFlow-Lite工具庫,因此需要將.h5文件的模型轉(zhuǎn)換為.tflite文件模型。

1.TensorFlow-Lite工具庫

TensorFlow Lite學(xué)習(xí)指南中的官方介紹表明:“TensorFlow Lite 是一組工具,可幫助開發(fā)者在移動(dòng)設(shè)備、嵌入式設(shè)備和 loT 設(shè)備上運(yùn)行模型,以便實(shí)現(xiàn)設(shè)備端機(jī)器學(xué)習(xí)”。簡而言之,端側(cè)設(shè)備引入TensorFlow Lite工具庫后,就可以加載機(jī)器學(xué)習(xí)模型,并且執(zhí)行前向計(jì)算推理能力。若不使用該工具庫,需要團(tuán)隊(duì)自行研發(fā)可以運(yùn)行在端側(cè)的機(jī)器學(xué)習(xí)模型的執(zhí)行環(huán)境,如:裁剪python,保留其核心能力,像字節(jié)的pitaya框架。因此,引入該工具庫,對(duì)我們團(tuán)隊(duì)來說就可以減少在端側(cè)構(gòu)建執(zhí)行環(huán)境的巨大開發(fā)工作量。

2.算子兼容

使用TensorFlow-Lite工具庫的時(shí)候,需要考慮算子兼容性問題。TensorFlow Lite內(nèi)置算子 TensorFlow 核心庫的算子的一部分,可以見下面圖的包含關(guān)系:

圖片

圖8:TensorFlow算子兼容

(圖片來源:TensorFlow官網(wǎng))

因此,在使用TensorFlow深度學(xué)習(xí)語言設(shè)計(jì)算法模型時(shí),要考慮到算子的兼容性,避免出現(xiàn)在本地可以工作的模型,在端側(cè)因?yàn)樗阕硬患嫒荻鴮?dǎo)致部署失敗。

3.模型轉(zhuǎn)換

(1)非TensorFlow深度學(xué)習(xí)語言模型轉(zhuǎn)換

使用其他深度學(xué)習(xí)框架訓(xùn)練的話,可以參考使用如下兩個(gè)方式轉(zhuǎn)換為.tflite文件模型,以Pytorch深度學(xué)習(xí)框架語言為例

根據(jù)Pytorch的代碼,使用TensorFlow重寫,得到TFLite文件

使用工具ONNX轉(zhuǎn)換

若使用ONNX工具,則轉(zhuǎn)換的鏈路是這樣的:PyTorch -> ONNX -> TensorFlow -> TFLite

(2)TensorFlow深度學(xué)習(xí)語言模型轉(zhuǎn)換

使用TensorFlow深度學(xué)習(xí)語言訓(xùn)練的話,可以直接使用下述代碼,轉(zhuǎn)換為Android端側(cè)可以加載的模型文件.tflite

圖片

圖9:TensorFlow模型轉(zhuǎn)換

(圖片來源:TensorFlow官網(wǎng))

模型轉(zhuǎn)換代碼示例如下:

1、Keras Model
訓(xùn)練過程中,直接將model轉(zhuǎn)成tflite
converter = tf.lite.TFLiteConverter.from_keras_model(model)
# 轉(zhuǎn)換模型
tflite_float_model = converter.convert()
# 保存模型
with open('mnist_lenet5.tflite', 'wb') as f:
  f.write( tflite_float_model)
 
2、SavedModel
model.save('mnist_lenet5_save_model', save_format='tf')
# 轉(zhuǎn)換模型
converter = tf.lite.TFLiteConverter.from_saved_model('mnist_lenet5_save_model') tflite_model = converter.convert()
 
# 保存模型
with open('mnist_lenet5_saved_model_dir.tflite', 'wb') as f:
  f.write(tflite_model)

3.5 計(jì)算推理

Google提供了TensorFlow Lite庫,可以加載TFLite文件,并在端側(cè)利用本地計(jì)算資源完成推理,注意這里只是有推理能力,而不提供訓(xùn)練。如下所示:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:2.14.0'
}

通過添加模塊依賴項(xiàng)將TensorFlow Lite庫引入到APP應(yīng)用中。

3.5.1 加載模型

假設(shè)現(xiàn)在模型文件是放在assets文件目錄下,那么首先先加載模型,構(gòu)建Interpreter對(duì)象,如下代碼:

private Interpreter mTfLite = new Interpreter(loadModelFileFromAssets("文件名"))

3.5.2 模型運(yùn)行推理

加載好模型文件后,就可以直接調(diào)用推理API了,推理API提供了兩個(gè),分別是:

// 通過API的名稱其實(shí)就能夠看出區(qū)別了,run()是單個(gè)輸入調(diào)用,runForMultipleInputsOutputs是多個(gè)輸入調(diào)用,
// run方法實(shí)際執(zhí)行時(shí)也是調(diào)用runForMultipleInputsOutputs
// 實(shí)際上mTfLite .run()底層
mTfLite .run()
mTfLite .runForMultipleInputsOutputs()

因此,只需要準(zhǔn)備好輸入和輸出數(shù)組即可直接調(diào)用,如下代碼所示:

// 輸入數(shù)組
float[][] inputDataArray = new float[][]{inputDataArrayLen};
// 輸出數(shù)組
float[][] outputDataArray = new float[1][outputDataLen];
// 運(yùn)行推理
mTfLite .run( inputDataArray ,  outputDataArray);

四、方案落地

4.1 模型配置

在設(shè)計(jì)算法模型之初,需要考慮輸入和輸出緯度大小,盡量將輸入和輸出的緯度固定下來,這樣的話當(dāng)不斷迭代算法模型時(shí),就不會(huì)因?yàn)檩斎牒洼敵鼍暥炔灰恢聦?dǎo)致不能兼顧到之前的APP版本,進(jìn)而做到模型可動(dòng)態(tài)升級(jí)。在模型配置中心管理模型版本、下發(fā)策略,在端側(cè)下載模型時(shí)可通過模型版本號(hào)及文件MD5值校驗(yàn)?zāi)P臀募耐暾浴?/p>

4.2 運(yùn)行監(jiān)控

模型上線后,需要監(jiān)控線上執(zhí)行的效果。主要關(guān)注三個(gè)指標(biāo)

  • 模型運(yùn)行成功率:加載模型、執(zhí)行模型上報(bào)是否成功
  • 模型版本分布:模型版本升級(jí)情況,便于分析數(shù)據(jù)
  • 模型各版本的平均運(yùn)行時(shí)長:關(guān)注運(yùn)行時(shí)長,進(jìn)而指導(dǎo)模型設(shè)計(jì)時(shí)考慮模型的復(fù)雜程度

圖10:模型運(yùn)行監(jiān)控

如上圖所示,通過建立完善的線上監(jiān)控,一方面清楚了解模型運(yùn)行情況,另一方面可以提供設(shè)計(jì)算法模型的方向,進(jìn)而更好地迭代出一個(gè)模型,可以在端側(cè)設(shè)備計(jì)算資源及收益效果達(dá)到一個(gè)各方都還不錯(cuò)的平衡點(diǎn)。

五、總結(jié)

要使用端智能能力,首先要知道解決什么問題。如,本文是解決的“重排序”問題,其實(shí)本質(zhì)就是“多分類”問題。知道了具體解決的問題后,要進(jìn)一步抽象出輸入是什么、輸出是什么。此時(shí),還需要盤點(diǎn)當(dāng)前能夠獲取哪些原始數(shù)據(jù),并設(shè)計(jì)特征工程去處理好原始數(shù)據(jù),將其轉(zhuǎn)換為算法模型能夠接受的特征。再緊接著,就是要結(jié)合應(yīng)用場(chǎng)景設(shè)計(jì)好算法模型即可。

本文通過利用端智能重排序云端返回的商品信息,進(jìn)而不同人群展示不同商品信息,實(shí)現(xiàn)千人千面效果。從獲取原始數(shù)據(jù)開始,到特征工程的設(shè)計(jì),設(shè)計(jì)符合該業(yè)務(wù)場(chǎng)景的算法模型,然后進(jìn)行訓(xùn)練獲取模型,再進(jìn)行模型轉(zhuǎn)換為TFLite文件格式,通過端側(cè)加載該模型后,進(jìn)行計(jì)算推理獲取重排序后的結(jié)果。

在端智能的道路上,一方面我們繼續(xù)探索更多的落地場(chǎng)景,另一方面繼續(xù)挖掘豐富的端側(cè)數(shù)據(jù),更新迭代特征工程及算法模型,更好地為業(yè)務(wù)創(chuàng)造價(jià)值。

責(zé)任編輯:龐桂玉 來源: vivo互聯(lián)網(wǎng)技術(shù)
相關(guān)推薦

2022-03-18 08:46:08

vivo官網(wǎng)APP首頁改版

2023-02-15 22:13:19

客戶端Android

2022-07-14 10:02:00

vivoUI適配開發(fā)人員

2025-02-20 08:00:00

2023-06-29 11:06:46

vivoID服務(wù)器

2023-06-30 13:22:19

2022-12-29 08:56:30

監(jiān)控服務(wù)平臺(tái)

2024-09-28 10:38:14

數(shù)據(jù)分析數(shù)據(jù)驅(qū)動(dòng)

2023-08-03 10:19:59

AB實(shí)驗(yàn)戶不均勻

2022-02-18 11:13:53

監(jiān)控架構(gòu)系統(tǒng)

2017-05-02 09:34:49

QQ空間

2012-05-31 15:04:28

網(wǎng)易企業(yè)郵箱

2023-06-28 14:01:13

攜程實(shí)踐

2023-03-01 18:12:16

平臺(tái)架構(gòu)設(shè)計(jì)

2023-02-07 09:43:48

監(jiān)控系統(tǒng)

2022-02-10 08:16:52

算法業(yè)務(wù)ODPS

2017-09-13 12:18:29

2024-01-10 21:35:29

vivo微服務(wù)架構(gòu)

2023-11-01 07:01:45

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)