如何使用 ONNX Runtime 將機器學習新增到您的 Web 應用程式

ONNX Runtime Web 使您能夠使用 JavaScript API 和庫在 Web 應用程式中執行和部署機器學習模型。本頁面概述了開發過程中的一般流程。

您還可以根據您的應用程式開發環境,使用 ONNX Runtime 的其他語言庫將機器學習整合到您的 Web 應用程式的伺服器端。

要檢視 Web 開發流程的實際示例,您可以按照以下教程中的步驟 構建一個使用 Next.js 分類影像的 Web 應用程式

有關以下步驟的更多詳細資訊,請參閱 使用 ONNX Runtime 構建 Web 應用程式 參考指南。

ONNX Runtime Web 應用程式開發流程

  1. 選擇部署目標和 ONNX Runtime 包

    ONNX Runtime 可以根據您的應用程式要求以多種不同方式整合到您的 Web 應用程式中。

    • 瀏覽器內推理。使用 onnxruntime-web 包。

      在裝置上和瀏覽器中進行推理都有好處。

      • 速度更快。 是的,對於已最佳化以在低功耗硬體上執行的模型,在客戶端直接進行推理可以大大縮短推理時間。
      • 更安全 並有助於隱私。由於資料在推理過程中不會離開裝置,因此這是一種更安全的推理方法。
      • 可離線工作。 如果您失去網際網路連線,模型仍然能夠進行推理。
      • 成本更低。 您可以透過將推理任務分載到瀏覽器來降低雲服務成本。

      您還可以在 Electron 應用程式的前端使用 onnxruntime-web 包。

      使用 onnxruntime-web,您可以選擇使用 webglwebgpuwebnndeviceType 設定為 gpu)進行 GPU 處理,以及 WebAssembly (wasm,別名為 cpu) 或 webnndeviceType 設定為 cpu)進行 CPU 處理。所有 ONNX 運算子都受 WASM 支援,但目前只有一部分受 WebGL、WebGPU 和 WebNN 支援。

    • JavaScript 伺服器端推理。使用 onnxruntime-node 包。

      您的應用程式可能存在約束,這意味著在伺服器端執行推理會更好。

      • 模型太大 且需要更高的硬體規格。為了在客戶端進行推理,您需要一個足夠小的模型,以便在低功耗硬體上高效執行。
      • 您不希望模型被下載到裝置上。

      您還可以在 Electron 應用程式的後端使用 onnxruntime-node 包。

    • 使用其他語言 API 進行伺服器端推理。使用 ONNX Runtime 的 C/C++ 和其他語言包。

      • 如果您沒有使用 node.js 開發 Web 後端 如果您的 Web 應用程式後端使用其他語言開發,您可以使用所選語言的 ONNX Runtime API。
    • 在 React Native 應用程式中進行推理。使用 onnxruntime-react-native 包。

  2. 我的應用程式使用哪種機器學習模型?

    您需要了解您的 Web 應用程式場景並獲取適合該場景的 ONNX 模型。例如,應用程式是分類影像、在影片流中進行物件檢測、總結或預測文字,還是進行數值預測。

    ONNX Runtime Web 應用程式處理 ONNX 格式的模型。ONNX 模型可以從 ONNX 模型動物園 獲取,也可以從 PyTorch 或 TensorFlow 以及許多其他地方轉換而來。

    您還可以建立特定於您要解決的任務的自定義模型。使用程式碼構建模型或使用低程式碼/無程式碼工具建立模型。檢視以下資源,瞭解建立自定義模型的一些不同方法。所有這些資源都具有匯出為 ONNX 格式的功能,以便您可以使用此模板和原始碼。

  3. 我如何啟動應用程式開發?

    根據您選擇的 Web 框架(例如 vuejs、reactjs、angularjs)啟動您的 Web 應用程式。

    1. 新增 ONNX Runtime 依賴項

    2. 在您的應用程式中消費 onnxruntime-web API

    3. 新增適合您應用程式和模型的前處理和後處理

  4. 我如何最佳化我的應用程式?

    前面步驟中提到的庫和模型可以進行最佳化以滿足記憶體和處理需求。

    a. ONNX 格式的模型可以 轉換為 ORT 格式,以最佳化模型二進位制大小、加快初始化速度和峰值記憶體使用。

    b. ONNX Runtime 本身的大小可以透過 構建自定義包 來減小,該包只包含對您的特定模型的支援。

    c. 調整 ONNX Runtime 推理會話選項,包括嘗試不同的執行提供程式


目錄