UStackUStack
Deeplearning4j icon

Deeplearning4j

Deeplearning4j 是 JVM 深度學習工具套件,支援 Java 模型訓練與執行,並透過 cpython bindings 與 tensorflow-java、onnxruntime 互通。

Deeplearning4j

Deeplearning4j 是什麼?

Deeplearning4j 是用於在 JVM 上執行深度學習的工具套件。它提供基於 Java 的訓練與模型執行,同時透過 cpython bindings 執行 Python、模型匯入支援,以及與 tensorflow-java 和 onnxruntime 等執行階段的互通,支援與 Python 生態系統的互通。

該專案設計為既有 Python 或 C++ 工作流程的補充,也可作為獨立選項,用於建置與部署模型至 JVM 執行有用的環境。

主要功能

  • 以 JVM 為主的深度學習執行:以 JVM 作為主要執行階段,訓練與執行深度學習模型。
  • 透過 cpython bindings 與 Python 生態系統互通:透過 cpython bindings 執行 Python 元件,實現與 Python 工作流程的整合。
  • 模型匯入與重新訓練支援:匯入並重新訓練來自常見 Python 框架如 Pytorch、Tensorflow 和 Keras 的模型。
  • 透過 Samediff 執行圖形:使用 Samediff 作為執行複雜計算圖形的低階框架,它是執行 ONNX 和 TensorFlow 圖形的基礎 API。
  • Java 的 ND4J 數值運算:使用 Nd4j 作為基於 Java 的張量/數值庫,結合 numpy 風格與 TensorFlow/PyTorch 風格的操作。
  • 跨裝置 C++ 數學核心 (Libnd4j):使用 Libnd4j,這是輕量級獨立 C++ 庫,旨在讓數學程式碼在不同裝置上執行並跨裝置類型最佳化。
  • 生產導向的 Python 腳本執行 (Python4j):使用 Python4j 在生產環境中執行 Python 腳本。
  • Apache Spark 整合:使用提供的整合,在 Apache Spark 上執行深度學習管線。
  • 資料轉換為張量 (Datavec):將原始輸入轉換為適合神經網路訓練與執行的張量。

如何使用 Deeplearning4j

  1. 從網站的 Quickstart 開始(專案推薦),了解從何處入手。
  2. 若遇到相依性問題,使用網站的 Required Dependencies 指南來調整您的環境。
  3. 選擇符合您抽象層級的元件:
    • 使用 Deeplearning4j 文件,針對多層網路與計算圖形等高階 API。
    • 若想使用低階、類似 PyTorch/TensorFlow 的工作流程(內建自動微分),則使用 Samediff
  4. 資料準備與模型輸入,請參閱 Datavec 文件。
  5. 針對特定環境的部署或管線執行,請參閱 Python4jApache Spark 及其他相關整合文件區段。

使用案例

  • 匯入並重新訓練 Python 建置的模型:將 Pytorch、Tensorflow 或 Keras 的模型帶入 JVM 工作流程,視需要重新訓練,並使用 Deeplearning4j 元件繼續模型開發。
  • 在 JVM 微服務中部署模型:將訓練或匯入的模型封裝至基於 JVM 的服務,使用 Deeplearning4j 作為推論或服務邏輯的執行層。
  • 在 Apache Spark 上執行深度學習管線:使用 Apache Spark 整合,在 Spark 環境中執行深度學習管線。
  • 執行或整合 TensorFlow/ONNX 圖形:使用 Samediff 作為圖形執行框架,以及其作為 ONNX 和 TensorFlow 圖形執行的基礎 API。
  • 將原始資料轉換為訓練用張量:使用 Datavec 將原始輸入轉換為適合神經網路訓練與執行的張量格式。

常見問題

Deeplearning4j 只適用於 Java,還是能與 Python 搭配使用?

Deeplearning4j 是 JVM 工具套件,但專案描述透過 cpython bindings、模型匯入支援,以及與 tensorflow-java 和 onnxruntime 等其他執行階段的互通性,與 Python 生態系統互通。

低階圖形工作該用哪個子模組?

網站描述 Samediff 為低階框架,類似 PyTorch 或 TensorFlow 的精神,用於建構具備內建自動微分的神經網路。

Nd4j 用於什麼?

Nd4j 被描述為基於 Java 的「numpy++」函式庫,提供 numpy 運算,以及 TensorFlow/PyTorch 風格的運算。

專案是否支援資料預處理?

是的。Datavec 子模組是資料轉換函式庫,將原始輸入資料轉換為適合神經網路執行的張量。

Spark 如何融入技術堆疊?

網站包含 Apache Spark Integration 文件區段,顯示可使用提供的整合在 Spark 中執行深度學習管線。

替代方案

  • PyTorch / TensorFlow (原生 Python):若想使用無 JVM 執行的原生 Python 工作流程,這些框架專注於 Python 中的模型定義與訓練。
  • TensorFlow Java 或 ONNX Runtime (執行階段導向方法):若主要目標是執行匯出的模型(例如 TensorFlow 或 ONNX),而非完整的 JVM 深度學習工作流程,這些執行階段函式庫強調其各自生態系統中的執行。
  • Spark 上的通用 ML 管線 (無特定 JVM 深度學習工具套件):可在 Spark 中執行預處理與分散式處理,並依賴其他模型執行元件,但相較單一整合堆疊,您需自行組裝更多零件。
  • 類 NumPy 的 Java 張量函式庫 (無完整深度學習堆疊):若僅需張量數學,替代方案可能涵蓋數值運算,但不一定包含此處描述的深度學習圖形、資料轉換與互通性元件。
Deeplearning4j | UStack