【问题标题】:How to deploy machine Learning model with model loaded from pickle file in Python?如何使用从 Python 中的 pickle 文件加载的模型部署机器学习模型?
【发布时间】:2019-01-31 09:42:42
【问题描述】:

我创建了一个 NLP 模型并将矢量化器和模型保存在 pickle 文件中。我正在使用这些泡菜文件来预测新数据。加载泡菜大约需要 10 分钟。我想将泡菜文件加载到内存中,并在获得输入时运行预测。

我有一个文件 prediction.py

from sklearn.externals import joblib

count_vectorizer = joblib.load("C:/Count_Vectorizer.pkl")

count_classifier = joblib.load("C:/Count_Classifier.pkl")

X=sys.argv[1]

X_count = count_vectorizer.transform(X)

prediction = count_classifier.predict(X_count )

print(X,prediction)

我正在运行带有输入字符串作为参数的 python 文件。

$ python prediction.py "Hello World"

每次我运行脚本时都会加载这个泡菜文件。无论如何要制作一个程序,使泡菜文件已经加载到内存中,然后我们运行预测文件并得到结果?

【问题讨论】:

  • 保持进程运行并接受发送给它的数据?你可以运行一个网络服务器来接受请求,你可以通过命令行获取用户输入,你可以制作一个 gui...等等。只是不要杀死加载泡菜的进程。
  • 您还可以使用 tkinter 为您的应用构建一个小型 UI 并使其运行。 docs.python.org/2/library/tkinter.html
  • 你可以看看flask

标签: python machine-learning pickle


【解决方案1】:

你必须稍微改变你的代码结构。

1。守护进程.py

这部分负责将模型加载到内存中一次,并且应该一直运行从“前端”部分获取输入

import numpy as np    
from sklearn.externals import joblib

count_vectorizer = joblib.load("C:/Count_Vectorizer.pkl")    
count_classifier = joblib.load("C:/Count_Classifier.pkl")

while True:
    # Load your data from file saved on disk, pass path via input
    # User can pass data, separate script saves it and passes it to daemon
    with open(input("Pass your data here")) as f:
        X_count = count_vectorizer.transform(np.fromfile(f))

        prediction = count_classifier.predict(X_count )
        print(X,prediction)

这只是一个草图,因为我不知道您的确切用例。基本上,有一个无限循环获取文件(或此处的文件路径)并输出预测。

2。前台.py

使用subprocess 模块,您可以将路径文件从'front' 脚本发送到Daemon 等待路径并返回答案。您必须附加 Daemon 的输入和输出流以传递文件路径并从该过程中获取预测。

subprocess.runPopen 可能是您执行此操作、查看文档和示例用例(例如herehere 等)所需的全部内容。

编辑: @Koalapa 答案是另一种选择,正如我们所说,这在很大程度上取决于您到底想做什么,用户负载是多少等。

【讨论】:

  • 我需要一直调用一个带有参数的python文件,我必须做预测。这个 python 文件是从前端调用的。而且我想使用一些机制,矢量化器和分类器泡菜文件不是每次都加载。它应该很方便,以便结果更快
  • 启动文件一次,将用户文件从前端传递给守护进程,我看不出问题出在哪里
  • Szymon Maszke:你能再解释一下吗?我有问题中所述的predictions.py。您能否使用一些文件名详细说明您的答案。
  • 编辑了我的答案,虽然我不会写完整的东西,但想法就在那里。
猜你喜欢
  • 2019-09-05
  • 2019-03-09
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
相关资源
最近更新 更多