4

近日,Oracle 开源了一个用 Java 编写的机器学习库,把其命名为 Tribuo。

学习库提供了分类、回归、聚类、模型开发等的工具,也为许多流行的第三方机器学习库提供了统一的接口。使用 Tribuo 从其他系统和语言部署模型很方便,它提供了指向 ONNX Runtime、TensorFlow 和 XGBoost 的接口。其中,对 onnx 模型的支持允许在 Java 中部署一些 Python 软件包(例如 pytorch)训练的模型。

Oracle 提到,他们这些年来致力于将机器学习模型部署到大规模的生产系统中。在这个过程中,他们发现,企业的期望往往与现有的机器学习库提供的功能之间存在着鸿沟。

Oracle开源Java机器学习库Tribuo

举个例子,大型的软件系统通常希望可以使用可自我描述的构造块,并可以判断何时的输入与输出是无效的。然而大多数机器学习库仍然依靠一堆浮点数组来训练模型。在部署时,输入是一个浮点数组,并且产生另一个浮点数组作为预测输出。关于这些数组中任何一个的含义,或输入/输出浮点数应该是什么样的描述,都留给 Wiki 和错误跟踪器,或被写为代码注释。Oracle 指出,开发者不会希望为每个机器学习模型添加另一个数据库表只是为了解释输出浮动数组的含义。

另一方面,在生产中跟踪模型也很棘手,因为它需要外部系统来保持已部署模型与训练过程和数据之间的链接。Oracle 的机器学习研究小组认为,将这些额外的要求直接嵌入机器学习库会好得多。

编程语言上,大多数流行的机器学习库都用 Python 和 R 等动态语言编写,而多数企业系统是基于 Java 等静态类型语言的。这就要求企业同时使用不同语言来编写代码,并确保其运行,也会因此产生更多的代码维护成本和系统开销。

此次开源的 Tribuo 则能够妥善处理这些问题。Tribuo 具有数据加载管道、文本处理管道和功能级别转换,可在数据加载后对其进行操作。它知道自己输入/输出了什么,并可以描述每个输入/输出的范围和类型。

使用 Tribuo 从其他系统和语言部署模型也很方便,它提供了指向 ONNX Runtime、TensorFlow 和 XGBoost 的接口。其中,对 onnx 模型的支持允许在 Java 中部署一些 Python 软件包(例如 pytorch)训练的模型。

所有模型和评估都包括一个可序列化的出出对象,该对象记录了模型或评估的创建时间、数据的身份以及应用于它的任何转换,以及培训师的超等值器。在评估中,此来源信息还包括使用的特定模型。证明信息可以提取为 JSON,或者直接使用 Java 序列化进行序列化。对于生产部署,可以编辑来源信息,并替换为哈希,以便通过外部系统提供模型跟踪。

Tribuo 目前支持 Java 8 及更高版本。Oracle 表示该机器学习库已经在公司的内部生产中运转了数年。

segmentfault公众号


思否编辑部
4.3k 声望116.9k 粉丝

思否编辑部官方账号,欢迎私信投稿、提供线索、沟通反馈。