我正在尝试在端点中部署机器学习模型。我已经将模型注册为“ModelTest”。我试图根据历史数据预测销售额,因此为了预测下个月的销售额,我将前六个月的销售额传递给模型。为此,我需要访问历史数据。将历史数据上传到Azure中的数据资产中。
我知道我应该在评分脚本中编写预处理代码,但我找不到将历史数据从数据资产上载到端点的正确方法。
我尝试按照Azure文档中的示例部署模型而不进行预处理,它运行得很顺利。
import os
import logging
import json
import numpy
import pickle
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "ModelTest.sav"
)
# deserialize the model file back into a sklearn model
model = pickle.load(open(model_path,'rb'))
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
字符串
然后,我尝试使用“pd.read_csv”在init函数中上载数据资产。我已经尝试了资产的“数据源”选项卡中的所有三个路径,但它们都给予了错误,因为容器无法访问数据。例如使用以下
Data=pd.read_csv('https://machinelearnin6474979439.blob.core.windows.net/azureml-blobstore-b6321cf2-b0da-411e-97bb-9be13a8d1c89/UI/2023-06-26_132526_UTC/Data.csv'')
型
我得到“URL链接错误. HTTP错误:HTTP错误409:此存储帐户不允许公共访问。”,而对于其他路径,它无法识别它们。
我认为read_csv应该可以工作,因为pickle.load
可以,所以我认为这是一个使用正确路径的问题。
1条答案
按热度按时间but5z9lq1#
根据这些信息,您正在尝试使用数据资产的URL访问评分脚本中的数据资产。
pd.read_csv()
将工作,如果你给予数据集作为输入环境路径。的数据
如果您想直接在评分脚本中访问数据资产,那么一个可能的解决方案是通过在init()函数中添加以下代码来使用Dataset包。下面是一个示例代码片段:
字符串
的
其他可能的解决方案是在init()中使用csv数据文件的SAS URL,并使用pd.read_csv().
读取