我有一个使用django
创建的Web应用程序,该应用程序正在使用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。