|

優化OpenVINO模型效能:參數設定影響實測

   
作者:李盛安

兩年前剛接觸OpenVINO的時候,開始感覺機器學習發展的生態似乎有許多的轉變,隨著執行許多範例的過程中,漸漸了解Open Model Zoo的Github支援了許多可以下載的模型,有種感覺是不是模型載入與使用,會變成隨插即用的狀態。

以前要自己看許多論文,花時間蒐集各種模型的執行方法,今年實驗的模型,過一陣子想再執行時常會忘記如何使用,就算記得但碰到模型本身運作環境升級,或者平台不再支援某個方法,辛苦弄完的模型跟寫好的程式又要重新再來一次,這樣的感覺在接觸OpenVINO之前,會覺的似乎是做機器學習的無奈與必然。

接觸OpenVINO後,讓人感覺是一個有趣的環境,過去在教學現場很難與學生介紹機器學習要怎麼學跟用,雖然有雲端的架構可以直接運作準備好的教學環境,實際現場要使用時,還是會碰到不知道如何安裝跟配置的問題。

雖然一般的安裝文件嘗試盡可能寫清楚了,但其實許多作業系統環境差異,或開發套件相容性的狀態,常會造成這個月可以執行的模型跟架構,過幾個月又開始不太支援,還好這兩年容器環境相對更成熟,系統安裝的生態也開始發生轉變,透過容器化技術許多套件安裝的流程跟問題,也隨著容器化技術得到緩解。

本文嘗試從兩個觀點出發,第一個是如何能夠較為方便快速使用OpenVINO,主要的目的是介紹容器化的方式使用OpenVINO,相對過去需要閱讀大量安裝文件,目前已經有較為成熟穩定的容器化環境可以直接安裝與啟動OpenVINO。

第二個是了解如何利用OpenVINO跟Open Model Zoo所提供訓練好的模型,在運作OpenVINO的過程,透過不同參數設定值,觀察系統預測效率的改變,對於機器學習運作環境,除了程式設計技巧與架構整合外,累積模型運作與不同參數設定狀態下需要具備的觀念。

相對於作業系統調校的觀念,在OpenVINO運作時可以觀察系統在模型運作時預測效能的變化,這個部份可做為後續使用模型時經驗的提昇,在機器運作時累積更好的模型使用經驗,觀察同一台機器運作OpenVINO時,可以思考與注意的部份。

透過容器化技術快速部署OpenVINO運作環境

透過容器啟動OpenVINO,可以快速方便的達成OpenVINO上線狀態,相對省下非常多套件安裝過程的時間,過去常認為要執行機器學習推論的環境會很複雜,或者需要許多步驟的執行過程。透過Docker容器的架構來執行OpenVINO,可以將過去系統在作業系統不同版本間運作環境產生問題的數量降低,大量減少系統除錯、相容性測試與環境安裝配置的問題與步驟。

本文使用的運作環境是Ubutnu 20.04.2 LTS,OpenVINO的docker容器是openvino/ubuntu20_data_dev:2021.4_tgl,使用docker在Linux運作OpenVINO最大的好處是幾乎沒有相容性的問題,下載之後就可以直接執行,對於要直接使用或學習OpenVINO,相對過去容易非常非常多,透過下面的指令就可以執行OpenVINO的容器環境。

如果機器上面沒有docker的環境,要先安裝docker容器環境,在Linux上面執行以下指令,前面的指令會先把原來的docker環境移除,如果你已經安裝過docker環境,可以跳過這個步驟,直接執行下載OpenVINO docker的pull指令:

sudo apt update

sudo apt-get remove docker docker-engine docker.io containerd runc

sudo apt install curl

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh

sudo usermod -aG docker $USER

## Need to logout or reboot to run docker as non-root user

docker run hello-world

上面安裝好docker的容器環境以後,可以用底下的指令直接下載OpenVINO的docker環境。

docker pull openvino/ubuntu20_data_dev:2021.4_tgl

要執行docker環境的時候,如果是使用ubuntu桌面版內建的vnc環境,可以使用底下的指令來啟動OpenVINO docker環境,這樣之後在docker環境內如果需要使用到視窗環境,會比較方便做後續的測試。

要進入docker環境下命令測試OpenVINO時,可以使用底下的指令,就可以順利的在ubuntu桌面環境下同時使用多個OpenVINO docker環境終端做測試。

docker exec -it openvino-ubuntu20_tgl /bin/bash

參數設定在模型運作時效能的變化

OpenVINO效能量測工具名稱為benchmark_app,可以在機器上量測模型的執行效能,OpenVINO 2021.4的benchmark_app提供許多參數設定,另一個思考方向是自己寫程式載入模型時,實際的效能是如何,或者日後如何能在自己寫的程式達到測試環境相同的效能,如常用的ssd模型在執行object model zoo的範例時,運作過程中可以設定許多參數,例如nireq、nthreads、nstreams等,device參數可以設定運作的硬體環境CPU、GPU、同時使用CPU與GPU的MULTI: CPU,GPU等,令人好奇這些參數之間實際運作的情況,在運作過程中要如何設定,或者朝哪個方向去思考調整會有相對較好的執行結果。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

李盛安

Author: 李盛安

現任開南大學健康產業管理學系副教授,國立台灣大學資訊工程研究所博士。 專長:醫療資訊系統、生物資訊、雲端運算、大數據、人工智慧、分散式系統、行動裝置程式設計、軟體工程、行動資訊系統、數位圖像處理

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *