騰訊PocketFlow模型壓縮與加速實現

2021-09-13 13:17:06 字數 2961 閱讀 9972

ubuntu16.04

python3.6

tensorflow1.12

官網教程:

官網提供了三種pocketflow部署方法,分別為:本地、docker、seven,這裡我使用的是local開發方法。安裝步驟:

$ git clone
進入pocketflow主目錄,拷貝path.conf.template並重命名為path.conf,修改裡面的資料集路徑,這裡我用的是cifar10來做分類。

-n=8 表示gpu的數量,根據自己的配置進行調整,生成的模型在models資料夾了,最後看到loss和acc效果分別如下:

info:tensorflow:loss = 4.4453e-01

info:tensorflow:accuracy = 9.2500e-01

使用的是discrimination-aware channel pruning(dcp)演算法。

# local mode with 1 gpu

$ ./scripts/run_local.sh nets/resnet_at_cifar10_run.py \

--learner dis-chn-pruned

# docker mode with 8 gpus

$ ./scripts/run_docker.sh nets/resnet_at_cifar10_run.py -n=8 \

--learner dis-chn-pruned

# seven mode with 8 gpus

$ ./scripts/run_seven.sh nets/resnet_at_cifar10_run.py -n=8 \

--learner dis-chn-pruned

生成的dcp演算法壓縮模型在models_dcp目錄下,預設的dcp_prune_ratio剪枝率為0.5

$ ./scripts/run_local.sh nets/resnet_at_cifar10_run.py \

--learner dis-chn-pruned \

--enbl_dst \

--dcp_prune_ratio 0.75

剪去了3/4,即卷積層網路規模變為原來的1/4。剪枝後的模型生成在models_dcp_eval目錄下,我們看到loss: 9.63+,acc: 0.846,對比沒剪枝之前,發現變換還是挺大的,loss變大很多,acc下降了約8個百分點,畢竟減去了3/4的網路,效果如下:

官網還有很多配置選項,建議去看官方的配置選項詳解。

轉換 checkpoint 檔案為  *.tflite 檔案,來部署到移動端裝置:

# convert checkpoint files into a *.tflite model

$ python tools/conversion/export_pb_tflite_models.py \

--model_dir models_dcp_eval

報了乙個錯誤:

是net_input的輸入資料型別出問題了,把 int32改為np.float32型別就可以了。

修改tools/conversion/export_pb_tflite_models.py 289行

interpreter.set_tensor(input_details[0]['index'], net_input_data)

# 改為:

interpreter.set_tensor(input_details[0]['index'], net_input_data.astype(np.float32))

可以看到在pocketflow/models_dcp_eval/目錄下生成 model.pb  model.tflite兩個檔案,檔案都很小,用於部署移動端裝置最合適了。

todo

全鏈路壓測流量模型

現在全鏈路越來越火,各大廠商也紛紛推出了自己的全鏈路壓測測試方案。特別是針對全鏈路壓測流量模型,各家方案都有所不同。最近我看了一些這方面的資料,有一些感悟。分享給大家。全鏈路壓測流量模型的梳理呢,這裡就先不講了,各家公司自有司情在。因為主要是全鏈路壓測模型的實現,其實實現也對應了流量模型的梳理結果。...

計蒜客 騰訊狼人殺 簡單 狀壓 列舉

很久很久以前,在萊茵河畔一座岸壁陡峭的山頂上,有乙個名叫 杜斯特瓦德 的小村莊。不久前,這個小村莊每晚都會受到狼人的侵襲。每個夜晚,狼人都會在村中進行搶劫,並且會有乙個村民成為這群狼人的犧牲品。然而村民們不會坐以待斃,他們試圖在白天找到這些狼人並處決他們。作為杜斯特瓦德村的長老,你需要組織村民來對抗...

棋盤式狀壓DP模型總結

狀壓dp分兩大類,一類是集合式,另一類就是棋盤式 即基於連通性 其中,集合式狀壓dp難度相較後者略大,形式複雜多變。而棋盤式狀壓dp的題目樣式都相差不多,解法也都殊途同歸,因此將這一類題進行總結,不難歸結出一套解題模板。我們先看以下三個例題。題目鏈結 狀態表示 f i,j,s 表示已經在前i行放了j...