在AzureML中部署模型时如何将参数传递给评分文件

2024-05-20 09:09:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python SDK将经过培训的模型部署到Azure机器学习上的ACI端点。 我已经创建了score.py文件,但我希望调用该文件时传递一个参数(就像使用培训文件一样),我可以使用argparse解释该参数。 然而,我似乎不知道如何传递参数 这是我必须创建推断配置环境的代码,显然不起作用。我应该使用额外的Docker文件步骤吗

from azureml.core.conda_dependencies import CondaDependencies
from azureml.core.environment import Environment
from azureml.core.model import InferenceConfig

env = Environment('my_hosted_environment')
env.python.conda_dependencies = CondaDependencies.create(
    conda_packages=['scikit-learn'],
    pip_packages=['azureml-defaults'])
scoring_script = 'score.py --model_name ' + model_name
inference_config = InferenceConfig(entry_script=scoring_script, environment=env)

添加score.py以参考我希望如何使用该脚本中的参数:

#removed imports
import argparse

def init():
    global model

    parser = argparse.ArgumentParser(description="Load sklearn model")
    parser.add_argument('--model_name', dest="model_name", required=True)
    args, _ = parser.parse_known_args()

    model_path = Model.get_model_path(model_name=args.model_name)
    model = joblib.load(model_path)

def run(raw_data):
    try:
        data = json.loads(raw_data)['data']
        data = np.array(data)
        result = model.predict(data)
        return result.tolist()

    except Exception as e:
        result = str(e)
        return result

有兴趣听听你的想法吗


Tags: 文件namefrompycoreimportdata参数
2条回答

如何使用环境进行部署可以在这里找到model-register-and-deploy.ipynb。推断配置类接受source_目录和entry_脚本parameters,其中source_目录是指向包含所有文件(score.py和任何其他附加文件)的文件夹的路径,以创建映像

这个multi-model-register-and-deploy.ipynb有关于如何使用源目录和条目脚本创建推断配置的代码片段

from azureml.core.webservice import Webservice
from azureml.core.model import InferenceConfig
from azureml.core.environment import Environment

myenv = Environment.from_conda_specification(name="myenv", file_path="myenv.yml")
inference_config = InferenceConfig(entry_script="score.py", environment=myenv)

service = Model.deploy(workspace=ws,
                       name='sklearn-mnist-svc',
                       models=[model], 
                       inference_config=inference_config,
                       deployment_config=aciconfig)

service.wait_for_deployment(show_output=True)

print(service.scoring_uri)

这个问题已经有一年了。提供解决方案,帮助那些可能仍在寻找答案的人。我对一个类似问题的回答是here。您可以将本机python数据类型变量传递到推理配置中,并作为评分脚本中的环境变量访问它们

相关问题 更多 >