如果您曾嘗試在日常硬體上加速 AI 推論,卻在慢速 CPU 執行和 GPU 的複雜性之間感到困頓,那麼 OpenVINO 可能就是您所缺少的環節。它由 Intel 打造,能將常見的深度學習模型轉化為快速、可攜式的應用程式,並在 CPU、整合型 GPU 甚至 NPU 上執行——而無需您重寫整個堆疊。
在這份以實用、解決方案為導向的指南中,您將確切地學習如何使用 OpenVINO——從安裝到模型轉換、最佳化和部署。我們將涵蓋最常見的工作流程,分享範例程式碼,並重點介紹重要的效能提示。
您將快速了解的內容:
- 使用 Model Optimizer 轉換模型 (ONNX/TF/PyTorch 匯出)
- 在 Python 中使用 OpenVINO Runtime 執行推論
- 透過最少的程式碼變更,跨 CPU、iGPU 和 NPU 進行部署
什麼是 OpenVINO 以及為何使用它?
OpenVINO 是一個開放原始碼工具包,用於在 Intel 硬體及其他平台上最佳化和部署 AI 模型。當您想要可預測的效能、低延遲和可攜性時,它在生產推論方面尤其強大——如果您不需要,則無需繁重的 CUDA 設定。它支援流行的模型格式(如 ONNX),並與常見框架整齊地整合。
主要優勢:
- 速度:最佳化的核心和圖形轉換可加速 CPU 和 GPU 上的推論。
- 可攜性:相同的應用程式可以透過單行裝置變更,鎖定 CPU、iGPU、NPU。
- 效率:量化、模型壓縮和執行階段最佳化可降低延遲和記憶體。
- 簡單性:簡潔的 Python API 和 CLI 工具使其對初學者友善。
步驟 1:安裝 OpenVINO
對於大多數使用者來說,最快的方法是透過 pip:
- 確保已安裝 Python 3.9–3.12 (64 位元)。
- 安裝:
pip install -U openvino openvino-dev
- 驗證:
python -c "import openvino; print(openvino.version)"
如果您喜歡官方逐步資源,或者想要追蹤特定版本的注意事項和平台支援,請從 OpenVINO Get Started 文件和目前的說明文件中心開始。如需快速 pip 安裝參考和相容性,請參閱 PyPI 頁面。
步驟 2:準備您的模型(建議使用 ONNX)
OpenVINO 在 IR(中繼表示)模型 (.xml/.bin) 上執行效果最佳。大多數使用者首先匯出到 ONNX,然後使用 Model Optimizer 轉換為 IR。
常見路徑:
- PyTorch:torch.onnx.export → ONNX → OpenVINO IR
- TensorFlow/Keras:SavedModel → ONNX (透過 tf2onnx) → OpenVINO IR
- 現有 ONNX:直接轉換為 OpenVINO IR
快速範例 (PyTorch → ONNX):
- 在 Python 內部將您的模型匯出到 ONNX:
torch.onnx.export(model, dummy_input, "model.onnx", opset_version=17, do_constant_folding=True)
- 使用 onnx.checker.check_model 驗證 ONNX,或在 onnxruntime 中執行一次。
步驟 3:使用 Model Optimizer 轉換為 OpenVINO IR
Model Optimizer 將框架模型轉換為 OpenVINO IR 並應用圖形層級最佳化。安裝 openvino-dev 後,您可以執行:
- mo --input_model model.onnx --output_dir ov_model
這會產生 model.xml 和 model.bin。
有用的標誌:
- --input_shape:如果您的模型是動態的,則強制輸入維度。
- --mean_values/--scale_values:在預處理期間標準化輸入。
- --compress_to_fp16:降低精確度和模型大小,以提高速度/記憶體。
提示:如果您要鎖定低延遲 CPU 推論,FP16 通常會在速度和準確性之間取得很好的平衡。保留基準 FP32 IR 以進行 A/B 測試。
步驟 4:使用 OpenVINO Runtime (Python) 執行推論
核心執行階段工作流程很簡單。
範例(影像分類):
from openvino.runtime import Core
import numpy as np
import cv2
core = Core
model = core.read_model("ov_model/model.xml")
compiled_model = core.compile_model(model, device_name="CPU") # options: "CPU", "GPU", "AUTO", "NPU" (where supported)
input_layer = compiled_model.inputs. 如果您想要分析 CPU 熱點和執行緒利用率,Intel VTune Profiler 有一個專門針對 OpenVINO 應用程式的配方。
步驟 6:使用量化 (INT8) 進行最佳化
訓練後量化 (PTQ) 可以縮小模型大小並提高速度,而最小化準確性損失:
- 使用 openvino-dev 隨附的內建 POT(訓練後最佳化工具)。
- 匯出 INT8 IR 並對其進行基準測試。如果準確性不足,請嘗試混合精確度 (INT8 + FP16) 或選擇性量化。
常見的量化流程:
- 設定 POT 量化參數(per-tensor vs per-channel、symmetric vs asymmetric)。
- 比較 KPI:延遲、輸送量、top-1/top-5 準確性或特定於任務的指標。
步驟 7:以正確的方式處理預處理
模型 I/O 期望通常不同。標準化您的預處理:
- 調整大小/中心裁剪到預期大小(例如,224×224)
您可以使用 OpenVINO Runtime 中的 PrePostProcessor API 將預處理步驟嵌入到 IR 中,以便您的應用程式程式碼保持簡潔且可攜式。
範例程式碼片段:
from openvino.runtime import Core, Layout, Type
from openvino.preprocess import PrePostProcessor
core = Core
model = core.read_model("ov_model/model.xml")
ppp = PrePostProcessor(model)
ppp.input.tensor.set_layout(Layout("NHWC"))
ppp.input.preprocess.convert_element_type(Type.f32)
ppp.output.tensor
model = ppp.build
compiled_model = core.compile_model(model, "AUTO")
步驟 8:擴展到視訊和串流
對於視訊分析,您可以將 OpenVINO 推論與 OpenCV 或 GStreamer 建立管道。使用非同步推論請求和批次處理,以保持高 FPS 和低延遲。
提示:
- 使用非同步 API:多個進行中的請求可提高 CPU 上的輸送量。
- 在多核心系統上固定執行緒或調整串流,以獲得可預測的延遲。
步驟 9:跨裝置智慧部署
OpenVINO 的超能力之一是無縫裝置目標鎖定:
- CPU:強大的預設值;廣泛可用;非常適合邊緣和伺服器。
- GPU(整合型):無需離散 GPU 即可實現良好的加速;驅動程式品質很重要。
- AUTO:讓執行階段選擇;非常適合可攜式應用程式。
從 AUTO 開始以實現可攜性。如果您需要更嚴格的控制,請對 CPU 與 GPU 進行基準測試,並根據每個模型做出決定。
按任務劃分的實用範例
- 轉換 ONNX → IR;使用 FP16;AUTO 裝置;非同步推論。
- 如果您需要 >2 倍的輸送量,但準確性略有下降,請進行量化。
- 使用 INT8 進行邊緣部署,以在 CPU 上實現即時性。
- 使用向量化 NumPy 最佳化後處理(argmax、色彩映射)。
- 在可用時使用 OpenVINO-text 最佳化。
測試和驗證檢查表
- 比較小測試集的輸出與基準(PyTorch/TF/ONNXRuntime)。
疑難排解快速解答
- 更新 openvino-dev;嘗試更新的 opset;簡化 ONNX 圖形 (onnxsim)。
- 提供 --input_shape;確認動態輸入支援。
- 使用 FP16/INT8、非同步 API、調整執行緒/串流;執行 benchmark_app。
- 更新驅動程式;嘗試 device="AUTO";檢查支援的 GPU 的文件。
學習資源和官方文件
- 從這裡開始,取得實作教學課程、筆記本和設定指南:OpenVINO Get Started
- API、Model Optimizer、POT、範例的完整文件入口網站:OpenVINO Docs
- 用於快速安裝和相容性的 Pip 安裝參考:PyPI openvino
- OpenVINO 應用程式的分析和效能分析:Intel VTune guide
順帶一提,如果您正在起草有關最佳化和部署的技術內容、教學課程或內部手冊,像 Sider.AI 的寫作工作區這樣的工具可以幫助您快速地將程式碼、基準和敘述組合在一起——在記錄複雜的 OpenVINO 效能實驗或多裝置比較時非常有用。 可行的後續步驟
- 使用 pip 安裝 OpenVINO 並在範例 IR 上執行 benchmark_app。
- 轉換已知的良好 ONNX 模型(例如,ResNet50)並驗證準確性。
- 嘗試 FP16,然後使用 POT 嘗試 INT8;測量延遲和輸送量。
- 在 CPU、GPU 和 AUTO 之間切換 device_name;選擇最適合您目標硬體的。
- 如果您需要擠出額外的效能,請使用 VTune 進行分析。
主要重點
- OpenVINO 使 AI 推論快速、可攜且具備硬體感知能力。
- 裝置靈活性 (CPU/iGPU/NPU/AUTO) 表示一個程式碼庫,多個目標。
常見問題
Q1:我如何以最簡單的方式安裝 OpenVINO?
使用虛擬環境並執行:pip install -U openvino openvino-dev。使用快速匯入檢查進行驗證,並查閱官方 Get Started 文件以了解平台詳細資訊。
Q2:如何將我的模型轉換為 OpenVINO IR?
將您的模型匯出到 ONNX,然後執行 Model Optimizer (mo) 以產生 .xml/.bin IR 檔案。提供輸入形狀並考慮使用 FP16 以提高速度和記憶體。
Q3:OpenVINO 是否可以在不更改程式碼的情況下在 CPU 和整合型 GPU 上執行?
是。使用 device_name="AUTO"、"CPU" 或 "GPU" 編譯模型。您可以使用單個參數切換裝置,同時保持程式碼的其餘部分不變。
Q4:如何使用 OpenVINO 加速推論?
使用 FP16 或 INT8 量化、非同步推論 API 和 benchmark_app 來調整執行緒和串流。使用 VTune 進行分析以進行更深入的瓶頸分析。
Q5:OpenVINO 是否支援 NLP 和生成模型?
是。它支援一系列 NLP 和擴散模型;使用 FP16 並考慮使用 INT8 進行轉換。在最佳化後驗證準確性並測量負載下的延遲。