我一直在开发一个API,以在Kubernetes目标上使用Azure机器学习(AML)Web服务部署来服务机器学习模型,如下所述:https://learn.microsoft.com/en-us/azure/machine-learning/service/how-to-deploy-and-where#prepare-to-deploy
我的特定用例需要的不仅仅是通过模型对数据进行简单的评分。API需要有多个端点来执行与模型相关的不同操作。例如,一个端点用于上传数据,一个端点用于删除数据,一个端点用于列出现有数据,一个端点用于对先前上传的数据进行评分,一个端点用于更改预处理参数,等等。
我可以构建所有这些逻辑,但我正在努力解决AMLWeb服务只提供一个端点的事实(服务URI以“/score”结尾)。是否有方法向AML服务添加更多端点?例如,我希望有一种方法可以让用户能够POST,GET,DELETE,PUT“/data”,GET“/predictions”,以及POST,GET,DELETE,PUT“/parameters”等。
是否有一种方法可以在AML中完成此操作,或者这不是我试图完成的正确工具?Azure中是否有更好的解决方案更适合我的需求?
谢谢大家!
3条答案
按热度按时间zed5wv101#
Azure ML允许受控的部署/流量拆分,但不直接支持API设计。
我可能需要更多地了解您的用例才能提出建议。您是否正在考虑实施增量学习?独立端点的动机是什么?
oxosxuxt2#
你的建议看起来像是一个有状态的Web服务器,而不仅仅是一个REST API服务。例如,你需要保留一段逻辑来维护数据的“id”:如果有两个POST
/data
调用不同的数据,DELETE/data
需要在正确的一个上操作。这比单个性能优化的机器学习服务要多得多。我建议您创建一个单独的服务器,其中包含所有这些逻辑块,并且仅在需要时才访问Azure机器学习服务。您还可以在服务中构建缓存,以便仅在新数据进入或本地缓存过期时调用Azure ML服务。这将为您节省Azure的额外费用:-)
hmmo2u0o3#
您建议使用APIM(Azure API管理)的评论是一个很好的方法。它解决了将所有端点公开为一致API的问题,尽管每个端点都可能表示为对其他API的后端API调用(例如,您可以将/scoring端点替换为/predictions作为外部端点,并且不直接公开公共推断端点)。
不建议单独使用APIM来模拟这些调用(尽管可能,但并不简单),而是使用Azure函数或类似的方法来调用负责交付数据的后端服务,甚至转换参数并聚合多个后端API调用。