无法在 Azure 函数中添加 ML 模型 Python3

Unable to add ML Model in Azure Function Python3

我正在尝试创建一个 azure 函数,它将 return 来自我的 ML 模型 (final_model.sav) 的数据。 通过这样做,ML 模型将在 Internet 上可用。

我的 Azure Function(init.py) 程序:

import azure.functions as func
import pickle


def main(req: func.HttpRequest) -> func.HttpResponse:
    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        
        var=name
        load_model = pickle.load(open('final_model.sav', 'rb'))
        prediction = load_model.predict([var])
        prob = load_model.predict_proba([var])
        
        return func.HttpResponse(f"{prediction[0]}&{prob[0][1]}.")
        
    else:
        return func.HttpResponse(
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
             status_code=200
        )

但每当我尝试通过 HTTP 端点 ("http://localhost:7071/api/News?name=HelloWorld") 触发此功能时,它都会出现错误 500。 我在 requirements.txt.

中包含了“sklearn”包

我遇到了这个错误:

Exception: FileNotFoundError: [Errno 2] No such file or directory: 'final_model.sav'

但我在同一目录中有 final_model.sav 文件。我不知道为什么它没有检测到它。

当我尝试调试代码时,我发现我的程序在遇到 load_model = pickle.load(open('final_model.sav', 'rb')) 行程序时停止工作。 我已将 'final_model.sav' 放在函数目录中(init.py 所在的相同位置)。

Function中的文件如下:

prediction.py 只是一个无用的文件。请忽略它。它没有对程序作出任何结论。

我认为绑定可能存在问题。请检查我的 function.json 文件。

function.json:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]
}

感谢您花宝贵的时间解决我的问题。 非常感谢。

由于您使用 open('final_model.sav', 'rb') 从根路径加载文件,它正在函数应用程序主位置查找该文件。因此,将 'final_model.sav' 移动到那里,即移动到 'host.json' 所在的同一级别。