【问题标题】:A typical tech stack using vowpal wabbit? [closed]使用 vowpal wabbit 的典型技术堆栈? [关闭]
【发布时间】:2015-06-07 08:30:37
【问题描述】:

您好,我想查看一个使用 vowpal wabbit 的示例技术堆栈。

这可以是人们正在使用的实际应用程序,也可以是说明大众汽车如何适应的虚构应用程序。

我们目前面临一个常见的遗留代码问题。我们的后端是使用关系数据库在 C++ 中实现的 Web 服务集合,而前端是在这些 Web 服务之上构建的基于 Javascript 的 Web 应用程序。

现在我们想扩展我们的后端以提供一些使用机器学习功能的分析服务。环顾四周,我非常喜欢 Apache Spark + ML + GraphX,因为图已经在我们的服务器逻辑中具有重要的功能。但问题是它们不是 C++。虽然它们可以与它集成,但由于我们将编写很多我们自己的东西,我们将不得不编写非 C++/Javascript 代码,目前尚未考虑。

Vowpal Wabbit 是另一个符合我们标准的候选者,但我不确定它是否完全适合从原始数据存储到应用程序逻辑。于是就有了这个问题。

【问题讨论】:

  • 如果我理解,您希望能够直接从您的 C++ 代码调用 ML 库。在研究过许多面向数据的解决方案之后,我可以说,通常人们更喜欢使用模块化方法和 API 来进行独立于所用语言的通信(极端情况下为您提供微服务)。我在 node.js 应用程序中使用了 VW,我只是围绕 shell 命令调用构建了一个包装器。有时我会选择 REST API,有时我可以使用 zeroMQ 等工具。但我的想法是我希望能够以最少的更改快速更改库。

标签: c++ apache-spark machine-learning vowpalwabbit


【解决方案1】:

Vowpal 可用作库,源代码包括在 C++ 中使用 API 的示例。我们在 iOS 应用程序中使用它没有问题。唯一有点奇怪的是需要使用 boost::program_options 来初始化库和各种方法。如果你有动力,你可以进一步开发 API 来接受参数。维护者似乎积极鼓励补丁和功能的开发。

【讨论】:

    【解决方案2】:

    我记得 VW 可以构建为静态库(查看其 ./library 文件夹中的示例)。也许也可以作为动态库。因此,它可以直接合并到您的旧版 c++ 应用程序中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-11
      • 2011-11-13
      • 2015-03-21
      • 1970-01-01
      • 2016-10-06
      • 2016-08-22
      • 1970-01-01
      • 2015-03-29
      相关资源
      最近更新 更多