Java開發機器學習庫Tribuo
學習庫提供了分類、回歸、聚類、模型開發等的工具,也為許多流行的第三方機器學習庫提供了統一的接口。使用Tribuo從其他系統和語言部署模型很方便,它提供了指向ONNX Runtime、TensorFlow和XGBoost的接口。其中,對onnx模型的支持允許在Java中部署一些Python軟件包(例如pytorch)訓練的模型。
Oracle提到,他們這些年來致力于將機器學習模型部署到大規模的生產系統中。在這個過程中,他們發現,企業的期望往往與現有的機器學習庫提供的功能之間存在著鴻溝。
舉個例子,大型的軟件系統通常希望可以使用可自我描述的構造塊,并可以判斷何時的輸入與輸出是無效的。然而大多數機器學習庫仍然依靠一堆浮點數組來訓練模型。在部署時,輸入是一個浮點數組,并且產生另一個浮點數組作為預測輸出。關于這些數組中任何一個的含義,或輸入/輸出浮點數應該是什么樣的描述,都留給Wiki和錯誤跟蹤器,或被寫為代碼注釋。Oracle指出,開發者不會希望為每個機器學習模型添加另一個數據庫表只是為了解釋輸出浮動數組的含義。
另一方面,在生產中跟蹤模型也很棘手,因為它需要外部系統來保持已部署模型與訓練過程和數據之間的鏈接。Oracle的機器學習研究小組認為,將這些額外的要求直接嵌入機器學習庫會好得多。
編程語言上,大多數流行的機器學習庫都用Python和R等動態語言編寫,而多數企業系統是基于Java等靜態類型語言的。這就要求企業同時使用不同語言來編寫代碼,并確保其運行,也會因此產生更多的代碼維護成本和系統開銷。
此次開源的Tribuo則能夠妥善處理這些問題。Tribuo具有數據加載管道、文本處理管道和功能級別轉換,可在數據加載后對其進行操作。它知道自己輸入/輸出了什么,并可以描述每個輸入/輸出的范圍和類型。
使用Tribuo從其他系統和語言部署模型也很方便,它提供了指向ONNX Runtime、TensorFlow和XGBoost的接口。其中,對onnx模型的支持允許在Java中部署一些Python軟件包(例如pytorch)訓練的模型。
所有模型和評估都包括一個可序列化的出出對象,該對象記錄了模型或評估的創建時間、數據的身份以及應用于它的任何轉換,以及培訓師的超等值器。在評估中,此來源信息還包括使用的特定模型。證明信息可以提取為JSON,或者直接使用Java序列化進行序列化。對于生產部署,可以編輯來源信息,并替換為哈希,以便通過外部系統提供模型跟蹤。
Tribuo目前支持Java 8及更高版本。Oracle表示該機器學習庫已經在公司的內部生產中運轉了數年。