Cpu下不同环境部署Tensorflow模型性能测试(tf

编程入门 行业动态 更新时间:2024-10-10 21:25:14

Cpu下不同环境部署Tensorflow模型<a href=https://www.elefans.com/category/jswz/34/1767799.html style=性能测试(tf"/>

Cpu下不同环境部署Tensorflow模型性能测试(tf

前言与观点

本文主要是在cpu环境(不是gpu)下对tensorflow模型的不同部署方法进行简要的性能测试,寻求一个较好的部署方案。

涉及的部署方法:

  • FastApi部署
  • tf-serving部署
  • Java部署

本测试观点:(仅仅是本次测试的观点,不代表本人观点啊,满满的求生欲)

  • 三种方案中,总体来看无论从并发量还是吞吐量,tf-serving都略胜一筹
  • 当并发量小于500时,结合并发量和吞吐量Java和tf-serving难分胜负,且Java有超越的潜在可能
  • FastApi部署时并发量超过500数据已经不能看了,错误率飙升

测试环境与测试方法

  • 硬件环境
  • 工具:JMeter
  • 测试环境:i7-9700 3.0GHz 8核 32G内存
  • 模型
input = layers.Input(shape=(46,),name='x')
out = layers.Embedding(len(word_tokenizer.index_word) + 1, 50, input_length=46)(input)
out = layers.Bidirectional(layers.LSTM(50))(out)
out = layers.Dropout(0.2)(out)
out = layers.Flatten()(out)
out = layers.Dense(12, activation='softmax',name='y')(out)
model = tf.keras.Model(inputs=input,outputs=out)
  • 测试方法
  1. 导出训练好的saved_model
  2. 本地拉一个tensorflow/serving进行启动提供接口
  3. 本地使用Python的FastApi框架加载模型提供接口
  4. 本地使用Java的Springboot框架加载模型提供接口
  5. 本地部署JMeter、并发量从1-10-100-500-1000-5000逐步增加测试

性能分析

平均响应

通过对比三种部署方案下的平均响应,得到下图:

说明:FastApi部署时并发量超过500错误率已达到55+%,响应数据已不准确,故丢弃

可以看到:

  • FastApi部署方式平均响应较为突出,是不行的那种突出
  • 在10个并发内,三种方式无明显差异(如果你看出来了细微差异,请你忽略)
  • 当并发量小于1000时,Java部署和tf-serving的平均响应无明显差异
  • 当并发量大于1000时,Java部署的平均响应较于tf-serving开始飙升,到5000个并发时已达到两倍左右

吞吐量

通过对比三种部署方案下的吞吐量,得到下图:

说明:FastApi部署时并发量超过500错误率已达到55+%,响应数据已不准确,故丢弃

可以看到:

  • 吞吐量的走势与平均响应的趋势并无二致
  • 差距在于Java部署和tf-serving的分界点有并发量1000变为了500

`

总结

  • 总体来看,部署的首选应该是tf-serving,而且据tf-serving的开源地址所述,自行编译tf-serving还可以有优化的空间
  • 如果并发量不高的情况下java也是一个优选之策

  • 需要特别注意的是,由于条件局限,本次测试尚缺乏很多对比因素,比如测试环境单一、Java和FastApi部署代码无优化标准、未使用rpc调用方式、模型单一、模型输入类型单一等等,所以仅仅只能作为一个参考,不能直接定论!

更多推荐

Cpu下不同环境部署Tensorflow模型性能测试(tf

本文发布于:2024-03-23 20:17:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742377.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:性能测试   模型   环境   Cpu   tf

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!