我们使用CNTK训练了一个模型。我们正在构建一个服务,该服务将加载此模型并响应对句子进行分类的请求。有关性能的最佳API是什么?我们更愿意像https://github.com/Microsoft/CNTK/tree/master/Examples/Evaluation/CSEvalClient一样构建一个C#服务,但我们正在考虑构建一个Python服务,它将在python中加载模型。
您对一种或另一种方法有任何建议吗? (关于哪个API更快,主动维护或您可以想到的其他参数)。下一步是建立一个测量两个API调用的性能的实验,但是想知道这里是否有一些先验知识可以帮助我们做出决定。
谢谢
答案 0 :(得分:4)
这两个API都得到了很好的开发/维护。对于文本数据,我会使用C#API。
在C#中,主要关注点是快速简便的评估,对于文本加载,数据非常简单。
Python API适用于模型的开发/培训,目前尚未对评估给予太多关注。此外,由于丰富的软件包,以异常格式加载数据在Python中比C#更容易。
答案 1 :(得分:2)
基于CNTKLibrary的新C#Eval API将很快推出(第一个测试版可能是下周)。此API与C ++和Python API在评估方面具有功能性。
此API支持使用多个线程并行提供多个评估请求,甚至更好,这些线程之间共享相同加载模型的模型参数,这将显着减少服务环境中的内存使用量。
我们还有一个关于如何在ASP.Net环境中使用Eval API的turorial。它仍然引用EvalDLL评估,但也适用于新的C#API。在发布新的C#API之后,将更新该文档。