快轉到主要內容

讓邊緣AI動起來!Advantech 如何用 Docker 容器簡化部署,加速您的創新應用

· loading
作者
Advantech ESS
目錄

本文章內容係以參考技術文件為基礎,經由人工智慧(AI)技術進行改寫及重整,旨在提供讀者更清晰易懂之內容呈現。如有任何技術細節上的疑義或需進一步確認,建議讀者參考原始技術文件或與相關技術人員聯繫。

嘿!各位對最新科技充滿好奇的朋友們,以及我們在第一線衝鋒陷陣的AE和銷售夥伴們,大家好!

在AI浪潮席捲全球的今天,將強大的AI能力從雲端帶到邊緣設備,已經是產業發展的關鍵趨勢。想像一下,在工廠產線上即時辨識瑕疵、在智慧零售店分析顧客動線、或是在智慧城市中監控交通流量,這些都仰賴邊緣AI的落地實現。

然而,要在各式各樣的邊緣硬體上部署AI應用,常常會遇到軟體環境複雜、相依性衝突、部署耗時等挑戰。這時候,我們就需要一個更聰明、更有效率的方法!

在Advantech,我們的工程師團隊持續探索如何讓邊緣AI的部署變得像「一鍵安裝」一樣簡單。今天,我們就要帶大家一窺我們在內部進行的一項有趣實驗,看看如何利用 Docker 容器技術,在我們的硬體平台上輕鬆運行AI應用,展現Advantech在軟硬體整合上的研發實力!

為什麼是 Docker 容器?邊緣AI部署的新利器!
#

在深入實驗細節之前,讓我們先簡單聊聊為什麼容器技術(特別是 Docker)會是邊緣AI部署的絕佳幫手。

傳統上,當我們要在一個新的邊緣設備上運行AI程式時,需要手動安裝一大堆軟體套件、函式庫,處理各種版本相容性問題,光是環境設定就可能耗費大量時間和精力。而且,如果要在不同型號或不同作業系統的設備上部署,這個過程可能還要重複好幾次,甚至需要針對特定硬體重新編譯程式,非常繁瑣。

這時候,Docker 容器就登場了!你可以把 Docker 想像成一個標準化的「軟體小包裹」,它把應用程式本身以及所有它需要的運行環境(作業系統、函式庫、設定檔等)全部打包在一起。這個小包裹可以在任何支援 Docker 的地方運行,而且運行起來的行為幾乎一模一樣,不受底層硬體或作業系統差異的影響。

對於邊緣AI來說,這意味著:

  • 簡化部署: 只需要將打包好的容器映像檔載入設備並運行即可,大大減少手動設定的時間。
  • 環境一致性: 無論在哪台設備上運行,AI應用都在一個隔離且標準化的環境中,減少「在我的電腦上可以跑」的問題。
  • 資源隔離: 容器之間相互隔離,一個應用的問題不會影響到其他應用。
  • 版本管理: 可以輕鬆管理不同版本的AI應用或模型。

Advantech 致力於提供完整的邊緣AI解決方案,這不僅包含強大的硬體平台,更涵蓋了優化的軟體堆疊。透過將AI應用容器化,我們能為客戶提供更快速、更可靠的部署體驗。

實驗大公開:在 Advantech 平台上運行容器化 AI Demo
#

這次的實驗,我們選擇在搭載特定處理器(註:此處指 RK3588 等具備AI加速能力的晶片)的 Advantech 開發板上進行。我們的目標是驗證:

  1. 能否在預設的作業系統環境下,快速搭建 Docker 運行環境。
  2. 能否順利載入包含 AI 運行環境的 Docker 映像檔。
  3. 能否在容器內成功運行一個需要硬體加速和多媒體處理的 AI 應用(例如:物件偵測),並將結果透過 HDMI 輸出。

接下來,就讓我們跟著工程師的腳步,看看實驗過程是怎麼進行的吧!

實驗環境準備
#

我們的實驗平台預裝了 Debian 12 作業系統,核心版本為 6.1.75,並已安裝在 eMMC 儲存中。預設的使用者帳號是 linaro,密碼是 123456,root 帳號的密碼也是 123456

安裝必要的 Host OS 套件
#

首先,我們需要在主機作業系統 (Host OS) 上安裝一些必要的工具,以便後續操作 Docker 和相關功能。這一步驟很簡單,只需要執行以下指令:

apt-get install rsync sysstat libqrencode-dev libqt5charts5 libqt5charts5-dev

這些套件包含了檔案同步工具 (rsync)、系統監控工具 (sysstat) 以及一些圖形介面和開發所需的函式庫。

準備 AI 容器映像檔
#

我們的 AI 應用運行在一個特別準備好的 Docker 容器裡。這個容器的作業系統也是 Debian 12,並且已經預裝了許多重要的 AI 和多媒體處理套件,包括:

  • rknn:2.0.0b0 (這是用於利用硬體AI加速器的函式庫)
  • GStreamer:1.22.9 (強大的多媒體處理框架,用於處理影像串流)
  • glmark2:2023.01 (圖形效能測試工具)
  • opencv:4.6.0 (電腦視覺函式庫)
  • python:3.11.2 (程式語言環境)
  • glibc:2.36 (C標準函式庫)
  • gcc:12.2.0 (C/C++ 編譯器)

這些套件的預裝,確保了 AI 應用在容器內擁有一個完整且一致的運行環境。

快速啟動容器化 AI Demo
#

接下來,就是將這個 AI 環境載入並運行起來的關鍵步驟了!

  1. 下載 Docker 映像檔: 我們會先將包含上述環境的 Docker 映像檔下載到主機作業系統的特定路徑,例如 /userdata/debian12_rk3588_v1.0.tar。這個檔案就是我們預先打包好的 AI 運行環境。
  2. 移動 Docker 資料根目錄 (可選但建議): 為了確保 Docker 有足夠的儲存空間,我們將 Docker 的資料儲存路徑移動到 /userdata/ 分區。這是一個常見的做法,特別是在儲存空間有限的嵌入式設備上。
    sudo systemctl stop docker
    sudo mkdir -p /userdata/docker
    sudo rsync -aqxP /var/lib/docker/ /userdata/docker/
    sudo nano /etc/docker/daemon.json
    
    編輯 daemon.json 檔案,加入或修改以下內容:
    {
    "data-root": "/userdata/docker"
    }
    
    sudo systemctl start docker
    
    這段操作的意思是:先停止 Docker 服務,建立新的資料夾,將原有的 Docker 資料複製過去,然後修改 Docker 的設定檔,告訴它以後把資料存在新的位置,最後重新啟動 Docker 服務。
  3. 載入並檢查 Docker 映像檔: 現在,我們將下載好的映像檔載入到 Docker 中。
    sudo docker load < /userdata/debian12_rk3588_v1.0.tar
    sudo docker images
    
    docker load 指令就像是把一個打包好的虛擬機器映像檔解壓縮並註冊到 Docker 系統中。docker images 則是用來確認映像檔是否成功載入。
  4. 連接硬體並運行 AI Demo: 準備就緒!將 HDMI 線連接到顯示器,並將 UVC 攝影機連接到開發板的 USB 埠。然後,執行以下指令來啟動 AI 物件偵測 Demo:
    docker run -d -it --privileged --rm --device=/dev/dri/card0 -e DISPLAY=$DISPLAY -e XAUTHORITY=/tmp/.Xauthority -v ~/.Xauthority:/tmp/.Xauthority:ro -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v /dev/:/dev/ your-docker-image /bin/bash -c ai-demo
    
    這行指令看起來有點長,但別擔心,我們可以簡單解釋一下它的作用:
    • docker run: 啟動一個新的容器。
    • -d -it: 讓容器在背景運行 (-d),並保持互動模式 (-it)。
    • --privileged: 給予容器較高的權限,以便存取硬體資源。
    • --rm: 容器停止後自動移除,保持系統整潔。
    • --device=/dev/dri/card0: 將顯示卡設備映射到容器內,讓容器可以進行圖形輸出。
    • -e DISPLAY=$DISPLAY -e XAUTHORITY=/tmp/.Xauthority -v ~/.Xauthority:/tmp/.Xauthority:ro -v /tmp/.X11-unix:/tmp/.X11-unix:rw: 這些參數是為了讓容器能夠存取主機的 X Server,以便將圖形介面(也就是我們的影像畫面)顯示出來。
    • -v /dev/:/dev/: 將主機的 /dev 目錄映射到容器內,這樣容器才能存取連接的攝影機設備 (/dev/video0 等)。
    • your-docker-image: 這裡替換成你剛才載入的 Docker 映像檔名稱。
    • /bin/bash -c ai-demo: 在容器啟動後,執行 /bin/bash -c "ai-demo" 這個指令,也就是啟動我們預裝在容器裡的 AI 物件偵測應用程式。

執行完畢後,神奇的事情發生了!您將會在連接的 HDMI 顯示器上看到來自攝影機的即時影像串流,並且畫面中的物件(例如:人、車)會被框選出來,並標示出類別!

ai_demo_1747097737452.png

這張圖片就是實驗成功的證明!我們成功地在容器內運行了需要硬體加速的 AI 應用,並將結果即時顯示出來。

實驗成果與價值:加速您的邊緣AI落地
#

這次實驗的成功,不僅僅是跑通了一個 Demo,它更展現了 Advantech 在邊緣AI領域的關鍵能力:

  • 軟硬體深度整合: 我們提供的硬體平台能夠完美支援 Docker 容器技術,並能讓容器內的應用程式有效利用底層的 AI 加速器和多媒體處理能力。
  • 預驗證的軟體堆疊: 我們預先在容器中打包並驗證了 AI 應用所需的各種函式庫和工具,省去了客戶自行搭建環境的麻煩。
  • 簡化部署流程: 透過 Docker,原本複雜的 AI 應用部署過程變得標準化且快速,大大降低了技術門檻和部署成本。

這意味著,無論您是系統整合商、應用開發者,或是對邊緣AI感興趣的潛在客戶,Advantech 都能提供一個強大且易於使用的平台,幫助您快速將創意轉化為實際的邊緣AI解決方案。從智慧製造的品質檢測、智慧零售的顧客行為分析,到智慧交通的車流監控,我們的平台都能成為您實現這些應用的堅實基礎。

相較於傳統需要針對不同硬體和作業系統進行繁瑣移植和測試的方式,基於容器的部署方案顯著提升了效率和可靠性。這正是 Advantech 持續投入研發,為客戶創造價值的體現。

結論與未來展望
#

這次利用 Docker 容器在 Advantech 平台上成功運行邊緣 AI Demo 的實驗,再次證明了容器技術在簡化邊緣部署方面的巨大潛力。它讓我們能夠更專注於 AI 模型的開發和應用邏輯的實現,而不是被底層複雜的環境配置所困擾。

展望未來,Advantech 將持續深化在邊緣 AI 領域的研發投入。我們不僅會推出更多搭載高效能 AI 處理器的硬體平台,更會不斷優化我們的軟體服務,包括提供更多預驗證的容器映像檔、開發更便捷的容器管理工具,以及探索與雲端 AI 平台的無縫整合。

我們相信,透過不斷的技術創新和軟硬體整合,Advantech 能夠成為您在邊緣 AI 旅程中最值得信賴的夥伴,共同開啟更多令人興奮的智慧應用可能性!

如果您對 Advantech 的邊緣 AI 解決方案感興趣,或想了解更多關於容器化部署的細節,歡迎隨時與我們的 AE 或銷售團隊聯繫,我們非常樂意與您交流!

相關文章

讓AI更貼近你!研華如何在邊緣裝置上玩轉小型語言模型 (sLLM)
· loading
研華AI大解密:用OpenWebUI打造你專屬的RAG問答系統,AIR-310實戰登場!
· loading
解鎖未來醫療!Advantech AI 實驗室揭秘:當 MONAI 遇上 Holoscan
· loading