前言:AI 模型落地,究竟有多難? #
想像一下,超強大的 AI 模型不只在雲端運算,還能直接部署到工廠、醫院、交通樞紐等各種「邊緣裝置」——這就是「邊緣 AI」的魔力!但現實是:大型語言模型(LLM)超級大,環境複雜,部署和管理真的會讓人頭痛。這時,研華 DeviceOn 管理平台搭配 NVIDIA LLM-NIM 推論服務,就是開發者和 IT 人員的最佳救星!
背景與技術概述:LLM-NIM 與 DeviceOn 到底是什麼? #
-
NVIDIA LLM-NIM(Inference Microservice)
想像它是一個「模型即服務」的微型容器,把複雜的推論引擎(像 TensorRT-LLM、Triton Server)都包在一起,部署就像拉開冰箱拿出飲料那麼簡單! -
Advantech DeviceOn
研華自家雲端設備管理平台,擁有強大的 OTA(空中更新)、容器管理、遠端監控等功能。你只要一個平台,就能遠端派送、更新、啟動和監控 AI 模型,輕鬆管理數百台邊緣設備。
市場需求?
各行各業都想把 AI 直接放到現場,實現即時判斷、自動化決策。從智能製造、智慧醫療到交通監控,邊緣 AI 已經是不可逆的趨勢!
實作過程與重點發現:模型部署也能「一條龍」 #
Step 1:基礎啟動,官方模型一鍵搞定 #
只要有 NVIDIA GPU(像 RTX 4000 Ada,20GB VRAM)、Docker、NVIDIA Container Toolkit,以及 NGC 帳號,就能直接拉取 LLM-NIM 的標準模型:
export PROJ_DIR=$(pwd)
export NIM_CACHE_DIR="$PROJ_DIR/nim-cache"
mkdir -p "$NIM_CACHE_DIR"
chmod -R a+w "$NIM_CACHE_DIR"
echo "NGC_API_KEY=nvapi-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" > my.env
小技巧
啟動前先查詢最適合你硬體的 Profile ID,避免「硬體不合」的窘境:
docker run -it --rm \
--gpus all \
--shm-size=16GB \
--env-file ./my.env \
-v "$NIM_CACHE_DIR:/opt/nim/.cache" \
-u $(id -u) \
nvcr.io/nim/meta/llama-3.1-8b-instruct:1.15.1 \
list-model-profiles
有了 Profile ID,就能根據你的 GPU 數量選擇最佳設定。
如果 VRAM 不夠,記得用 NIM_MAX_MODEL_LEN 調整序列長度,避免「記憶體爆炸」:
docker run -it --rm \
--gpus='"device=0"' \
--shm-size=16GB \
--env-file ./my.env \
-v "$NIM_CACHE_DIR:/opt/nim/.cache" \
-u $(id -u) \
-p 8001:8000 \
-e NIM_MAX_MODEL_LEN=7520 \
nvcr.io/nim/meta/llama-3.1-8b-instruct:1.15.1
Step 2:進階玩法,Hugging Face 模型也能上 #
想要用自訂模型或量化版本?沒問題!
先用 Python 腳本下載模型到本地快取:
export CURRENT_DIR=$(pwd)
export NIM_CACHE_DIR="$CURRENT_DIR/model_cache"
export NIM_MODEL_NAME=hf://meta-llama/Llama-3.1-8B-Instruct
export HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
mkdir -p "$NIM_CACHE_DIR"
chmod -R a+w "$NIM_CACHE_DIR"
python download_hf_model.py \
--download_base_path $NIM_CACHE_DIR \
--model_name $HF_MODEL_NAME \
--hf_token $HF_TOKEN
然後驗證模型和硬體是否「天作之合」:
docker run -it --rm \
--runtime=nvidia \
--gpus all \
--shm-size=16GB \
-e NIM_MODEL_NAME \
-v "$NIM_CACHE_DIR:/opt/nim/.cache" \
nvcr.io/nim/nvidia/llm-nim:<IMAGE_TAG> \
list-model-profiles
看到下方 Profile ID,根據你的 GPU 選擇 tp1(1卡)、tp2(2卡)、tp4(4卡):
MODEL PROFILES
- Compatible with system and runnable:
- 19214bd8cb3da329701e81c3aba5a51f966e25178a955b726003a9e051489b5b (vllm-bf16-tp4-pp1-...)
- 6a7decb8c10747c7d32fb1dc07fd74c83a683771432175d30516e955226e74a5 (vllm-bf16-tp2-pp1-...)
- 574eb0765118b2087b5fd6c8684a79e682bd03062f80343cfd9e2140ffa962cd (vllm-bf16-tp1-pp1-...)
啟動服務:
export NIM_MODEL_PROFILE=<您的_PROFILE_ID>
docker run -it --rm \
--runtime=nvidia \
--gpus all \
--shm-size=16GB \
-e NIM_MODEL_NAME \
-e NIM_MODEL_PROFILE \
-v "$NIM_CACHE_DIR:/opt/nim/.cache" \
-p 8001:8000 \
nvcr.io/nim/nvidia/llm-nim:<IMAGE_TAG>
Step 3:服務驗證,OpenAI API 相容超方便 #
啟動成功後,日誌會出現:
An example cURL request:
curl -X 'POST' \
'http://0.0.0.0:8000/v1/chat/completions' \
...
用 cURL 測試:
curl -X 'POST' \
'http://localhost:8001/v1/chat/completions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "meta-llama/llama-3.1-8b-instruct",
"messages": [
{
"role":"user",
"content":"Hello! How are you?"
}
],
"max_tokens": 50
}'
成果與應用:DeviceOn 讓 LLM 部署進入「懶人模式」 #
模型分發不再煩惱:OTA 一鍵派送 #
LLM 模型動輒數 GB~數十 GB,直接在容器啟動時下載?太慢!最佳做法是提前用 DeviceOn OTA 分發:
- 下載模型並壓縮為 ZIP。
- 上傳到 DeviceOn Portal 的 OTA 管理。
- 選定目標裝置群組,派送到指定路徑(如
/var/lib/deviceon/nim-cache)。
記得設定目錄權限,避免「Permission denied」:
sudo mkdir -p /var/lib/deviceon/nim-cache
sudo chmod -R 777 /var/lib/deviceon/nim-cache
部署指令再進化:DeviceOn 介面化,操作零門檻 #
傳統 Docker 指令繁瑣,DeviceOn 直接圖形化管理:
- 進入 Container Management,點「Create Container」。
- 填入容器名稱、映像檔(如
nvcr.io/nim/meta/llama-3.1-8b-instruct:1.15.1)。 - 輸入啟動參數(可用 env 檔設定 API Key 等敏感資訊)。
- 一鍵轉換成 JSON 格式,部署!
服務驗證與測試:部署成功,只需簡單兩步 #
-
檢查容器日誌
DeviceOn 介面點 Logs,看到An example cURL request:或Uvicorn running on http://0.0.0.0:8000就是成功! -
功能測試
用 cURL 發送推論請求,收到 JSON 回應就大功告成:
curl -X 'POST' \
'http://<邊緣裝置IP>:8001/v1/chat/completions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "meta-llama/llama-3.1-8b-instruct",
"messages": [{"role":"user", "content":"Hello, DeviceOn!"}],
"max_tokens": 50
}'
常見問題與排雷指南 #
- OOM/記憶體不足?
降低NIM_MAX_MODEL_LEN,或設定NIM_KVCACHE_PERCENT=0.5釋放記憶體。 - 權限不足?
用 DeviceOn Shell Commandchmod -R 777 /var/lib/deviceon/nim-cache。 - 下載緩慢?
先在頻寬充足的環境下載,再用 OTA 分發到邊緣裝置。
結論與未來展望:邊緣 AI 部署,研華持續領航! #
這次 DeviceOn x NVIDIA LLM-NIM 整合示範,讓 AI 大模型的部署、分發、更新與維護一切變得簡單、快速又安全。
不論你是 AE、業務還是企業 IT,現在都能用最直覺的方式,把 AI 直接送到現場,開創智慧產業新局。
研華科技(Advantech)持續深耕 AI 邊緣運算領域,未來將提供更多自動化、智慧化的工具,協助客戶應對不斷變化的市場需求,實現真正的大規模智慧部署!
參考資源