使用 tensorflow 运行 的 Django 应用程序非常慢
Django app with tensorflow running very slowly
我有一个使用 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)
看起来你的 Tensorflow 模型在这台机器上就是那么慢。你在没有 Django 的情况下测试了它,它也需要 30 秒,所以我们可以在这里跳过 Django 部分。
使其更快的最佳选择是使用 tensorflow-gpu
和带有 Nvidia 显卡的服务器(例如 AWS GPU 实例)。这通常会将所需时间减少至少 10 倍,因此您的等待时间对于您的申请来说可能是可以接受的。
此外,您应该尝试解耦 Django 和 Tensorflow-Script,以避免为每个请求加载和初始化模型。创建某种队列系统。然后你的 Django 应用程序将输入值写入队列并等待结果,你的 Tensorflow 程序在后台运行并从队列中读取值,评估模型并将结果发送回 Django。
我有一个使用 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)
看起来你的 Tensorflow 模型在这台机器上就是那么慢。你在没有 Django 的情况下测试了它,它也需要 30 秒,所以我们可以在这里跳过 Django 部分。
使其更快的最佳选择是使用 tensorflow-gpu
和带有 Nvidia 显卡的服务器(例如 AWS GPU 实例)。这通常会将所需时间减少至少 10 倍,因此您的等待时间对于您的申请来说可能是可以接受的。
此外,您应该尝试解耦 Django 和 Tensorflow-Script,以避免为每个请求加载和初始化模型。创建某种队列系统。然后你的 Django 应用程序将输入值写入队列并等待结果,你的 Tensorflow 程序在后台运行并从队列中读取值,评估模型并将结果发送回 Django。