模型hitrate評(píng)估
該組件使用hit_rate_pai.py腳本,實(shí)現(xiàn)向量召回評(píng)估的功能。本文為您介紹該組件的配置方法。
使用限制
支持使用的計(jì)算引擎為MaxCompute。
組件配置
您可以使用以下任意一種方式,配置模型hitrate評(píng)估組件參數(shù)。
方式一:可視化配置參數(shù)
輸入樁
輸入樁(從左到右)
建議上游組件
對(duì)應(yīng)PAI命令參數(shù)
是否必選
item embedding table name
數(shù)據(jù)類(lèi)型:MaxCompute表
支持的組件:SQL腳本、讀數(shù)據(jù)表
參數(shù)會(huì)拼裝成tables參數(shù)
是
ground truth table name
數(shù)據(jù)類(lèi)型:MaxCompute表
支持的組件:SQL腳本、讀數(shù)據(jù)表
是
組件參數(shù)
頁(yè)簽
參數(shù)
是否必選
描述
對(duì)應(yīng)PAI命令參數(shù)
默認(rèn)值
參數(shù)設(shè)置
recall_type
否
召回類(lèi)型,類(lèi)型為String,取值如下:
u2i:user to item retrieval
i2i:item to item retrieval
recall_type
u2i:user to item retrieval
knn檢索取top_k計(jì)算hitrate
否
召回的數(shù)目,類(lèi)型為String。
top_k
200
user/item表征向量的維度emb_dim
否
Embedding表的Embedding維度 ,類(lèi)型為INT。
emb_dim
32
定義距離計(jì)算方式knn_metric
否
召回相似度度量方式,類(lèi)型為String,取值如下:
0: L2 distance
1: Inner Product similarity
knn_metric
0
是否使用精確的knn計(jì)算knn_strict
否
BOOL類(lèi)型,取值如下:
True:使用精確的knn計(jì)算,會(huì)增加計(jì)算量。
False:不使用精確的knn計(jì)算。
knn_strict
True
batch_size
否
一次計(jì)算的樣本數(shù)量,類(lèi)型為INT。
batch_size
1024
最大的興趣向量數(shù)num_interests
否
最大興趣向量數(shù),類(lèi)型為INT。
num_interests
1
指定算法版本
是
支持自定義EasyRec的執(zhí)行版本。
首先參考文檔EasyRec版本更新,生成一個(gè)EasyRec的tar包。
上傳對(duì)應(yīng)版本的tar包到OSS Bucket路徑。具體操作,請(qǐng)參見(jiàn)控制臺(tái)上傳文件。
在該參數(shù)中選中上傳的tar文件所在的OSS全路徑。
script
無(wú)
執(zhí)行調(diào)優(yōu)
ps數(shù)量
否
PS節(jié)點(diǎn)的數(shù)量。
完整的執(zhí)行調(diào)優(yōu)參數(shù)會(huì)拼裝成cluster參數(shù)
2
ps CPU數(shù)量
否
PS CPU數(shù)量,PS申請(qǐng)的CPU數(shù)量,取值為1表示一個(gè)CPU核。
10
ps Memory用量
否
PS申請(qǐng)的內(nèi)存,單位為MB,取值100表示100 MB。
40000
Worker數(shù)量
否
Worker的數(shù)量。
6
Worker CPU用量
否
Worker申請(qǐng)的CPU數(shù)量,取值1表示一個(gè)CPU核。
8
Worker Memory用量
否
Worker申請(qǐng)的內(nèi)存,單位為MB,取值100表示100 MB。
40000
Worker GPU卡數(shù)
否
在EasyRec訓(xùn)練中,一般不需要使用GPU。
0
輸出樁
輸出樁(從左到右)
數(shù)據(jù)類(lèi)型
對(duì)應(yīng)PAI命令參數(shù)
是否必選
hit_rate_details
MaxCompute表
拼裝成outputs參數(shù)
是
total_hit_rate
MaxCompute表
是
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數(shù)。您可以使用SQL腳本組件進(jìn)行PAI命令調(diào)用,詳情請(qǐng)參見(jiàn)SQL腳本。
PAI -name tensorflow1120_cpu_ext
-project algo_public
-Darn="acs:ram::xxx:role/aliyunodpspaidefaultrole"
-Dbuckets="oss://examplebucket/"
-DossHost="oss-cn-hangzhou-internal.aliyuncs.com"
-DentryFile="easy_rec/python/tools/hit_rate_pai.py"
-Dcluster="{\"ps\": {\"count\": 2, \"cpu\": 1000, \"memory\": 40000}, \"worker\": {\"count\": 6, \"cpu\": 800, \"gpu\": 0, \"memory\": 40000}}"
-Dtables="odps://pai_hangzhou/tables/pai_temp_flow_vjmgur2q5ca5lz****_node_j5c8mx2h26wqxu****_outputTable/,odps://pai_hangzhou/tables/pai_temp_flow_hfd4fk1z1ba9z5****_node_msqfceossxpy7v****_outputTable/"
-Doutputs="odps://pai_hangzhou/tables/pai_temp_flow_1y1h6j8bnl94ao****_node_74kp8xcaugwmy8****_hit_rate_details,odps://pai_hangzhou/tables/pai_temp_flow_1y1h6j8bnl94ao****_node_74kp8xcaugwmy8****_total_hit_rate"
-DuserDefinedParameters="--recall_type=u2i --top_k=200 --emb_dim=32 --knn_metric=0 --knn_strict=True --batch_size=1024 --num_interests=1"
-Dscript="oss://examplebucket/easy_rec_ext_0.6.1_res.tar.gz"
參數(shù)名稱(chēng) | 描述 | 是否必選 |
entryFile | 入口文件,執(zhí)行hit_rate_pai.py腳本。 | 是 |
tables | 輸入表,由item embedding table和ground truth table拼接而成,這兩個(gè)表拼接時(shí)以半角逗號(hào)(,)分隔。 | 是 |
outputs | 輸出表,由hit_rate_detail和total_hit_rate拼接而成,這兩個(gè)表拼接時(shí)以半角逗號(hào)(,)分隔。 | 是 |
arn | 指定授權(quán)資源,您可以登錄PAI控制臺(tái),在開(kāi)通和授權(quán)>全部云產(chǎn)品依賴頁(yè)面的Designer區(qū)域,單擊操作列下的查看授權(quán)信息,獲取arn。 | 是 |
ossHost | OSS各地域Endpoint。如何獲取Endpoint,請(qǐng)參見(jiàn)訪問(wèn)域名和數(shù)據(jù)中心。 | 是 |
buckets | 模型文件所在的Bucket路徑或保存模型的Bucket目錄,如果有多個(gè)Bucket,使用半角逗號(hào)(,)分隔,例如 | 是 |
userDefinedParameters | 額外參數(shù),PAIFlow上沒(méi)有定義的參數(shù),指定recall_type、top_k、emb_dim、knn_metric、knn_strict等參數(shù)。 | 否 |
script | 參考文檔EasyRec版本更新生成EasyRec的tar包,并上傳到OSS,指定tar包的OSS全路徑。 | 否 |
使用示例
通過(guò)MaxCompute客戶端,使用以下命令分別為item embedding和ground truth創(chuàng)建數(shù)據(jù)表,關(guān)于MaxCompute客戶端的使用方法,請(qǐng)參見(jiàn)使用本地客戶端(odpscmd)連接。
CREATE TABLE IF NOT EXISTS dssm_recall_item_embedding_tmp_for_eval_v1 ( item_id bigint ,item_emb string COMMENT '物料Embedding' ); CREATE TABLE IF NOT EXISTS dssm_recall_vector_recall_sample_eval_sequence_v1 ( requestid string ,item_ids string ,user_emb string COMMENT '用戶Embedding' ,emb_num bigint );
將下載的訓(xùn)練數(shù)據(jù)(item_embedding.csv)和測(cè)試數(shù)據(jù)(ground.csv)分別上傳到已創(chuàng)建的MaxCompute表中。關(guān)于如何使用MaxCompute客戶端上傳數(shù)據(jù),請(qǐng)參見(jiàn)Tunnel命令,您可以在.csv文件所在的目錄中執(zhí)行tunnel命令,或者指定文件的完整絕對(duì)路徑來(lái)進(jìn)行配置。
tunnel upload item_embedding.csv dssm_recall_item_embedding_tmp_for_eval_v1 -fd \t; tunnel upload ground.csv dssm_recall_vector_recall_sample_eval_sequence_v1 -fd \t;
創(chuàng)建如下工作流。
區(qū)域
描述
①
配置讀數(shù)據(jù)表-3的表名參數(shù)為已創(chuàng)建的dssm_recall_item_embedding_tmp_for_eval_v1表。
②
配置讀數(shù)據(jù)表-4的表名參數(shù)為已創(chuàng)建的dssm_recall_vector_recall_sample_eval_sequence_v1表。
③
配置模型hitrate評(píng)估組件,將左側(cè)輸入樁接入讀數(shù)據(jù)表-3組件下游,將右側(cè)輸入樁接入讀數(shù)據(jù)表-4組件下游,將參數(shù)指定算法版本配置為EasyRec的tar包所在的OSS全路徑,如何準(zhǔn)備tar包,請(qǐng)參見(jiàn)方式一:可視化配置參數(shù)。本示例使用推薦算法定制-DSSM向量召回案例節(jié)點(diǎn)18_rec_sln_demo_dssm_recall_total_hit_rate_v1_2配置的tar文件。
單擊運(yùn)行按鈕,運(yùn)行工作流。
工作流運(yùn)行結(jié)束后,右鍵單擊畫(huà)布中的模型hitrate評(píng)估組件,在快捷菜單,單擊查看數(shù)據(jù)。支持查看以下兩種數(shù)據(jù)結(jié)果。
hit_rate_detail
total_hit_rate
相關(guān)文檔
關(guān)于該組件更完整的使用流程,請(qǐng)參考推薦算法定制-DSSM向量召回案例的節(jié)點(diǎn)18_rec_sln_demo_dssm_recall_total_hit_rate_v1_2,該節(jié)點(diǎn)使用了模型hitrate評(píng)估組件。