我们正在尝试在 Vespa 中使用 ML 模型,我们在 Vespa 中存储了文本数据,有人可以帮助我们解决以下问题-
小智 5
这是一个非常广泛的问题,答案在很大程度上取决于您的目标是什么。通常,可以在此处找到有关在 Vespa 中使用 ONNX 模型的文档:
https://docs.vespa.ai/documentation/onnx.html
可以在 Transformers 示例应用程序中找到使用 ONNX BERT 模型进行排名的示例:
https://github.com/vespa-engine/sample-apps/tree/master/transformers
请注意,这两个链接都假定您有一个现有模型。一般来说,Vespa 是一个服务平台,通常不用于模型训练过程。因此,Vespa 并不真正关心您的模型来自哪里,无论是 scikit-learn、pytorch 还是任何其他系统。ONNX 是各种系统之间 ML 模型交换的通用格式。
但是,我认为我应该了解一些基本想法,也许可以澄清一些。Vespa 目前认为所有 ML 模型都具有数字(以张量的形式)输入和输出。这意味着您不能直接将文本放入模型并让文本在另一侧出现。如今,大多数文本数据都被编码为某种形式的数字表示,例如嵌入向量,或者,如上面的 BERT 示例所示,文本被标记为每个标记都有自己的向量表示。在模型计算之后,嵌入向量或标记集表示可以被解码回文本。
Vespa 目前处理计算部分,编码/解码文本到嵌入或其他表示的(预)处理目前取决于用户。Vespa 确实提供了一组丰富的功能,以文档和查询处理器的形式在这方面提供帮助。因此,您可以创建一个文档处理器,在存储之前将每个传入文档的文本编码为某种表示形式。同样,可以创建一个搜索器(查询处理器),在对文档进行评分之前将传入的文本查询编码为兼容的表示。
因此,一般而言,您可以使用模型所需的任何嵌入或标记化策略在 Vespa 之外训练模型。部署 Vespa 应用程序时,您可以使用任何所需的自定义处理代码添加模型,这些代码在提供或查询 Vespa 时使用。
如果你有一个更具体的例子来说明你想要实现的目标,我可以更具体。