OpenVINO強大之處在于整合了當前AI經常應用的情境,像是圖片或是影像的對象辨識、語音識別、自然語言與數據推薦系統等等,而透過這個套件的Open Model Zoo可以導入現有多個常用框架的模型,像是Caffe、TensorFlow、MXNet、Kaldi與ONNX,無疑是個現成的參考數據庫。
OpenVINO支持現有多個常用框架的模型(Source:Intel)
Intel OpenVINO 工具套件包含的項目實在太多,要做到基礎入門我想非常快。但如果要真的上手到導入既有的商業項目中,我想還是需要花不少時間。學習Intel OpenVINO 工具集我想是非常值得去投資的,后續對于導入AI應用到升級與維護項目,會非常的容易。
以下的介紹將會以短篇的模式進行,我使用以下的環境去進行學習與測試:
1.硬件:
?Rock X Intel(R) Atom(TM) x5-Z8350 1.4GHz CPU. 4Gb RAM 與 128Gb 的SD卡環境
?EFI單板計算機,使用i7-1185G7E 2.8GHz 11代的Intel CPU, 16Gb RAM 與 128Gb SSD.
?2019年Mac book Pro 15吋 i7 2.6GHz CPU, 使用Parallels 設定兩個ubuntu VM. 分別設定 2Cores與4 Cores的環境
2. O/S:分別使用ubuntu server20.04 與 ubuntu desktop 20.04 兩個版本進行測試。
3. OpenVINO工具包版本: 2021.4
個人接觸與學習使用OpenVINO,目地都在于如何將這個工具應用在未來公司的項目上,而選用Ubuntu Linux的操作系統,一方面是考慮Open Source 降低入門需要的投資成本,再者也是因為公司內部整體的建置維護環境。如果有需要以Windows操作系統為建置環境,可以再多參考官方的文件。
我自己個人打算在OpenVINO完成三大目標:
1.應用DL Workbench可以選用現有或是自制的模型,透過GUI接口,輕松完成模型的分析與部署工作。
2.使用Nodejs的語言去使用OpenVINO提供的各種資源進行開發。
3.將V7RC上的道路辨識功能,透過OpenVINO的環境,使用Nodejs語言去重現功能。
首部曲– 從DL Workbench開始談起
在2018年我開始接觸AI,是基于想在公司的產品V7RC中導入AI的元素,當時我希望可以透過遙控車上面的鏡頭傳回到手機上,透過手機上的運算資源進行演算,辨識影像中的物體。最早透過同事的協助找到Framework,使用Python進行模型訓練,最后產生出的結果去實際應用,效果很差,而且還不知道如何整合到iOS與Android的APP。
后來Google Cloud的AutoML 提供了一個模型訓練很好的環境,訓練好的模型可以直接使用Tensorflow Lite SDK整合到iOS與Android的APP中。這上面有個非常重要的關鍵在于一個好的GUI,讓使用者很容易地上手,去進行模型訓練,最后導出到自己的應用上。
后來像是Teachable Machine 也提供很好的GUI給使用者,對于入門的使用者來說,也的確夠用,但截至目前,我們的工程師還無法將訓練成果部署到APP上。
DL Workbench最棒的地方在于可以從多種不同常用的Framework選擇自己要匯入的模型,或是匯入自己的模型,進行訓練,并且可以選擇使用哪個裝置進行訓練與分析。Dataset的管理也非常容易,很容易讓人著迷,愿意多花點時間去嘗試那些已經訓練好的模型進行比較。
/如果要了解如何安裝,可以參考之前的文章。/
而我想分享的是在實際安裝過程中遇到的問題排解與疑問,以下使用自問自答方式來進行:
1.DL Workbench是個Application,所以需要Desktop執行嗎?
答案是不需要。DL Workbench是一個Web Server,安裝好了之后可以透過其他的計算機以訪問網站的方式來操作,就跟AutoML或是Teachable Machine一樣。多人操作應該也沒有問題。我喜歡裝在Ubuntu Server上,減少像是Desktop版本還要跑個X Window浪費效能。
2.安裝DL Workbench需不需要在機器上面安裝OpenVINO套件?
答案是不需要。原本我的理解是一個步驟一個步驟去安裝OpenVINO所有的工具套件,Workbench放在最后面,當然就要先裝好套件后才可以安裝Workbench。但其實Workbench使用Docker Container安裝,是不需要先下載與安裝工具包。為了方便各位進行測試,我也提供我的安裝方式作為參考:
Step 1. Docker執行環境安裝:
確認與安裝docker環境:如果不確定Docker的版本,可以重新參考官方文件,
https://docs.docker.com/engine/install/ubuntu/
以下是我安裝流程:
A.移除舊版的docker套件:
~$ sudo apt-get remove docker docker-enginedocker.io containerd runc
B.安裝docker需要使用到的套件:
~$ sudoapt-get update
~$ sudoapt-get install
apt-transport-https
ca-certificates
curl
gnupg
lsb-release
C.設定apt安裝所需要的套件庫與環境(以x86環境為例):
~$ echo
"deb [arch=amd64signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee/etc/apt/sources.list.d/docker.list > /dev/nul
D.實際進行安裝:
~$ sudoapt-get update
~$ sudoapt-get install docker-ce docker-ce-cli containerd.io
E.安裝后,需要將ubuntu的用戶加入docker的群組:
~$ sudo usermod -aG docker ${USER}
F.重新注銷用戶,再次登入,才會將新加入的docker群組生效。或是重新啟動也可以。
Step 2. 安裝GPU Driver:
建議可以再次安裝Intel GPU的Driver,使用DFI 的單板計算機曾經遇到過無法正確安裝GPU Driver,導致Workbench無法使用GPU,僅能使用CPU進行訓練。安裝方次可以參考以下的網址:
https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_linux.html#additional-GPU-steps
https://dgpu-docs.intel.com/installation-guides/ubuntu/ubuntu-focal.html
參考安裝流程如下:
A.安裝必要的套件,并增加apt套件庫的信息:
~$ sudoapt-get install -y gpg-agent wget
~$ wget-qO - https://repositories.intel.com/graphics/intel-graphics.key | sudo apt-keyadd -
~$ sudoapt-add-repository
'deb[arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main'
B.安裝:
~$ sudoapt-get update
~$ sudoapt-get install
intel-opencl-icd
intel-level-zero-gpu level-zero
intel-media-va-driver-non-freelibmfx1
C.選擇性安裝開發工具包,如果要執行某些API,還是需要安裝才會正常運作:
~$ sudoapt-get install
libigc-dev
intel-igc-cm
libigdfcl-dev
libigfxcmrt-dev
level-zero-dev
D. 設定權限:
可以先檢查用戶是否在render的群組,使用以下命令來檢查,列出目前這個用戶所擁有的群組:
~$ groups ${USER}
如果這個用戶有沒有加入render與video的群組,使用以下方法加入:
~$ sudogpasswd -a ${USER} render
~$ sudogpasswd -a ${USER} video
~$newgrp render
~$newgrp video
Step 3. 安裝DL Workbench DockerContainer:
有實際用過Docker Container的朋友應該知道,如果沒有設定將數據儲存在外部空間,只要每次重新開啟Container,所有數據將會清空,還原成一開始的“干凈”狀態。因此除了安裝之外,還要確保相關設定與項目都有儲存到Server的儲存裝置上,而不是在Container里面。
參考官網的文件進行安裝:
https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Persist_Database.html
A. 使用pip安裝openvino-workbench套件,這不是下載與安裝WorkbenchContainer,可以當作是方便啟動的script,簡化后面的流程:
~$ python3 -m pip install -Uopenvino-workbench
B.建立一個可以放設定與項目的目錄,例如放在自己目錄下的openvino-workbench目錄:
~$ mkdir -m 777 ~/openvino-workbench
C.執行以下命令啟動Workbench:
~$ openvino-workbench --imageopenvino/workbench:2021.4 --assets-directory ~/openvino-workbench --enable-gpu--container-name openvino-workbench
這個命令,我們將Container名稱命名為 openvino-workbench,并且指定~/openvino-workbench作為項目與設定儲存的目錄,另外也啟動GPU。如果發生錯誤,像是找不到/dev/rencer/*的目錄等等,就是系統沒有正確的設定GPU,可以嘗試先吧–enable-gpu拿掉試試看。
完成后,就可以在本機打開Browser連結上這個網站,例如Workbench主機的IP是10.211.55.17,那么就在Browser上面鍵入:http:// 10.211.55.17:5665
3. DL Workbench最吸引我的地方在哪?
看到DL Workbench的接口上,Environment的右邊有個Add Remote Target按鈕。沒錯,可以將多臺機器的資源統一在這個見面上管理,這樣可以將項目切換到不同機器上進行訓練與分析。
經過一番努力,測試成功了,真的可以將項目指派到其他機器上面去進行訓練,但可惜的是只能在本機進行驗證與測試,我想未來的版本應該會解決這個問題。
以下提供安裝方式,以及參考網址。
https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Setup_Remote_Target.html
Step 1. 在遠程主機進行設定,下載并且安裝必要套件:
A.安裝套件:
~$ sudoapt-get update
~$ sudoapt-get install -y --no-install-recommends
openssh-server
ssh
python3
ython3-distutils
python3-apt
python3-dev
python3-pip
gcc
libgtk-3-0
ffmpeg
~$python3 -m pip install --upgrade pip
B. 更新python3-virtualenvwrapper套件。就個人的經驗上我分別在Atom與VM的環境上嘗試安裝時,會遇到個套件出現問題,導致最后的安裝無法完成,避免麻煩在一開始就先完成更新套件。以下是更新方式:
~$ sudo apt removepython3-virtualenvwrapper
~$ sudo apt autoremove
~$ sudo apt purge python3-virtualenv
~$ /usr/bin/python3 -m pip install--force-reinstall virtualenvwrapper
Step 2. 設定ssh遠程登錄,并取得privatekey
回到安裝DL Workbench的機器上,我們需要可以使用ssh直接登入到遠程主機的相關權限。設定的過程中我們將會設定一個private key, 這個檔案將要使用在Workbench的設定上。以下是相關執行步驟(如果對于ssh非常熟悉的朋友,可以簡化這個流程,直接取得ssh登入的private key):
A. 使用ssh-keygen 產生ssh的Key:
~$ ssh-keygen
B.將剛剛產生的public key 復制到遠程的主機,可以使用ssh-copy-id命令,使用方法是:
~$ ssh-copy-id louis@192.168.1.100
# 請將louis改成遠程可以登入賬號,192.68.1.100改成遠程的主機
過程中會需要填寫登入的密碼,請正確的進行填寫。
C.驗證是否正確,使用ssh登入遠程主機,將不再需要填寫密碼,可以直接登入。
~$ ssh louis@192.168.1.100
如果可以正常登入,就表示完成這個步驟
Step 3. 確認遠程主機的用戶擁有根權限(SudoPrivileges),不需要輸入密碼就可以執行sudo的命令。
A.首先簡單的確認是否有sudo的權限以及是否不需要輸入密碼就可以執行sudo,執行以下指令:
~$ sudo ls -la /
B.如果可以順利列出根目錄下所有的檔案與目錄,表示這個用戶已經擁有根權限,并且不需要密碼就可以執行。如果顯示沒有sudo權限,則表示這個用戶沒有sudo使用權,請使用以下命令,將這個用戶加入到sudo群組中:
~$ su
~$ usermod -a -G sudo USERNAME
~$ exit
C. 加入后,請注銷再重新登入,并且再次使用sudols -la / 確認目前用戶使用已經擁有sudo權限。
D. 如果用戶已經擁有sudo權限,但需要填寫密碼,則使用visudo,將這個用戶加入到/etc/sudoers.tmp檔案中:
~$ sudo visudo
此時會開啟編輯畫面,并且顯示檔案內容,接著將光標移到檔案的最后,加入以下權限:
louis ALL=(ALL) NOPASSWD: ALL #請將louis改成這個賬戶的名稱
接著存擋離開,再重新測試這個用戶的sudo命令:
~$ sudo ls -la /
此時應該不需要密碼就可以執行了。
*特別注意:使用 visudo 編輯并存擋,務必確認正確填寫,否則有可能導致系統嚴重的問題發生。
Step 4:
進入 DL Workbench 設定目前準備進入到DL Workbench設定的步驟,在此之前,必須要先下載id_rsa的私鑰到本機來,方便等一下再接口上需要上傳這個檔案。再次使用ssh登入到安裝Workbench的主機上,可以使用vi或是其他編輯器,打開私鑰檔案,使用以下命令開啟:
~$ vi ~/.ssh/id_rsa
將會看到以上的編輯畫面,可以使用圈選復制,然后在本機新增加一個文本文件,然后貼上剛剛復制的內容,儲存成一個文本文件,例如:id_rsa_192.168.0.1.key。
接著,在本機打開Browser,進入Workbench的網站,然后按下Create的按鈕,產生一個新的項目:
在Create Project畫面上,可以看到Environment的功能,有個Add Remote Target的按鈕,按下后開始新增新的遠程主機:
這時可以看到Target Machine的列表,第一個顯示的就是Workbench內建預設的環境。按下『Add』按鈕后,進行新增機器的畫面:
在Add Remote Target窗體中,請填入以下信息:
?Hostname (遠程主機IP)
?Port (遠程主機ssh port, 除非有手動變更,預設都是22)
?Target Name(自己為這個遠程命名)
?User (登入遠程主機用的賬號)
?Ssh key (就是一開始我們先存下來的私鑰文本文件)
以上正確填寫后,下方的Save Target將會從灰色變成深紅色,按下后,就開始啟動安裝與設定程序了。
安裝進行中的畫面:
安裝中,每個階段都可以實時顯示狀態以及正在設定中的項目:
安裝完成后,在Target Machines的列表中會清楚出現該設備,如果安裝出現問題,也會出現錯誤信息。
安裝中如果出現錯誤,也會出現在下方的信息中:
回到Create Project畫面后,下方的Environment,就可以選擇遠程的主機來進行演算了。
實際簡單的測試一下,可以看到遠程主機上跑出來的結果,項目列表上可以看到第二列,使用我們剛剛新增的遠程主機資源進行演算的結果:
4.目前有沒有什么可以進一步厘清的地方?
截至目前無法正確的設定遠程主機使用GPU或是VPU的資源,算是一種遺憾。我想后續應該是有機會可以解決,后續再做更新。
小結
如果各位希望打造一群工作的主機,可以進行選擇模型、設定數據集、建立基準到分析與部署,Workbench正好提供了分布式Environment的安裝方式,設定起來不難。后續在商業上思考可以如何客戶運用OpenVINO打造一個私有的AI運算環境應該不是問題。
-
AI
+關注
關注
87文章
31036瀏覽量
269386 -
數據庫
+關注
關注
7文章
3817瀏覽量
64498 -
自然語言
+關注
關注
1文章
288瀏覽量
13359
原文標題:用DL Workbench輕松完成AI模型的分析與部署工作
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論