2021年7月19日 星期一

【Intel OpenVINO™教學】佈署AI從此不再為性價比頭疼─Intel DevCloud讓你試了再買

歐尼克斯實境互動工作室 許哲豪 2021/07/01


俗話說「男怕入錯行,女怕嫁錯郎」,從這句話可看出,大家對於要投入大量時間、精力及金錢的場景通常都會考慮再三,尤其有「選擇困難症」的朋友就更是要失眠好幾天還不一定能有最終的決定。為了減輕「選擇困難症」帶來的麻煩,「免費試用」就變成一個賣家和買家雙贏的作法。小到我們常去的大賣場有很多試吃、試用的體驗,大到婚宴、旅遊業這類高單價、一次性活動也開始提供虛擬實境(Virtual Reality, VR)服務,讓你先體驗一下花錢及享受的快感,就能更清楚及勇敢地把錢花在刀口上。

那對於「人工智慧(Artificial Intelligence, AI)」這樣要花大錢且有著很高不確定成果效益的領域,難道要花一堆錢買一堆設備來佈署測試,沒有「先試再買」的服務嗎?Intel 聽到大家的期望了,所以推出了免費雲端開發平台「Intel DevCloud for the Edge」[1](以下簡稱DevCloud)這項服務,讓大家不只能夠在上面使用預載的「Intel OpenVINO Toolkit」[2](以下簡稱OpenVINO)進行AI推論程式開發及測試,還有一堆不同排列組合的硬體(如CPU, iGPU, VPU, FPGA等)可以協助評估佈署後效能,讓使用者可更精準地採購所需設備,才不會發生殺雞卻用了火箭筒超規格的窘境。

接下來就讓我們從「DevCloud系統架構及工作流程」、「支援環境及硬體」、「系統安裝」、「開發者主頁面及範例集」、「檔案管理介面」、「程式運行介面」、「直接運行方式」及「派工運行及佈署評估」等幾個方面來深入了解一下這項免費工具究竟如何幫助我們以最好的性價比來開發及佈署。



*DevCloud系統架構及工作流程


首先幫大家簡單說明一下什麼是DevCloud for the Edge [1],它是一個免費的雲端的開發平台,很像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所示。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),可另外繪製視覺化圖表方便比較性能優劣。

Fig. 1 Intel DevCloud架構圖及工作流程。[3] (點擊圖放大)

 

*支援環境及硬體


目前DevCloud大約有近四十種的硬體可供測試評估,全部都能支援OpenVINO的推論運算,主要分為四大類,更完整的支援清單及排列組合及模型運算數值型態(FP32/FP16/INT8),可參考[4]。
 

  • 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帳號的朋友,可至官網[3]進行申請。如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提供之派工運行之應用範例,紅色虛線框為直接運行之範例。[3] (OmniXRI July 2021整理製作)(點擊圖放大)

*檔案管理介面


如上一小節說明,要進入DevCloud雲端網頁Jupyter Notebook操作頁面有兩種方式,第一種是直接點擊網頁上的範例開啟程式。而這些範例程式,早就放在系統配置給使用者的儲存空間中,其檔案結構如Fig. 4所示。

由於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之類的),方便後續程式運行。

Fig.4 Intel DevCloud雲端檔案管理頁面及預載程式儲存架構。(OmniXRI July 2021整理繪製)(點擊圖放大)

*程式運行介面


相信有在玩AI的朋友大概對Jupyter Notebook的操作介面應該不會太陌生,這也是DevCloud的預設程式開發及測試環境,為了方便後面操作說明,這裡簡單快速介紹一下基本介面。如Fig. 5所示,Jupyter Notebook是一種可以混合Markdown型式註解和Python程式碼的一種介面。每個格子(Cell)可以容納一段說明(圖、文、超連結等)或者一段程式碼(單行或多行皆可或一個函式),按下【Run】鍵或【Ctrl+Enter】鍵就能執行目前格子的程式,若想一口氣從頭執行到尾,則可按下【雙右箭頭】。若想重新開始執行,則可點擊選單中【Kernel】下的【Restart & Clear Output】或【Restart & Run All】。新增格子可按【+】鍵,但預設新增格子為程式碼(Code),若想改成註解使用,則要以雙箭頭鍵右方下拉式選單切換為【Markdown】格式。刪除格子則點擊【剪刀】鍵。存檔前記得修改檔名後再按【磁片】鍵。

這裡除了可以運行Python及OpenVINO程式外,亦可利用預安裝的OpenCV進行影像處理,最後再透過matplotlib函式庫來顯示影像,或videoHTML函式庫來顯示影片。

Fig. 5 Intel DevCloud Jupyter Notbook操作畫面。(OmniXRI July 2021整理繪製)(點擊圖放大)

*直接運行方式


在DevCloud中可選擇直接以虛擬機上的CPU (Intel Xeon Gold 6138)運行OpenVINO,不分派工作到其它硬體,這樣的方式可運行原本OpenVINO提供的範例程式(Intel’s Pre-trained Models, Public Pre-trained Models, Demos),大致上可簡化成下列幾個步驟,但是這樣的方式就不能使用iGPU, VPU, FPGA。

  1. 下載模型 (downloader.py),依推論需求下載合適模型。
  2. 模型轉換 (converter.py),將模型及參數轉換成IR格式(*.xml, *.bin)。
  3. 準備測試資料(影像、影片、文字、數值)。
  4. 進行推論,利用OpenVINO提供的參考範例(*.py)。
  5. 顯示推論結果(影像、影片、文字、數值)。


目前DevCloud上提供了三個直接運行的範例,如Fig.3紅色虛線框所示,包括有影像分類(Classification)、物件偵測(Object Detection)及風格轉換(Style Transfer)。另外為了方便大家學習,我另外在Github [5]上有準備了六個獨立範例,包括有人臉偵測、姿態估測、影像分類、人臉定位+特徵點提取+頭部姿態+注視點偵測、聲音分類及影像分割,如Fig. 6所示。大家只需將這些範例(*.ipynb)從Github下載後,再上傳到DevCloud上的儲存空間,點擊後就能執行,亦或者直接在DevCloud Jupyter Notebook中使用!git clone指令將Github上全部內容直接下載到DevCloud上的儲存空間,再執行亦可。

Fig. 6 OmniXRI Github DevCloud OpenVINO範例程式,(a) 人臉偵測,(b) 影像分割,(c) 聲音分類,(d) 影像分類,(e) 姿態估測,(f) 人臉定位+特徵點提取+頭部姿態+注視點偵測。[5] (OmniXRI July 2021 整理製作)(點擊圖放大)

*派工運行及佈署評估


接下來要介紹的是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 <nodes> : 指定節點數量:群組編號(Group ID),即運行的硬體,可參考Table 1。
  • -F <job_file_arguments> : 為先前步驟描述的參數字串,以利運行推論時使用。
  • -N <JobName> : 設置工作名稱,方便後續區分。


這裡以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)。(OmniXRI July 2021整理繪製)(點擊圖放大)

在這個範例的最末端還有提供一個更進階的圖表分析,如Fig. 9所示,如有需要可運行下面程式,即可顯示在推論過程中儲存在虛擬機上的資料。
link_t = "<a target='_blank' href='{href}'> Click here to view telemetry dashboard of the last job ran on Intel® Core™ i5-6500TE</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的開發帳號,讓你再也不必為錢擔心,可以盡情創作、大顯身手了。

【本文同步發表於MakerPRO】

*參考文獻


[1] Intel DevCloud: Remote Development Environments for Any Use Case
https://software.intel.com/content/www/us/en/develop/tools/devcloud.html

[2] Intel OpenVINO Toolkit
https://docs.openvinotoolkit.org/latest/index.html

[3] Intel DevCloud for Edge
https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/overview.html

[4] Intel DevCloud Edge Nodes and Compute Devices
https://software.intel.com/content/www/us/en/secure/develop/devcloud-edge/run-your-code.html

[5] Github, OmniXRI, Colab_DevCloud_OpenVINO_Samples
https://github.com/OmniXRI/Colab_DevCloud_OpenVINO_Samples

*延伸閱讀


[A] 許哲豪,”【Intel OpenVINO教學】如何利用Docker快速建置OpenVINO開發環境”
http://omnixri.blogspot.com/2021/01/intel-openvinodockeropenvino.html

[B] 許哲豪,”【Intel OpenVINO™教學】GStreamer串流影片智能分析不再慢吞吞─看Intel OpenVINO DL Stream如何加速影片推論”
http://omnixri.blogspot.com/2021/02/intel-openvinogstreamerintel-openvino.html

[C] 許哲豪,” 【Intel OpenVINO™教學】不用寫程式也能輕鬆上手AI模型分析、優化、佈署─DL Workbench圖形化介面工具簡介”
https://omnixri.blogspot.com/2021/03/intel-openvinoaidl-workbench.html

[D] 許哲豪,” 【Intel OpenVINO™教學】小孩才作選擇,AI推論速度及準確度我全都要─OpenVINO Post-Training Optimization Tool簡介 ”
https://omnixri.blogspot.com/2021/04/intel-openvinoaiopenvino-post-training.html

 

沒有留言:

張貼留言

【頂置】簡報、源碼、系列文快速連結區

常有人反應用手機瀏覽本部落格時常要捲很多頁才能找到系列發文、開源專案、課程及活動簡報,為了方便大家快速查詢,特整理連結如下,敬請參考! Edge AI Taiwan 邊緣智能交流區 全像顯示與互動交流區 台科大(NTUST) 人工智慧與邊緣運算實務 開南大學...