【教材專區】初探OpenVINO並建構第一個深度學習應用程式
Intel 提供一致性的佈署工具「OpenVINO」, 從它的雲端平台「DevCloud」到模型庫「Open Model Zoo」一手包辦, 降低模型佈署的難度, 本課程將以入門的角度,帶領學員
內容簡介
作者介紹
適合人群
你將會學到什麼
購買須知
-
Intel DevCloud 快速上手
本章節將介紹如何將 Intel DevCloud 應用到 OpenVINO 中。
-
【懶人包】四步驟實現你的 AI 創意-DevCloud 平台教學
Intel DevCloud開發者工具是一個免費的雲端的開發平台,它已預裝了OpenVINO™ Toolkit方便開發AI應用程式。 其中DevCloud for the Edge服務讓開發者可以在雲端的虛擬機上評估模型推論,讓你不需要花費任何一毛錢,即可盡情享用到高效能的運算能力!▶️ 系列影片:📍認識Ope...
-
Intel DevCloud 助你雲端驗證 AI 佈署
簡介 俗話說「男怕入錯行,女怕嫁錯郎」,從這句話可看出,大家對於要投入大量時間、精力及金錢的場景通常都會考慮再三,尤其有「選擇困難症」的朋友就更是要失眠好幾天還不一定能有最終的決定。 為了減輕「選擇困難症」帶來的麻煩,「免費試用」就變成一個賣家和買家雙贏的作法。小到我們常去的大賣場有很多試吃、試用的體驗,大到婚宴、旅遊業這類高單價、一次性活動也開始提供虛擬實境(Virtual Reality, VR)服務,讓你先體驗一下花錢及享受的快感,就能更清楚及勇敢地把錢花在刀口上。 那對於「人工智慧」(Artificial Intelligence, AI) 這種要花大錢且有著很高不確定成果效益的領域,難道要花一堆錢買一堆設備來佈署測試,沒有「先試再買」的服務嗎? Intel 聽到大家的期望了,所以推出了免費雲端開發平台「Intel DevCloud for the Edge」(以下簡稱 DevCloud)這項服務。 有了 DevCloud,大家不只能夠在上面使用預載的「Intel® Distribution of OpenVINO™ Toolkit」(以下簡稱 OpenVINO)進行AI推論程式開發及測試,還有一堆不同排列組合的硬體(如 CPU、iGPU、VPU、FPGA 等)可以協助評估佈署後效能,讓使用者可更精準地採購所需設備,才不會發生殺雞卻用了火箭筒超規格的窘境。 接下來就讓我們從「DevCloud 系統架構及工作流程」、「支援環境及硬體」、「系統安裝」、「開發者主頁面及範例集」、「檔案管理介面」、「程式運行介面」、「直接運行方式」及「派工運行及佈署評估」等幾個方面來深入了解一下這項免費工具究竟如何幫助我們以最好的性價比來開發及佈署。 DevCloud 系統架構及工作流程 首先幫大家簡單說明一下什麼是 DevCloud,它是一個免費的雲端的開發平台,很像 Google Colab,已預裝了 OpenVINO™ Toolkit (Open Visual Inference and Neural network Optimization)方便開發 AI 應用程式,目前有提供兩種版本 2020.3.2 LTS 及 2021.3。 程式開發介面上提供有 Jupyter Notebook 介面及 Google Colab 沒有提供的終端機介面。 內建有 Python 2.7.17 及 3.6.9 版,且預裝有 matplotlib (3.3.4), mxnet (1.5.1), numpy (1.18.5), onnx (1.8.1), opencv-python (4.5.1.48), scikit-learn (0.24.1), tensorflow (1.15.1), torch (1.4.0) 等各種常用套件包(可使用 !pip list 或 !pip3 list 指令查詢已安裝套件包),當然亦可隨程式需要自己新增、刪除或升降級套件包的版本。 另有提供 50 GByte 的儲存空間,方便儲放自己寫的程式、下載的模型及資料集,不會像 Google Colab 每次啟動虛擬機時儲存空間都會被清空。另外使用者還可調用各種實體的硬體(如 CPU, iGPU, VPU, FPGA)來運行程式,方便比較各種組合的執行效能。 其主要工作流程如 Fig. 1 所示。 Fig. 1 Intel DevCloud 架構圖及工作流程。 Step 1,使用者透過瀏覽器進入 DevCloud 雲端服務器。 Step 2,透過 Jupyter Notebook 介面進行程式開發及測試,當然亦可透過指令下載相關程式庫、資料集或以 OpenVINO 下載、轉換、優化所需運行的模型及參數檔。 若選擇直接運行方式,則系統會以內建的 CPU (Intel Xeon Gold 6138) 進行運算,將結果(數值、文字、影像等)顯示於 Jupyter Notebook 介面上,如 Step 6。 若需要進行多種硬體運行效能比較,則要執行 Step 3,將同一模型推理工作同時分派到不同硬體上運算,產生工作佇列 (Job Queue)。 Step 4,根據指定的硬體開始運算。由於每種硬體運行效能不同,所以結束的時間也會不同,待 Step 5 獲得全部推理結果後就會執行 Step 6,將結果(數值、文字、影像等)顯示於 Jupyter Notebook 介面上,完成一次比較。輸出結果上述內容外,亦會同時記錄每種硬體的模型載入時間 (Load Time, ms) 及推論速度 (Frame per Second, FPS),可另外繪製視覺化圖表方便比較性能優劣。 支援環境及硬體 目前 DevCloud 大約有近四十種的硬體可供測試評估,全部都能支援 OpenVINO 的推論運算,主要分為四大類,更完整的支援清單及排列組合及模型運算數值型態 (FP32/FP16/INT8),可參考 Intel DevCloud Edge Nodes and Compute Devices。 CPU : Intel Core i5, i7, i9, Atom, Xeon iGPU : Intel HD, UHD Graphics, Iris, Iris Xe VPU : Intel Movidius Myriad X (1 VPU), Vision Accelerator (2或8 VPUs) FPGA : Intel Arria 10 另外 CPU 部份 Core i5, i7 目前可支援最新的 11代 Tiger Lake,派工群組編號 (Group ID) 分別是 idc045 和 idc046,這兩款 CPU 同時自帶最新的 Iris Xe Graphics GPU,在運算效能上明顯提高許多。 若想更進一步知道整個 DevCloud 究竟提供了多少硬體(包括幾台實體機器)可供實驗,則可在 Jupyter Notebook 環境下,使用以下列指令查詢。 # 列出所有硬體組合 !pbsnodes | grep compnode | awk '{print $3}' | sort | uniq -c Table 1 所有硬體組合清單 15 properties = idc001skl,compnode,openvino-latest,intel-core,i5-6500te,intel-hd-530,ram8gb 14 properties = idc002mx8,compnode,openvino-latest,intel-core,i5-6500te,intel-hd-530,ram8gb,myriadx-8-vpu 11 properties = idc004nc2,compnode,openvino-latest,intel-core,i5-6500te,intel-hd-530,ram8gb,myriadx-1-vpu 5 properties = idc006kbl,compnode,openvino-latest,intel-core,i5-7500t,intel-hd-630,ram8gb 5 properties = idc007xv5,compnode,openvino-latest,intel-xeon,e3-1268l-v5,intel-hd-p530,ram32gb 6 properties = idc008u2g,compnode,openvino-latest,intel-atom,e3950,intel-hd-505,ram4gb,myriadx-1-vpu 1 properties = idc009jkl,compnode,openvino-latest,intel-core,i5-7500,intel-hd-630,ram8gb 1 properties = idc010jal,compnode,openvino-latest,intel-celeron,j3355,intel-hd-500,ram4gb 1 properties = idc011ark2250s,compnode,openvino-latest,intel-core,i5-6442eq,intel-hd-530,ram8gb,myriadx-3-vpu 1 properties = idc012ark1220l,compnode,openvino-latest,intel-atom,e3940,intel-hd-500,ram4gb,myriadx-2-vpu 1 properties = idc013ds580,compnode,openvino-latest,intel-atom,e3950,intel-hd-505,ram2gb 4 properties = idc014,compnode,openvino-latest,intel-core,i7-8665ue,intel-uhd-620,ram16gb,myriadx-2-vpu 3 properties = idc015ai5,compnode,openvino-latest,intel-core,i5-8365ue,intel-uhd-620,ram8gb 2 properties = idc016ai7,compnode,openvino-latest,intel-core,i7-8665ue,intel-uhd-620,ram16gb 1 properties = idc017,compnode,openvino-latest,intel-xeon,gold5220r,no-gpu,ram96gb 1 properties = idc018,compnode,openvino-latest,intel-xeon,gold6258r,no-gpu,ram96gb 2 properties = idc021,compnode,openvino-latest,intel-xeon,silver4214r,no-gpu,ram48gb 10 properties = idc022,compnode,openvino-latest,intel-core,i7-10710u,intel-uhd-620,ram16gb 6 properties = idc023,compnode,openvino-latest,intel-core,i5-8365ue,intel-uhd-620,ram8gb,myriadx-2-vpu 1 properties = idc024,compnode,openvino-latest,intel-xeon,gold5220r,no-gpu,ram96gb,myriadx-8-vpu 1 properties = idc026,compnode,openvino-latest,intel-xeon,bronze3206r,no-gpu,ram48gb,myriadx-8-vpu 1 properties = idc027,compnode,openvino-latest,intel-xeon,silver4214r,no-gpu,ram48gb,myriadx-8-vpu 1 properties = idc029,compnode,openvino-latest,intel-core,i7-8665u,intel-uhd-620,ram32gb 1 properties = idc030,compnode,openvino-latest,intel-core,i7-1065g7,iris-plus,ram16gb 1 properties = idc031,compnode,openvino-latest,intel-xeon,e-2286m,intel-uhd-p630,ram32gb,myriadx-8-vpu 3 properties = idc032,compnode,eis-pdm,intel-core,i7-8700,intel-uhd-630,ram16gb 14 properties = idc033,compnode,openvino-latest,intel-xeon,e-2286m,intel-uhd-p630,ram32gb 2 properties = idc035whleci1_5,compnode,ebp-ecs,intel-core,i7-8665u,intel-uhd-8th-gen,ram32gb,none 5 properties = idc036,compnode,openvino-latest,intel-core,i9-10900t,intel-uhd-630,ram32gb 5 properties = idc037,compnode,openvino-latest,intel-core,i7-10700t,intel-uhd-630,ram32gb 5 properties = idc038,compnode,openvino-latest,intel-core,i5-8365ue,intel-uhd-620,ram8gb,myriadx-2-vpu 1 properties = idc042,compnode,openvino-latest,intel-core,i5-8500t,intel-uhd-630,ram32gb,myriadx-8-vpu, aaeon,boxer-6842m 1 properties = idc043,compnode,openvino-latest,intel-core,i3-10100te,intel-uhd-630,ram16gb,myriadx-2-vpu, aaeon,genesys-cml5ai 1 properties = idc044,compnode,openvino-latest,intel-atom,intel,atom,e3950,intel-uhd-630,ram8gb,myriadx-1-vpu 4 properties = idc045,compnode,openvino-latest,intel-core,i7-1185g7e,iris,xe,graphics,ram16gb,none,tiger,lake 2 properties = idc046,compnode,openvino-latest,intel-core,i5-1145g7e,iris,xe,graphics,ram16gb 1 properties = idc051,compnode,openvino-latest,intel-xeon,gold6314u,none,ram128gb,none,icelake 5 properties = idc052,compnode,openvino-latest,intel-xeon,gold6338n,none,ram128gb,none,icelake 另外補充一點,這裡的硬體都是實體機器,數量有限,且受限於各種硬體的記憶體大小、數值表示方式不同,因此不一定每次都可快速地配置到硬體運算,也不保證所有模型都能順利在每一種硬體上執行,還須參考 OpenVINO 官方建議或自行測試。 系統安裝 如果還沒有 DevCloud 帳號的朋友,可至官網進行申請。 如 Fig. 2 所示,點選【Intel® DevCloud for the Edge】進入註冊頁面。接著要申請 Intel 開發者帳號,如果已經有 Intel 帳號者則選【Sign in】,登入後才能填寫 DevCloud 申請表單,接著輸人個人基本資料,建議取一個好記的使用者名稱(不要用中文)方便之後登人系統。 按下【Submit】送出申請資料。畫面就會切到 DevCloud 開發者主面頁(建議建個網頁書籤方便後續快速連結)。接著要等個 5~10 分鐘(系統預設 24 小時內寄出,但通常不會等這麼久),系統會寄出確認信。依信中指示,點擊確認後就能使用 DevCloud 了。 預設開通後會給予 90 天使用期限,通常使用期限快到前系統還會寄信問是否要延長,只需填寫幾個問題後,原則上都會給予延長。如果已經有 DevCloud 帳號的朋友,可直接進到 DevCloud 開發者主要頁面,點擊右上角【Sign in】即可直接登入了。 Fig. 2 Intel DevCloud 帳號申請流程。(OmniXRI July 2021 整理繪製) 開發者主頁面及範例集 如 Fig. 2 所示,DevCloud 開發者主頁面中有四個主要子頁面,包括學習(Learn)、建置(Build)、優化(Optimize)及執行(Launch)。 學習頁面下,有基本教案(Tutorials)和應用範例(Sample Applications),前者提供直接使用虛擬機 CPU 運行的範例及 OpenCV, Post-Training Optimization Tool, DL Streamer, Benchmark 及佈署說明。而後者則提供有 27 項常見應用範例,包括醫療照護、工業、政府部門、零售及安防領域,範例清單可參考 Fig. 3。 建置頁面下,除有和前述介紹的範例應用(Sample Applications) 外,另外還有提供更進階的「Edge for Industrial」範例,這裡就不多作介紹。一般如果要運行範例,可直接點擊就能進入 Jupyter Notebook 的開發環境介面。若想開發自己的程式,則須由這個頁面中的 【Create Jupyter* Notebook】進入 Jupyter Notebook,必須記住。 優化頁面下,主要介紹 Deep Learning Workbench (DL Workbench)、Post-Training Optimization Tool (POT),這裡不多作介紹,可參考先前的文章 [C][D]。 Fig. 3 Intel DevCloud 提供之派工運行之應用範例,紅色虛線框為直接運行之範例。 (OmniXRI July 2021整理製作) 檔案管理介面 如上一小節說明,要進入 DevCloud 雲端網頁 Jupyter Notebook 操作頁面有兩種方式,第一種是直接點擊網頁上的範例開啟程式。而這些範例程式,早就放在系統配置給使用者的儲存空間中,其檔案結構如 Fig. 4 所示。 Fig.4 Intel DevCloud 雲端檔案管理頁面及預載程式儲存架構。(OmniXRI July 2021整理繪製) 由於 DevCloud 的資源有限,所以每次登入後只能使用 10 小時,而剩餘使用時間會秀在左上角,若欲使用更長時間,則必須點擊選單【Logout】登出後,再重登入。另外 DevCloud 同時不能運行太多個程式,所以系統會於左上角【Runing】子頁面顯示運行中的程式。這裡要注意的是,關閉瀏覽器程式編輯頁面不代表已結束運行,要自行手動關閉才不會一直佔用運算資源。 這個雲端檔案管理工具,可支援檔案(模型、參數、資料集、程式碼等)上傳,上傳的內容不會像 Google Colab 登出後就消失。當勾選指定檔案或檔案夾時能將其壓縮並下載。亦可支援純文字類型檔案直接編輯(類似 windows 下筆記本或 Linux 下 gedit 環境),也能使用終端機模式進行操作,而後兩項是 Google Colab 所沒有提供的。不過 DevCloud 為了安全,並不開放 sudo 超級使用者權限,所以如果遇到需要使用 sudo 權限才能安裝的套件包,則需另外處理。 由於 DevCloud 已內建 OpenVINO,所以新增【New】自己的 Python AI 應用程式碼時,要先指定對應版本(2020.3.2 LTS 或 2021.3 版),以免較新的模型找不到對應的套件包或指令呼叫方式不相容。建議可先新增一個自己工作的檔案夾(如 /mycode 之類的),方便後續程式運行。 程式運行介面 相信有在玩 AI 的朋友大概對 Jupyter Notebook 的操作介面應該不會太陌生,這也是 DevCloud 的預設程式開發及測試環境,為了方便後面操作說明,這裡簡單快速介紹一下基本介面。 Fig. 5 Intel DevCloud Jupyter Notbook 操作畫面。 如 Fig. 5 所示,Jupyter Notebook 是一種可以混合 Markdown 型式註解和 Python 程式碼的一種介面。每個格子(Cell)可以容納一段說明(圖、文、超連結等)或者一段程式碼(單行或多行皆可或一個函式),按下【Run】鍵或【Ctrl+Enter】鍵就能執行目前格子的程式,若想一口氣從頭執行到尾,則可按下【雙右箭頭】。 若想重新開始執行,則可點擊選單中【Kernel】下的【Restart & Clear Output】或【Restart & Run All】。 新增格子可按【+】鍵,但預設新增格子為程式碼(Code),若想改成註解使用,則要以雙箭頭鍵右方下拉式選單切換為【Markdown】格式。刪除格子則點擊【剪刀】鍵。存檔前記得修改檔名後再按【磁片】鍵。 這裡除了可以運行 Python 及 OpenVINO 程式外,亦可利用預安裝的 OpenCV 進行影像處理,最後再透過 matplotlib 函式庫來顯示影像,或 videoHTML 函式庫來顯示影片。 直接運行方式 在 DevCloud 中可選擇直接以虛擬機上的 CPU (Intel Xeon Gold 6138)運行 OpenVINO,不分派工作到其它硬體,這樣的方式可運行原本 OpenVINO 提供的範例程式 (Intel’s Pre-trained Models, Public Pre-trained Models, Demos),大致上可簡化成下列幾個步驟,但是這樣的方式就不能使用 iGPU, VPU, FPGA。 下載模型 (downloader.py),依推論需求下載合適模型。 模型轉換 (converter.py),將模型及參數轉換成IR格式(*.xml, *.bin)。 準備測試資料(影像、影片、文字、數值)。 進行推論,利用 OpenVINO 提供的參考範例(*.py)。 顯示推論結果(影像、影片、文字、數值)。 目前 DevCloud 上提供了三個直接運行的範例,如 Fig.3 紅色虛線框所示,包括有影像分類(Classification)、物件偵測(Object Detection) 及風格轉換(Style Transfer)。另外為了方便大家學習,我另外在 Github 上有準備了六個獨立範例,包括有人臉偵測、姿態估測、影像分類、人臉定位 + 特徵點提取 + 頭部姿態 + 注視點偵測、聲音分類及影像分割,如 Fig. 6 所示。 大家只需將這些範例(*.ipynb)從 Github 下載後,再上傳到 DevCloud 上的儲存空間,點擊後就能執行,亦或者直接在 DevCloud Jupyter Notebook 中使用 !git clone 指令將 Github 上全部內容直接下載到 DevCloud 上的儲存空間,再執行亦可。 Fig. 6 OmniXRI Github DevCloud OpenVINO 範例程式, (a) 人臉偵測,(b) 影像分割,(c) 聲音分類,(d) 影像分類,(e) 姿態估測,(f) 人臉定位+特徵點提取+頭部姿態+注視點偵測。 派工運行及佈署評估 接下來要介紹的是 DevCloud 中最好用的功能,就是同時將「模型推論」工作分派到不同硬體測試運行效能,再用可視化圖表來表示效能差異,如此就能讓使用者更清楚了解何種等級及搭配的硬體在不上網情況下就能佈署在邊緣端,不會發生用火箭筒殺雞這種嚴重超規格佈署的問題。 下面就以DevCloud應用範例子頁(Sample Applications) 中的加速物件偵測(Accelerated Object Detection) 為例(如 Fig. 3 最右下角圖示範例)來進行說明,只需從網頁中點擊就能進入範例程式。其原始碼所在路徑為 /Reference-samples/iot-devcloud/openvino-dev-latest/developer-samples/python/object-detection-python/object_detection_demo.ipynb。 在這個範例中會以一段影片作為輸入,影片中有很多車子,程式會使用 mobilenet-ssd VOC 資料集預訓練模型負責將車子(物件)找出來,當置信度超過臨界值時就會被框出,同時估算整體計算速度FPS (Frame Per Second),如 Fig. 7 所示。 Fig. 7 輸入測試影片及輸出結果(物件框、置信度及推論速度)。(OmniXRI July 2021整理繪製) 這裡我們不對物件偵測的模型原理及程式細節進行說明,僅針對如何指派工作和產生圖表等核心內容進行說明,想更進一步了解的朋友可自行參考範例程式中的說明。 推論工作的安排,前半段和直接運行方式相同,先下載預訓練模型(downloader.py),轉換成推論引擎所需 IR 檔(模型檔 *.xml 及參數檔*.bin)(converter.py),必要時可使用優化工具(mo.py 或 pot) 加強模型推論效能。 為了讓不同硬體能運行相同模型來比較,再來就要產生「工作描述檔(Job File)」及分派工作。首先要設定多種硬體運行所需的參數,如下所示。 InputVideo = "/data/reference-sample-data/object-detection-python/cars_1900.mp4" NumRequests_CPU = 2 NumRequests_GPU = 4 NumRequests_NCS2 = 4 NumRequests_HDDLR = 128 接著產生一工作描述檔(object_detection_job.sh),可指定輸出路徑、運行設備、浮點數精度、輸入影片路徑及使用異步函式(Asynchronous API) 時最大請求數量。 接著就要使用 qsub 來提交工作,其主要參數如下: <job_file>:為上一步驟建立的object_detection_job.sh -l : 指定節點數量:群組編號(Group ID),即運行的硬體,可參考 Table 1。 -F : 為先前步驟描述的參數字串,以利運行推論時使用。 -N : 設置工作名稱,方便後續區分。 這裡以 Intel Core i5-6500TE CPU (Group ID : idc0001skl) 為例,其分派工作方式如下程式所示。若程式仍在運作中,則會以進度條方式顯示剩餘時間。 # 提交工作到佇列 job_id_core = !qsub object_detection_job.sh -l nodes=1:idc001skl -F "results/core/ CPU FP32 {InputVideo} {NumRequests_CPU}" -N obj_det_core print(job_id_core[0]) #顯示工作編號 # 顯示工作進度 if job_id_core: #若推論工作仍在運行則更新進度條 progressIndicator('results/core', f'pre_progress_{job_id_core[0]}.txt', "Preprocessing", 0, 100) progressIndicator('results/core', f'i_progress_{job_id_core[0]}.txt', "Inference", 0, 100) progressIndicator('results/core', f'post_progress_{job_id_core[0]}.txt', "Rendering", 0, 100) 這裡分別列舉幾種硬體派工的參數,可以此類推。 # idc018 : Xeon Gold 6258R CPU, without GPU, 96GB RAM job_id_xeon_cascade_lake = !qsub object_detection_job.sh -l nodes=1:idc018 -F "results/xeon_cascade_lake/ CPU FP32 {InputVideo} {NumRequests_CPU}" -N obj_det_xeon_cascade # idc045 : Core i7-1185g7e, Iris Xe iGPU, 16GB RAM (Tiger Lake, 11 Gen. CPU) job_id_core_tigerlake = !qsub object_detection_job.sh -l nodes=1:idc045 -F "results/core_tigerlake/ CPU FP32 {InputVideo} {NumRequests_CPU}" -N obj_det_core_tigerlake # idc001skl : Core i5-6500TE CPU, HD-530 Graphic iGPU, 8GB RAM job_id_gpu =!qsub object_detection_job.sh -l nodes=1:idc001skl -F "results/gpu/ GPU FP32 {InputVideo} 0.4 {NumRequests_GPU} 1" -N tinyyolov3_gpu # idc042nc2 : Core i5 6500TE, HD 530 Graphic iGPU,,ram8gb,myriadx-1-vpu VPU (NCS2) job_id_ncs2 = !qsub object_detection_job.sh -l nodes=1:idc004nc2 -F "results/ncs2/ MYRIAD FP16 {InputVideo} {NumRequests_NCS2}" -N obj_det_ncs2 # idc002mx8 : Core i5 6500TE, HD 530 Graphic iGPU,8GB RAM, Myriadx-8-vpuHDDL-R job_id_hddlr = !qsub object_detection_job.sh -l nodes=1:idc002mx8 -F "results/hddlr/ HDDL FP16 {InputVideo} {NumRequests_HDDLR}" -N obj_det_hddlr # 註:VPU只支援 FP16 數值格式 由於每個工作的執行推論時間頗長,我們沒必要等它完成,可直接繼續執行分派其它工作。待全部分派完後,可利用 liveQstat() 函式來監看所有工作執行狀況,直到所有工作完成。 完成推論後,亦可使用 videoHTML() 函式來檢視推論結果影片,如下指令所示。 videoHTML('Intel Core CPU', [f'results/core/output_{job_id_core[0]}.mp4'],f'results/core/stats_{job_id_core[0]}.txt') 最後將推論過程所得到的數據進行可視化圖表繪製,如 Fig.8 所示,可得知每種硬體推論所需時間(單位:ms)及速度(FPS),而這裡的時間還包含模型及待測資料存取及輸出繪圖的時間,推論時間越短則推論速度就越快。所以整體來看,推論速度 VPU (NSC2) < iGPU (HD) < Core CPU < Xeon CPU < HDDL (8x VPUs)。 當然這只是模型的初步推論結果,還有優化改善空間。 經過多種待佈署模型測試後,使用者就可找出性價比最合適的硬體設備。以剛才的結果為例,假設輸入動態影像(影片)速度為每秒 30 張(30FPS),則除 Atom GPU 不滿足外,其餘都可滿足,則最低選用 NCS2 (VPU) 就夠用,不須用到 Core i5 甚至 Xeon CPU。 Fig. 8 派工運行效能可視化,左:推論處理時間(ms),右:推論速度(FPS)。 在這個範例的最末端還有提供一個更進階的圖表分析,如 Fig. 9 所示,如有需要可運行下面程式,即可顯示在推論過程中儲存在虛擬機上的資料。 link_t = "###draft_code_symbol_lessthen###a href="{href}" target="_blank" rel="noopener"> Click here to view telemetry dashboard of the last job ran on Intel® Core™ i5-6500TE###draft_code_symbol_lessthen###/a>" result_file = "https://devcloud.intel.com/edge/metrics/d/" + job_id_core[0].split('.')[0] html = HTML(link_t.format(href=result_file)) display(html) Fig. 9 進階可視化圖表。(OmniXRI July 2021整理製作) 小結 從以上介紹可得知,Intel OpenVINO 提供了很多預訓練的AI模型,讓我們可以快速驗證想法(Proof of Concept, PoC),而 DevCloud 則提供各種硬體組合,讓我們可以快速驗證模型佈署後的執行效能,更重要的是這些全部免費。 有了這兩大工具協助,未來在進行 AI 專案開發時就不必頭疼要花很多錢來驗證想法,也不用擔心客戶抱怨設備太貴或效能不足了。所以各位開發者們,趕快上網申請 Intel 的開發帳號,讓你再也不必為錢擔心,可以盡情創作、大顯身手了。 詳細內容 【先試再上】Intel DevCloud助你雲端驗證AI佈署,免費! - 引領創新的科技實作社群媒體Intel 推出的免費雲端開發平台「DevCloud」,不僅提供OpenVINO讓使用者進行AI推論程式開發及...makerpro.cc
-
OpenVINO 雲端也能 GO!四個步驟輕鬆在 DevCloud 實作 AI 推論
簡介 Intel DevCloud 開發者工具是一個免費的雲端的開發平台,它已預裝了 OpenVINO™ Toolkit (Open Visual Inference and Neural network Optimization) 方便開發 AI 應用程式。它是一個雲端的 JupyterLab 服務,旗下三個產品 DevCloud for the Edge、DevCloud for oneAPI、DevCloud for FPGA,分別著重讓開發者可以在雲端的虛擬機上評估模型推論、神經網路訓練研究以及客製化 FPGA 加速晶片應用。 特別值得一提的是,這些服務目前完全不需要花費任何一毛錢,即可盡情享用到高效能的運算能力。開發者們大可好好運用這些資源來學習並應用 AI,本篇文章將使用 DevCloud for the Edge,在簡單的四個步驟之中,完成一個 Object Detection 物件偵測的 DEMO 操作。 一、準備動作 Tutorials 與 Sample Applications 非常推薦入門者學習(圖片來源:Intel) 在註冊完成登入 DevCloud for the Edge 之後,選擇 Get Started 進入,即可看到五個頁籤,分別為 Home、Learn、Build、Optimize 以及 Launch,分別在 AI 應用的四個階段:學習、建立模型、最佳化模型以應用上,提供相當實用的文件與素材,入門者建議可以試著運行 Learn 頁籤裡面的 Tutorials 與 Sample Applications,裡面有三十餘的非常豐富的教學內容。 我們這次的主要目的則是在 DevCloud 上運行 open model zoo 的範例,首先我們要點選 build 頁籤當中的 Connect and Create 來啟動伺服器,等待約三十秒的時間之後即會轉跳到 DevCloud 的後台介面。 DevCloud 的後台介面,點選右上方 New 來新增檔案或開啟終端機(圖片來源:Intel DevCloud for the Edge 平台) 進入到 DevCloud 後台介面可以看到目前顯示在 files 頁籤,是類似檔案管理員以階層的方式看到自己在伺服器上的所有檔案,預設伺服器在建立之後即會產生一個 Reference-samples 的資料夾,裡面存放許多上面所提到的 Sample Applications 等專案檔案。 DevCloud 提供每個帳戶 50GB 的儲存空間,可以自由運用儲存程式與模型資料等。接著點選右上方 New 按鈕,並從下拉式選單中點選 Terminal 開啟終端機。在黑色的終端機背景中輸入以下指令來取得我們要使用的 ipython notebooks 檔案,同時這個檔案也存放在 github 上供有需要的開發者自行取用參考。 wget https://github.com/FelixLinSY/DevCloud_Hands_On/raw/main/DevCloud_HandsOn.ipyn 二、四步驟完成預訓練模型範例 執行完成回到檔案管理介面,就會看到多出一個剛下載的 DevCloud_HandsOn.ipynb 檔案,點選該檔案來啟動 ipython notebook。 運行於 DevCloud 的教學指引:DevCloud_HandsOn.ipynb 開啟 DevCloud_HandsOn.ipynb 之後可以看到左側是目錄概要,可以看到列出了四個步驟即可完成 open model zoo 上的範例: STEP1:下載 open model zoo 程式碼 STEP2:下載與轉換模型 STEP3:進行物件偵測推論 STEP4:在各種邊緣裝置進行推論 本教學文的目錄概要 右側比較大的欄位則是程式碼編輯區,這部分是由程式碼與註解文字兩種 Cell 組合而成的區域,能以 Cell 為單位自由編輯並且執行。筆者已經預先在這個 ipython notebook 中加入註解說明文字,希望能幫助到初學者理解各個步驟與指令的用意所在。 STEP 1:下載 open model zoo 程式碼 STEP1 僅有三行指令,依序執行即可建立工作目錄並且從 github 下載 open model zoo 的程式碼。 STEP 2:下載與轉換模型 STEP2 則接續要下載預訓練的物件偵測模型,這邊有兩個做法: 2.1 是一次下載所有支援的物件偵測模型; 2.2 則是僅下載指定模型。 由於物件偵測支援的預訓練模型實在是非常多,一次下載將花費非常多的時間,強烈建議先跳過 2.1 執行 2.2 下載特定模型即可,待日後想要嘗試置換其他模型時,再下載全部模型較為妥適。 取得要使用的模型檔之後就是要進行模型轉換(converter)來取得推論引擎(Inference Engine),載入時需要使用的 IR(Intermediate Representation)檔,以利後續使用 CPU、GPU、VPU 等各種硬體進行推論。由於模型轉換需要花費一些時間,如果你是一次下載所有模型並且進行轉換的話(前述 2.1 的部分)這邊也會花上好一段時間。 使用 ssd_mobilenet_v2_coco 進行圖片推論的結果 STEP 3:進行物件偵測推論 STEP3 就是進行推論的重頭戲了,這邊會使用 open model zoo 中的 object_detection_demo.py 範例程式分別執行單張圖片的推論以及影片的推論兩種。為求方便起見圖片與影片筆者分別從 pixabay 與 Pexels 合法取得照片與影片來進行推論使用,各位也可以將自己的照片或影片手動上傳到 DevCloud 上作為推論資料使用。 在執行範例程式需要代入相應的參數包含 IR 檔路徑、輸入資料、輸出資料、模型架構與標籤檔等等,若參數錯誤可能會造成辨識不準確甚至會無法執行,請務必稍加留意。若需要更換模型檔除了 IR 路徑修改外,模型架構與標籤檔也可能需要更換,詳細請參考預訓練模型文件的說明。 此外在執行影片推論前,筆者有使用 sed 指令去修改範例程式中輸出影像的格式,為的是能夠輸出成正確的影像檔案並且在 DevCloud 上播放。其餘的部分則和圖片推論是大同小異。在推論結果的部分,不管是圖片或是影片的物件偵測,可以觀察到輸出結果相當不錯,即使是小物件偵測的正確率還不差。 在 Intel DevCloud for the Edge 執行的影片推論結果 STEP 4:硬體測試模擬 最後的第四步驟,我們要使用 DevCloud 最為強大的功能之一,將這個 AI 模型放到不同的邊緣運算裝置進行推論。於此之前先建立工作腳本檔(4.1),基本上跟我們前面第三步驟的內容差不多,只不過把一些我們想要動態改變的參數改為從外部引入。 接著使用 qsub 指令派送工作到指定的邊緣裝置(4.2),所有支援的邊緣裝置可以參考 Intel DevCloud for the Edge 裝置列表。由於工作會以方同步的方式在不同裝置上運作,我們可以透過 liveQstate() 指令來檢視任務的執行狀態,這邊務必要留意一下如果任務尚未完成而直接執行後續的 cell 程式段,將可能會造成錯誤或是資料讀取不正確。 當所有任務都完成後,同樣地開啟輸出影片來觀察 Intel Core Gen 11th 使用 CPU 與 GPU 之間的推論差異。(讀者也可以參考 Jack 大的教學文) 你可在 Intel DevCloud for the Edge 裝置列表中進行選擇,模擬體驗一下所選模型在實際運作時的效益如何 三、快速延伸你的創意 本篇文章帶各位輕鬆快速得完成一個 open model zoo 上的 AI 推論範例,各位是否覺得意猶未盡呢?在 open model zoo 與 DevCloud 上還有許多寶庫值得去探究以及發掘,建議各位後續可以從 open model zoo 內各種有趣的範例和預訓練的模型當中做探索,或是執行 DevCloud 上不同應用展示,都是不錯的學習路徑喔!每個範例也可以彈性去套用不同的模型進行演算,對於 AI 模型能夠發展的應用,可以提供更多想像空間喔! 人工智慧的技術在未來幾年間將持續蓬勃發展,而配套的軟體工具也將會越來越廣泛且容易上手,有幸身處在這個 AI 應用即將爆發的時代,勢必也要跟風參與一下這波撼動世界的技術浪潮,各位說是吧! 詳細內容 OpenVINO雲端也能GO!四個步驟輕鬆在DevCloud實作AI推論 - 引領創新的科技實作社群媒體Intel DevCloud是一個免費的AI雲端開發平台,開發者們可運用這些資源來學習並應用AI,本篇文章將使...makerpro.cc
-
-
OpenVINO Open Model Zoo (深度學習模型大觀園)
本章節將簡介 Intel 已經預訓練好且可直接使用的許多模型,並透過 OpenVINO Open Model Zoo 把好模型使用到 OpenVINO 中。