Oracle開源Java機器學習庫Tribuo

近日,Oracle 開源了一個用 Java 編寫的機器學習庫,把其命名爲 Tribuo。數據庫

學習庫提供了分類、迴歸、聚類、模型開發等的工具,也爲許多流行的第三方機器學習庫提供了統一的接口。使用 Tribuo 從其餘系統和語言部署模型很方便,它提供了指向 ONNX Runtime、TensorFlow 和 XGBoost 的接口。其中,對 onnx 模型的支持容許在 Java 中部署一些 Python 軟件包(例如 pytorch)訓練的模型。編程

Oracle 提到,他們這些年來致力於將機器學習模型部署到大規模的生產系統中。在這個過程當中,他們發現,企業的指望每每與現有的機器學習庫提供的功能之間存在着鴻溝。segmentfault

Oracle開源Java機器學習庫Tribuo

舉個例子,大型的軟件系統一般但願可使用可自我描述的構造塊,並能夠判斷什麼時候的輸入與輸出是無效的。然而大多數機器學習庫仍然依靠一堆浮點數組來訓練模型。在部署時,輸入是一個浮點數組,而且產生另外一個浮點數組做爲預測輸出。關於這些數組中任何一個的含義,或輸入/輸出浮點數應該是什麼樣的描述,都留給 Wiki 和錯誤跟蹤器,或被寫爲代碼註釋。Oracle 指出,開發者不會但願爲每一個機器學習模型添加另外一個數據庫表只是爲了解釋輸出浮動數組的含義。數組

另外一方面,在生產中跟蹤模型也很棘手,由於它須要外部系統來保持已部署模型與訓練過程和數據之間的連接。Oracle 的機器學習研究小組認爲,將這些額外的要求直接嵌入機器學習庫會好得多。機器學習

編程語言上,大多數流行的機器學習庫都用 Python 和 R 等動態語言編寫,而多數企業系統是基於 Java 等靜態類型語言的。這就要求企業同時使用不一樣語言來編寫代碼,並確保其運行,也會所以產生更多的代碼維護成本和系統開銷。編程語言

這次開源的 Tribuo 則可以妥善處理這些問題。Tribuo 具備數據加載管道、文本處理管道和功能級別轉換,可在數據加載後對其進行操做。它知道本身輸入/輸出了什麼,並能夠描述每一個輸入/輸出的範圍和類型。工具

使用 Tribuo 從其餘系統和語言部署模型也很方便,它提供了指向 ONNX Runtime、TensorFlow 和 XGBoost 的接口。其中,對 onnx 模型的支持容許在 Java 中部署一些 Python 軟件包(例如 pytorch)訓練的模型。學習

全部模型和評估都包括一個可序列化的出出對象,該對象記錄了模型或評估的建立時間、數據的身份以及應用於它的任何轉換,以及培訓師的超等值器。在評估中,此來源信息還包括使用的特定模型。證實信息能夠提取爲 JSON,或者直接使用 Java 序列化進行序列化。對於生產部署,能夠編輯來源信息,並替換爲哈希,以便經過外部系統提供模型跟蹤。spa

Tribuo 目前支持 Java 8 及更高版本。Oracle 表示該機器學習庫已經在公司的內部生產中運轉了數年。3d

segmentfault公衆號

相關文章
相關標籤/搜索