乐趣区

关于java:Oracle开源Java机器学习库Tribuo

近日,Oracle 开源了一个用 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 示意该机器学习库曾经在公司的外部生产中运行了数年。

退出移动版