簡介 網路上目前可以找到關於 OpenVINO 的介紹與解說文章越來越多,基於自己的需求想要進一步了解,老實說還真的不知如何下手。這次應 MakerPRO 的邀請,在短短的時間中要了解如何去深入了解 OpenVINO,並且寫出有內容的東西,還真的是一個很大的挑戰,截至著手準備這邊文章的時候,還在思考未來如何深入應用 OpenVINO,此時當作老王賣瓜,提供點自己這幾週的經驗給大家參考。 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 server 20.04 與 ubuntu desktop 20.04 兩個版本進行測試。 3. OpenVINO 工具包版本: 2021.4 (截至目前最新的版本) 個人接觸與學習使用 OpenVINO,目地都在於如何將這個工具應用在未來公司的專案上,而選用 Ubuntu Linux 的作業系統,一方面是考量 Open Source 降低入門需要的投資成本,再者也是因為公司內部整體的建置維護環境。如果有需要以 Windows 作業系統為建置環境,可以再多參考官方的文件。 我自己個人打算在 OpenVINO 完成三大目標: 應用 DL Workbench 可以選用現有或是自製的模型,透過 GUI 介面,輕鬆完成模型的分析與部署工作。 使用 Nodejs 的語言去使用 OpenVINO 提供的各種資源進行開發。 將 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 的管理也非常容易,很容易讓人著迷,願意多花點時間去嘗試那些已經訓練好的模型進行比較。 如果要了解如何安裝,可以參考許哲豪(Jack)的這篇文章〈不用寫程式也能玩轉深度學習模型 ─ OpenVINO™ DL Workbench圖形化介面工具簡介〉。 而我想分享的是在實際安裝過程中遇到的問題排解與疑問,以下使用自問自答方式來進行: 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 的版本,可以重新參考官方文件,以下是我安裝流程: A. 移除舊版的 docker 套件: ~$ sudo apt-get remove docker docker-engine docker.io containerd runc B. 安裝docker需要使用到的套件: ~$ sudo apt-get update ~$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release C. 設定 apt 安裝所需要的套件庫與環境 (以 x86 環境為例): ~$ echo \ "deb [arch=amd64 signed-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. 實際進行安裝: ~$ sudo apt-get update ~$ sudo apt-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 進行訓練。 安裝方次可以參考以下的網址: Install and Configure Intel® Distribution of OpenVINO™ Toolkit for Linux ubuntu-focal.html 我也提供安裝流程作為參考: A. 安裝必要的套件,並增加 apt 套件庫的資訊: ~$ sudo apt-get install -y gpg-agent wget
~$ wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | sudo apt-key add -
~$ sudo apt-add-repository \ 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main' B. 安裝: ~$ sudo apt-get update ~$ sudo apt-get install \ intel-opencl-icd \ intel-level-zero-gpu level-zero \ intel-media-va-driver-non-free libmfx1 C. 選擇性安裝開發套件,如果要執行某些 API,還是需要安裝才會正常運作: ~$ sudo apt-get install \ libigc-dev \ intel-igc-cm \ libigdfcl-dev \ libigfxcmrt-dev \ level-zero-dev D. 設定權限: 可以先檢查用戶是否在 render 的群組,使用以下命令來檢查,列出目前這個用戶所擁有的群組: ~$ groups ${USER} 如果這個用戶有沒有加入 render 與 video 的群組,使用以下方法加入: ~$ sudo gpasswd -a ${USER} render
~$ sudo gpasswd -a ${USER} video ~$ newgrp render ~$ newgrp video Step 3. 安裝 DL Workbench Docker Container: 有實際用過 Docker Container 的朋友應該知道,如果沒有設定將資料儲存在外部空間,只要每次重新開啟 Container,所有資料將會清空,還原成一開始的“乾淨” 狀態。因此除了安裝之外,還要確保相關設定與專案都有儲存到 Server 的儲存裝置上,而不是在 Container 裏面。 我參考官網的文件進行安裝: A. 使用 pip 安裝 openvino-workbench 套件,這不是下載與安裝 Workbench Container,可以當作是方便啟動的 script,簡化後面的流程: ~$ python3 -m pip install -U openvino-workbench B. 建立一個可以放設定與專案的目錄,例如放在自己目錄下的 openvino-workbench 目錄: ~$ mkdir -m 777 ~/openvino-workbench C. 執行以下命令啟動 Workbench: ~$ openvino-workbench --image openvino/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 按鈕。沒錯,可以將多台機器的資源統一在這個見面上管理,這樣可以將專案切換到不同機器上進行訓練與分析。 經過一番努力,測試成功了,真的可以將專案指派到其他機器上面去進行訓練,但可惜的是只能在本機進行驗證與測試,我想未來的版本應該會解決這個問題。
以下提供安裝方式,我也提供參考網址。 Step 1. 在遠端主機進行設定,下載並且安裝必要套件: A. 安裝套件: ~$ sudo apt-get update ~$ sudo apt-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 < p style=”padding-left: 80px;”>B. 更新 python3-virtualenvwrapper 套件。就個人的經驗上我分別在 Atom 與 VM 的環境上嘗試安裝時,會遇到個套件出現問題,導致最後的安裝無法完成,避免麻煩在一開始就先完成更新套件。以下是更新方式
: ~$ sudo apt remove python3-virtualenvwrapper ~$ sudo apt autoremove ~$ sudo apt purge python3-virtualenv ~$ /usr/bin/python3 -m pip install --force-reinstall virtualenvwrapper Step 2. 設定 ssh 遠端登入,並取得 private key 回到安裝 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. 確認遠端主機的用戶擁有根權限(Sudo Privileges),不需要輸入密碼就可以執行 sudo 的命令。 A. 首先簡單的確認是否有 sudo 的使用權限以及是否不需要輸入密碼就可以執行 sudo,執行以下指令: ~$ sudo ls -la / B. 如果可以順利列出根目錄下所有的檔案與目錄,表示這個用戶已經擁有根權限,並且不需要密碼就可以執行。如果顯示沒有 sudo 權限,則表示這個用戶沒有 sudo 使用權,請使用以下命令,將這個用戶加入到 sudo 群組中: ~$ su ~$ usermod -a -G sudo USERNAME ~$ exit C. 加入後,請登出再重新登入,並且再次使用 sudo ls -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 的功能,有個A dd Remote Target 的按鈕,按下後開始新增新的遠端主機: 這時可以看到 Target Machine 的列表,第一個顯示的就是 Workbench 內建預設的環境。按下『Add』按鈕後,進行新增機器的畫面: 在 Add Remote Targe t表單中,請填入以下資訊: 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 運算環境應該不是問題,非常佩服 Intel 打造 OpenVINO 的目標。 詳細內容 【OpenVINO專欄】用DL Workbench輕鬆完成AI模型的分析與部署工作 - 引領創新的科技實作社群媒體本文將介紹如何應用OpenVINO的DL Workbench選用現有或是自製的模型,透過GUI介面,輕鬆完成模...makerpro.cc