近日,Oracle 开源了一个用 Java 编写的机器学习库,名为 Tribuo。它提供了用于分类、回归、聚类、模型开发等的工具。也为许多流行的第三方机器学习库提供了统一的接口。
Oracle 提到,他们这些年来致力于将机器学习模型部署到大规模的生产系统中。在这个过程中,他们发现,企业的期望往往与现有的机器学习库提供的功能之间存在着鸿沟。
举例来讲,大型的软件系统通常希望可以使用可自我描述的构造块,并判断其何时输入或输出无效。然而大多数机器学习库依靠一堆浮点数组来训练模型。在部署时,输入是一个浮点数组,并且产生另一个浮点数组作为预测输出。关于这些数组中任何一个的含义,或输入/输出浮点数应该是什么样的描述,都留给 Wiki 和错误跟踪器,或被写为代码注释。Oracle 指出,开发者不会希望为每个机器学习模型添加另一个数据库表只是为了解释输出浮动数组的含义。
另一方面,在生产中跟踪模型也很棘手,因为它需要外部系统来保持已部署模型与训练过程和数据之间的链接。Oracle 的机器学习研究小组认为,将这些额外的要求直接嵌入机器学习库会好得多。
从编程语言上来看,大多数流行的机器学习库都用 Python 和 R 等动态语言编写,而多数企业系统是基于 Java 等静态类型语言的。这就要求企业同时使用不同语言来编写代码,并确保其运行,也会因此产生更多的代码维护成本和系统开销。
此次开源的 Tribuo 则能够妥善处理这些问题。Tribuo 具有数据加载管道、文本处理管道和功能级别转换,可在数据加载后对其进行操作。它知道自己输入/输出了什么,并可以描述每个输入/输出的范围和类型。
使用 Tribuo 从其他系统和语言部署模型也很方便,它提供了指向 ONNX Runtime、TensorFlow 和 XGBoost 的接口。其中,对 onnx 模型的支持允许在 Java 中部署一些 Python 软件包(例如 pytorch)训练的模型。
Tribuo 目前支持 Java 8 及更高版本。Oracle 表示该机器学习库已经在公司的内部生产中运转了数年。
猜你喜欢: