使用Azure函数部署python机器学习模型
我在本地开发了一个机器学习模型,并希望使用Azure函数将其部署为web服务 首先,使用pickle模块将模型保存为二进制,然后上传到与Azure函数(python语言,http触发器服务)实例关联的blob存储中 然后,在安装所有必需的模块后,使用以下代码对样本数据进行预测:使用Azure函数部署python机器学习模型,python,azure,machine-learning,httprequest,azure-functions,Python,Azure,Machine Learning,Httprequest,Azure Functions,我在本地开发了一个机器学习模型,并希望使用Azure函数将其部署为web服务 首先,使用pickle模块将模型保存为二进制,然后上传到与Azure函数(python语言,http触发器服务)实例关联的blob存储中 然后,在安装所有必需的模块后,使用以下代码对样本数据进行预测: import json import pickle import time postreqdata = json.loads(open(os.environ['req']).read()) with open('D:
import json
import pickle
import time
postreqdata = json.loads(open(os.environ['req']).read())
with open('D:/home/site/wwwroot/functionName/model_test.pkl', 'rb') as txt:
mod = txt.read()
txt.close()
model = pickle.loads(mod)
scs= [[postreqdata['var_1'],postreqdata['var_2']]]
prediciton = model.predict_proba(scs)[0][1]
response = open(os.environ['res'], 'w')
response.write(str(prediciton))
response.close()
其中:predict\u proba是一种用于训练的训练模型方法,scs变量定义用于从POST请求中提取特定值(模型变量值)
整个代码工作正常,预测作为响应发送,值是正确的,但发送请求后的执行持续150秒!(局部小于1s)。此外,在尝试测量代码的哪一部分花费了这么长时间之后:它是第10行(pickle.loads(mod))
你知道为什么要花这么多时间吗?模型大小非常小(几kB)
谢谢
向AML发出呼叫时,第一次呼叫必须使AML预热
容器。默认情况下,web服务有20个容器。每个容器
温度较低,且冷容器可能导致较大(30秒)延迟
我建议您参考此线程并了解Azure ML性能
希望它能帮助您。注意,我的代码中没有调用AML。这是一个简单的HTTP触发Azure函数。只有解钩部分速度很慢。@a_kord抱歉。您可以参考此问题:。也许你能找到一些线索。