我在IBM Watson Studio中有一个用于时间序列预测的Python笔记本。
它接受两个输入数据
- MAX
- MIN
并返回两个数据列表,包含MAX
和MIN
的未来10步预测。
我想让它能够被外部应用程序使用。我已经搜索了像API创建这样的解决方案,但没有找到任何来源。有人能建议我正确的做法或有用的资源吗?
回答:
经过两天的研究和尝试,我找到了自己的问题的解决方案。没有人给我任何解决方案,所以我想将它发布在这里供将来参考。
在这里,我添加了我的实际经验,所以这可能是一个较长的答案。
1. 为什么选择IBM笔记本?
如果我们需要更多的定制化,我们会选择笔记本而不是现有的模型。我们将获得大多数内置模型中不可用的模型。
2. 有哪些方法可以做到这一点?
根据我的调查,我发现了两种方法可以做到这一点
- 将其部署为Python函数(对我有用)
- 借助Jupyter笔记本、IBM Cloud和Github部署它。请查看这个教程
3. 将其部署为Python函数 [来源]
-
将所有功能封装在一个函数中(步骤1)。例如,它接受输入并返回输出。
-
每次调用时,代码中的变量或数据结构将丢失数据。因此,请在您的Python函数中避免使用这些项目,并在您的应用程序中管理它们。
-
另一个重要点是,如果你想导入库,你必须将其作为主函数内的子进程包含在内。因为测试环境和部署环境的差异。你可以通过简单地添加以下内容来实现
-
Python函数的示例格式
def my_deployable_function(): import subprocess subprocess.check_output( "pip install ipython--user",stderr=subprocess.STDOUT,shell=True ) def score( payload ): num1=int(payload["values"][0]) num2=int(payload["values"][1]) ans=num1+num2 return ans
*这里,
payload
是你从API传递给Python函数的数据,ans
是输出 -
测试函数
function_result = my_deployable_function()( { "values" : [ 100,200] } )print( function_result )
*输入
payload
是一个字典
。根据你的需要,你可以添加元素,但要确保你不改变结构,即,所有内容都应该在一个根元素下,这里是values。 -
输出
300
-
按照(步骤2)在来源中进行操作,你需要凭据,如果你对现有凭据有任何问题,那么创建一个新的,因为旧的可能已经过期了。
- 如果你的计划是Lite,你无法进行超过5次部署(步骤3)。所以要谨慎。如果超过了,要么通过删除现有服务创建一个新服务,要么删除旧的部署。
- 如果你在创建新服务,请在项目设置中检查它是否与你的项目相关联。否则,凭据只能在IBM Watson中工作,不能通过REST API(步骤4)工作。
遵循官方文档并保持这些说明以节省你的时间。