gpt4 book ai didi

python - 使用 Docker 和 Flask 进行机器学习的性能问题

转载 作者:行者123 更新时间:2023-12-05 06:33:53 25 4
gpt4 key购买 nike

我有一些应用于 json 文件的 python3 代码,代码中有一些神经网络和随机森林。我将我的代码放入 Docker 容器中,但注意到这些 ML 任务在没有 Docker 的情况下比使用 Docker 运行得更快。在 Docker 中,我使用 Flask 加载 json 文件并运行代码。当然,我在本地和 Docker 内部使用了相同版本的 python 模块,它们是:

  • theano 0.8.2
  • 喀拉斯 2.0.5
  • scikit-learn 0.19.0

还有,Flask是

  • 0.12

起初,我认为 theano 在有 Docker 和没有 Docker 的情况下可能会使用不同的资源,但它同时运行单 CPU 和单线程。它也没有使用我的 GPU。当我意识到我的随机森林在 Docker 中运行速度也较慢时,我意识到它可能不是 theano。这是我执行的一堆测试(我为每个测试做了几个测试,我报告的是平均时间,因为这些是稳定的)

没有 Docker,没有 Flask:

  • 任务 1(theano + keras 代码):1.0s
  • 任务 2(theano + keras 代码):0.7s
  • 任务 3(scikit-learn 代码):0.25 秒

Docker (cpus=1) + Flask( Debug模式 = True):

  • T1:6.5s
  • T2:2.2s
  • T3:0.58s

Docker (cpus=2) + Flask( Debug模式 = True):

  • T1:5.5s
  • T2:1.4s
  • T3:0.55s

Docker (cpus=2) + Flask( Debug模式 = False):

  • T1:4.5s
  • T2:1.2s
  • T3:0.5s

Docker (cpus=2)(没有 Flask,只是在本地调用 json 文件):

  • T1:2.8s
  • T2:1.1s
  • T3:0.5s

Flask( Debug模式 = True)(无 Docker 容器):

  • T1:2.8s
  • T2:1.5s
  • T3:0.2s

我猜 cpu=1 与 cpu=2 只是为代码分配了更多的一个 cpu,而第二个 cpu 只是接管了一些其他工作。显然,当不使用 Flask 或 Docker 时,时间会有所减少,但是,我仍然无法达到没有 Docker 和没有 Flask 的速度。有没有人猜到为什么会这样?

这是我们如何使用 Flask 运行应用程序的最小代码块

api = Flask(__name__)
pipeline = Pipeline() # private class calling multiple tasks

@api.route("/", methods=['POST'])
def entry():
data = request.get_json(force=True)
data = pipeline.process(data)
# This calls the different tasks which are timed

if __name__ == "__main__":
api.run(debug=True, host='0.0.0.0', threaded=False)

附言。如果问题缺少任何内容,请原谅我,这是我的第一个 StackOverflow 问题

最佳答案

我在使用 CPU 进行推理时遇到了非常相似的问题

  • unicorn
  • flask
  • torch

尽管我的设置略有不同,但我认为这会对您有所帮助。

我在 gunicorn-settings 中设置了 workers=1threads=1。向 Flask 端点发送并发请求时,推理时间变得非常糟糕。

事实证明,pytorch 从 Docker 获得尽可能多的线程,并且它们彼此严重阻塞。另请参阅:https://opendatascience.com/model-performance-optimization-with-torchserve/

The solution for me was setting torch.set_num_threads(1).

请检查您是否也有此问题。

关于python - 使用 Docker 和 Flask 进行机器学习的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50464643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com