描述问题
我无法成功运行serve示例。我认为问题可能来自数据集?第一列是空的。它应该是movie_id
,但似乎丢失了(我认为这个特征根本没有任何帮助?我们是否应该从数据集中删除它)。然后推理服务器认为它缺少一个特征。棘手的问题是我不知道serve如何处理空的特征名称?
https://github.com/ludwig-ai/ludwig-docs/blob/master/docs/data/rotten_tomatoes_test.csv
重现
重现此行为所需的步骤:
- 训练rotten_tomato.csv
- 运行
ludwig serve --model_path=/automl/model
- 运行预测请求
curl http://0.0.0.0:8000/predict -X POST -F "movie_title=Friends With Money" -F "content_rating=R" -F "genres=Art House & International, Comedy, Drama" -F "runtime=88.0" -F "top_critic=TRUE" -F "review_content=The cast is terrific, the movie isn't."
{"error":"entry must contain all input features"}%
文档:https://ludwig.ai/0.6/getting_started/serve/
预期行为
它应该返回200个带有正确预测结果的请求。
截图
如果适用,请添加截图以帮助解释您的问题。
环境(请完成以下信息):
- Python版本3.8.13
- Ludwig版本0.6
其他上下文
在此问题中添加任何其他有关问题的上下文。
5条答案
按热度按时间1zmg4dgp1#
我尝试在数据集中添加
movie_id
字段名并重新训练模型。有趣的是,无论是否指定movie_id
,预测都成功了。顺便说一下,预测结果与文档中的不同。https://ludwig.ai/latest/getting_started/serve/ 是文档过时了吗?
gev0vcfq2#
我们来看看@Jeffwan。
ifmq2ha23#
Jeffwan,你训练的配置中包含id吗?在文档中没有,所以在预测时不需要。你能再检查一下吗?
rjjhvcjd4#
我使用ludwig网站上的原始数据集训练了这个模式,但它没有field_id。
kjthegm65#
你好,Jeffwan。
在这里继续讨论。
首先,我能够完成Getting Started指南中的服务部分。
然而,我们可以澄清这个教程,我还发现了一个小的不相关的错误(我怀疑这是否影响到了你)。无论如何,我会跟进这两个AI。
这里有一些可能对你有帮助的提示,帮助你更好地理解你可能观察到的现象:
这可能是为什么在Getting Started指南中,我们提示您使用排除第一列的配置进行训练:
Unnamed: 0
。在Ludwig配置中,可以使用这个名称引用具有空列名的特征。ludwig serve
部署模型时,可以通过POST调用添加额外的特征值。然而,如果这些特征没有在用于训练模型的原始配置中列出,那么额外的字段将被忽略,对推理没有任何影响,例如:这两个curl应该产生完全相同的结果:
create_auto_config
,返回的配置将包含空的类似“id”的特征,输入特征列表将是:(顺便说一下,Ludwig automl应该默认省略所有唯一的单令牌id-like特征)
ludwig serve
端点需要指定原始配置中列出的所有输入特征。如果模型是用具有空列名的特征训练的,那么您的curl中应该有一个Unnamed: 0
字段,例如:否则,您将得到
{"error":"entry must contain all input features"}%
错误。results
目录,否则新模型将保存到results/api_experiment_run_{n}
,其中“n”在每次后续运行后递增,以免覆盖先前训练运行的产物。ludwig serve
也应该用新的模型路径初始化。