【问题标题】:Django app with tensorflow running very slowly带有张量流的Django应用程序运行非常缓慢
【发布时间】:2020-08-26 07:23:31
【问题描述】:

我有一个使用django 创建的网络应用程序,它使用tensorflow 生成赞美并将其发送给注册该服务的人。每次用户提交号码时,我都会使用subprocess.call() 运行一个单独的脚本,该脚本会创建我的模型并将 AI 生成的赞美写入文本文件,然后 SMS 网关 (twilio) 使用此 .txt邮件正文的文件。

但是,在运行模型时提交一个有效数字后,应用会加载很长时间,例如有时需要 30 秒或更长时间才能停止加载页面,这并不理想。

为什么要花这么长时间?是不是因为在tensorflow 中创建模型只是一个及时的过程?我可以做些什么来加快这个速度,我应该让它在程序的早期运行代码来创建模型,还是应该提前生成一大堆赞美并让 SMS 网关从中提取?

这是创建模型的脚本:

from textgenrnn import textgenrnn
textgen = textgenrnn(weights_path='compliments_weights.hdf5',
                       vocab_path='compliments_vocab.json',
                       config_path='compliments_config.json')

textgen.generate_samples(max_gen_length=1000)
textgen.generate_to_file('textgenrnn_texts.txt', max_gen_length=1000)

【问题讨论】:

  • 您是否在没有 Django 项目的情况下对 tensorflow 程序进行了基准测试?如果 tensorflow 程序也需要 30 秒或者运行速度更快,请添加。
  • 每次用户提交一个数字时你都会训练你的模型吗?你的型号是什么?
  • @allo 在没有 django 项目的情况下也需要同样的时间
  • @praveen 模型已经训练过了,我只是运行一个较小的脚本,它使用 weights.hdf5、vocab.json 和 config.json 文件创建一个 textgenrnn 对象,然后它生成我的句子并将其放入文本文件中

标签: python django tensorflow subprocess twilio


【解决方案1】:

看起来你的 TensorFlow 模型在这台机器上就是这么慢。你在没有 Django 的情况下测试了它,它也需要 30 秒,所以我们可以在这里跳过 Django 部分。

使其更快的最佳选择是使用tensorflow-gpu 和带有 Nvidia 显卡的服务器(例如 AWS GPU 实例)。这通常会将所需时间减少至少 10 倍,因此您将获得一个对于您的应用程序来说可能可以接受的等待时间。

此外,您应该尝试将 Django 和 Tensorflow-Script 解耦,以避免为每个请求加载和初始化模型。创建某种队列系统。然后你的 Django 应用程序将输入值写入队列并等待结果,你的 Tensorflow 程序在后台运行并从队列中读取值,评估模型并将结果发送回 Django。

【讨论】:

  • 好的,谢谢!你认为这可能是我可以使用 django-background-tasks 的东西吗? django-background-tasks.readthedocs.io/en/latest
  • @datasplice 这个包好像时不时启动任务然后停止运行。您需要尽快运行任务,但要在正在运行的进程中。因此,您应该创建一个等待输入的脚本,例如,在 unix 套接字上、在 tcp 端口上或来自 redis pubsub 队列,然后评估网络并将输出发送回 django 进程。带有神经网络的脚本本身不应在处理一个输入后停止,而是等待队列中的下一个输入。
  • 如何以最佳方式运行后台作业可能是另一个问题的主题。我不会将其表述为“我可以使用 X 软件吗”(软件推荐在这里是题外话),而是问“结合 Tensorflow 和 Django 的最佳方法是什么”或类似的东西。
  • 好的,感谢您的帮助和建议!我已经发布了另一个关于它的问题,但我认为我现在有一个好主意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2016-07-21
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多