您的位置 首页 java

行业趋势:Tribuo发行,这个Java机器库能干嘛?

前言

在Oracle Labs机器学习研究小组中,我们多年来一直致力于将机器学习(ML)模型部署到大型生产系统中。在这段时间里,我们注意到企业系统的期望与大多数ML库提供的功能之间存在一个关键的鸿沟。大型软件系统希望使用描述自己的构造块,并知道何时其输入或输出无效。

相反,大多数ML库期望一堆浮点数组来训练模型。然后,在部署时,他们期望输入是一个float数组,并且产生另一个float数组作为预测输出。这些数组的含义或输入/输出浮点数应该是什么样的描述,都留给了另一个系统,即Wiki,错误跟踪器或编写为代码注释。我们认为开发人员不想为每个ML模型添加另一个数据库表只是为了解释输出浮点数组的含义。

在生产中跟踪模型也很棘手,因为它需要外部系统来保持已部署模型与训练过程和数据之间的链接。通常,这些额外要求的负担在于将ML库集成到其产品或系统中的团队,但是在我们小组中,我们认为将其嵌入ML库本身要好得多。

最后,大多数流行的ML库都是用动态类型的语言(例如Python和R)编写的,而大多数企业系统是用静态类型的语言(例如Java)编写的。结果,即使实现简单的ML组件也需要大量的代码维护和系统开销,因为必须使用多种语言编写代码并在多个运行时中运行。

介绍Tribuo

我们小组在过去的几年中已经建立了ML库来满足这些需求。该库称为* Tribuo *,源于拉丁语,意为分配或分配。Tribuo用Java编写,并且可以在Java 8或更高版本上运行。所有相关信息和文档,以及教程和入门指南,都可以在Tribuo的网站tribuo.org上找到。几年来,我们一直在甲骨文公司内部的生产中使用Tribuo,很高兴与您分享。

Tribuo提供了您希望从ML库获得的标准ML功能:分类,聚类,异常检测和回归算法。Tribuo具有数据加载管道,文本处理管道和功能级别转换,可在数据加载后对其进行操作。

它还为每个受支持的预测任务提供了一整套评估。与其他系统不同,Tribuo知道其输入是什么,并可以描述每个输入的范围和类型。每个功能都被命名,因此您不能将其与另一个功能混淆,因为输入处理系统为其赋予了相同的ID号(实际上,在Tribuo中,您无需查看其ID号)。这意味着Tribuo模型会知道何时赋予了它前所未有的功能,这在使用自然语言处理时特别有用。

Tribuo的模型也知道它们的输出是什么,并且这些输出是强类型的。不再盯着浮标想知道它是概率,回归值还是聚类ID。在Tribuo中,每个都是单独的类型,并且模型可以描述它知道的类型和范围。

追踪和复制具有出处的模型

使用其他ML库来跟踪任何给定生产模型的生成方式是很棘手的,因为它们的模型不存储训练数据源,转换或训练算法超参数。有一些库可以将跟踪代码放在现有模型训练脚本之上,但是我们认为此信息应嵌入模型(或评估)本身中。该训练时间信息,再加上有关存储在每个Tribuo模型中的模型输入和输出的信息,意味着它们是“自我描述”的。

Tribuo使用强类型输入和输出意味着它可以跟踪模型构建过程,从将点数据加载到Tribuo中,通过任何训练/测试拆分或数据集转换,到模型训练(记录所有超参数),最后到对测试集的评估。此跟踪(或“来源”)信息被纳入所有模型和评估中。

Tribuo的出处系统不仅仅用于跟踪生产中的模型。每个出处都可以生成一个配置,该配置可以精确地重建训练管道以重现模型或评估(假设您仍然有原始数据),或者在新数据或新超参数上构建经过调整的模型。这意味着您总是知道Tribuo模型是什么,它来自哪里以及如何根据需要重新创建它。它甚至可以记录所有PRNG种子,因此可以很好地重现模型训练运行。

从其他系统和语言部署模型

Tribuo提供了指向ONNX Runtime,TensorFlow和XGBoost的接口。这允许以onnx格式存储或在TensorFlow或XGBoost中训练的模型与Tribuo的本机模型一起部署。我们的小组为这三个项目做出了贡献:我们编写了ONNX Runtime的Java支持,我们提供了补丁程序以确保XGBoost在平台和Java版本上都能正常工作,并且为即将到来的TensorFlow JVM版本提供了培训支持。

onnx模型支持特别令人兴奋,因为它允许在Java中部署使用流行的Python包(例如scikit-learn和pytorch)训练的模型。

我们的TensorFlow和XGBoost接口还允许使用这些系统训练Tribuo模型。通过Tribuo培训后,它们将提供每种Tribuo模型所具有的所有类型安全性和出处优势。XGBoost支持功能全面,我们多年来一直在内部生产中使用它。

TensorFlow支持仍处于试验阶段,因为我们正在等待TensorFlow JVM SIG的第一个发行版,然后才能最终确定Tribuo的TF API。TF JVM的第一个发行版还将允许在Java中训练TF模型,而无需先在Python中定义任何东西。

文章来源:智云一二三科技

文章标题:行业趋势:Tribuo发行,这个Java机器库能干嘛?

文章地址:https://www.zhihuclub.com/170188.shtml

关于作者: 智云科技

热门文章

网站地图