CNTK:Python vs C# API 用于模型消费

CNTK: Python vs C# API for model consumption

我们已经使用 CNTK 训练了一个模型。我们正在构建一项服务,它将加载该模型并响应对句子进行分类的请求。关于性能最好的 API 是什么?我们更愿意像 https://github.com/Microsoft/CNTK/tree/master/Examples/Evaluation/CSEvalClient 那样构建一个 C# 服务,但我们正在考虑构建一个 Python 服务,它将在 python.

中加载模型

您对其中一种方法有什么建议吗? (关于哪个 API 更快,积极维护或您能想到的其他参数)。下一步将是建立一个实验来测量两个 API 调用的性能,但想知道这里是否有一些先验知识可以帮助我们做出决定。

谢谢

两个 API 都很好 developed/maintained。对于文本数据,我会使用 C# API。

在 C# 中,主要重点是快速和简单的评估,并且对于文本加载数据非常简单。

Python API 对 development/training 的模型很好,目前没有太多关注评估。此外,由于包的丰富性,在 Python 中加载奇异格式的数据比在 C# 中更容易。

基于 CNTKLibrary 的新 C# Eval API 即将推出(第一个测试版可能在下周)。 API 在计算方面与 C++ 和 Python API 具有相同的功能。

这个API支持使用多个线程并行服务多个评估请求,更好的是,相同加载模型的模型参数在这些线程之间共享,这将显着减少服务环境中的内存使用.

我们还有一个 turorial 关于如何在 ASP.Net 环境中使用 Eval API。它仍然引用 EvalDLL 评估,但也适用于新的 C# API。文档将在新的C# API 发布后更新。