找回密码
 立即注册
搜索
查看: 2109|回复: 18

[软件] 请教下深度学习小问题

[复制链接]
     
发表于 2022-8-26 09:50 | 显示全部楼层 |阅读模式
本帖最后由 子虚乌有 于 2022-8-26 10:20 编辑

我有很多个小的深度学习模型给项目提供服务(还是tf 1.x的古老模型),
需求类似在线的即时响应,接收客户端通过web发来的请求数据,然后判断下该用哪个模型,推算一下再把结果返回给客户端。
模型都很小几十m 100m不等,几十个吧。请求是并发的,峰值也算是几十个并发吧
响应时间要求比较高。所以要尽量节省模型计算的时间。
服务器就是个普通的8c 32g志强服务器,gpu是个3090ti(还没发钱买呢,计划中)

想请教一下。
首先用cpu还是gpu?
单个我知道肯定gpu快,但是多个小模型
gpu的话能支持并行多个模型的计算吗?多线程还是多进程?


回复

使用道具 举报

发表于 2022-8-26 10:00 | 显示全部楼层
判断用哪个模型是什么步骤
是根据模型运行结果判断么
如果需要同时多个模型输出,为啥不把所有模型都放一起
一般并行用模型不推荐,因为一个模型可能就把所有cuda核心用完了
回复

使用道具 举报

     
 楼主| 发表于 2022-8-26 10:05 | 显示全部楼层
tsubasa9 发表于 2022-8-26 10:00
判断用哪个模型是什么步骤
是根据模型运行结果判断么
如果需要同时多个模型输出,为啥不把所有模型都放一起 ...

目前没实现呢。初步想法是不同的rest endpointl对应不同的模型。
客户端就发http post就行了。

咋把一堆不想干的模型弄成一个?感觉很难
回复

使用道具 举报

发表于 2022-8-26 10:08 | 显示全部楼层
那你判断这一步就是cpu了,再根据判断结果把模型算一遍不就行了
为啥需要同时计算多个模型结果
回复

使用道具 举报

     
 楼主| 发表于 2022-8-26 10:15 | 显示全部楼层
tsubasa9 发表于 2022-8-26 10:08
那你判断这一步就是cpu了,再根据判断结果把模型算一遍不就行了
为啥需要同时计算多个模型结果 ...

慢。。。目前就是cpu单线程,原来也够用。现在用的人多了。
一个要10秒呢。人多排几分钟很正常。
10秒20秒我还能异步整个进度条。
几分钟肯定就有人找我了。
回复

使用道具 举报

发表于 2022-8-26 11:00 来自手机 | 显示全部楼层
我用torch.distributed跑过16个模型ensemble,每张卡同时跑2个应该是可以的,肯定比cpu快
回复

使用道具 举报

     
发表于 2022-8-26 11:16 | 显示全部楼层
要专业卡?游戏卡阉割了并行的特性

—— 来自 S1Fun
回复

使用道具 举报

发表于 2022-8-26 11:18 来自手机 | 显示全部楼层
noahhhh 发表于 2022-8-26 11:16
要专业卡?游戏卡阉割了并行的特性

—— 来自 S1Fun

啊这,有这个可能,我是租的a100
回复

使用道具 举报

     
发表于 2022-8-26 11:28 | 显示全部楼层
本帖最后由 千本blur 于 2022-8-26 11:32 编辑

你首先应该把这些模型进行离线部署,用onnx喂给tensorrt。

进一步提升性能的话一个是测一下perf把CPU用起来,觉得自己行的话还可以看看MM1模型里有没有现成能套的公式

游戏卡跑深度学习太冤种了,还不如拿来挖矿呢,高低整块A30吧。


回复

使用道具 举报

     
 楼主| 发表于 2022-8-26 11:32 | 显示全部楼层
千本blur 发表于 2022-8-26 11:28
你首先应该把这些模型进行离线部署,用onnx喂给tensorrt。

进一步提升性能的话一个是测一下perf把CPU用起 ...

太高端了。我得好好消化下,每个术语都不懂
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-8-26 12:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2022-8-26 13:22 | 显示全部楼层
不想转换模型到ONNX或者TensorRT的话,可以考虑LS推荐的TensorFlow Serving,或者NVIDIA自家的Triton Inference Server来负责调度
回复

使用道具 举报

     
发表于 2022-8-26 13:30 | 显示全部楼层
响应时间要求具体多少,如果不是很严格其实直接queue起来跑就完了

3090Ti跑跑DL也不差的。model常驻显存的话IO基本就只有新来的input了,看你说的模型大小和数量,3090ti单卡应该肯定能放下
回复

使用道具 举报

     
发表于 2022-8-26 13:31 来自手机 | 显示全部楼层
千本blur 发表于 2022-8-26 11:28
你首先应该把这些模型进行离线部署,用onnx喂给tensorrt。

进一步提升性能的话一个是测一下perf把CPU用起 ...

穷逼炼丹佬正拿着3080干活
回复

使用道具 举报

     
发表于 2022-8-26 13:33 来自手机 | 显示全部楼层
本帖最后由 191634 于 2022-8-26 15:41 编辑

不过为啥要90ti,显存我记得90和90ti都是24g,差的那点性能该跑不动还是跑不动。TensorRT能提升运行效率,但是我记得TensorFlow已经集成了TensorRT,没必要靠ONNX转换吧,又不是detectron2之类的。可能老版本没有?
回复

使用道具 举报

     
 楼主| 发表于 2022-8-26 14:43 | 显示全部楼层
191634 发表于 2022-8-26 13:33
不过为啥要90ti,显存我记得90和90ti都是24g,差的那点性能该跑不动还是跑不动。TensorRT能提升运行效率, ...

显卡只是计划申请的,其实现在毛都没有。

模型本身一个50m到100m,20个总共也就1个多g不到2g
每次客户端进来的数据也就10几m吧,转换成矩阵我不知道估计也差不太多。

cpu算一个模型是10秒,gpu我刚刚借同事的机器试了试算一次是0.7秒的样子。
但是单进程反复load模型反复计算我印象中是越算越慢的。
回复

使用道具 举报

     
 楼主| 发表于 2022-8-26 14:46 | 显示全部楼层
R.I.P 发表于 2022-8-26 13:30
响应时间要求具体多少,如果不是很严格其实直接queue起来跑就完了

3090Ti跑跑DL也不差的。model常驻显存的 ...

肯定能放下但是咋放呀。就是
for 循环
   modelList.Append(load_model(modelFile))
就行了?
回复

使用道具 举报

     
发表于 2022-8-26 16:02 | 显示全部楼层
tensorRT正解
v100/a100请
回复

使用道具 举报

     
 楼主| 发表于 2022-8-27 09:35 | 显示全部楼层
本帖最后由 子虚乌有 于 2022-8-27 18:30 编辑

基本搞定了,没用啥高大上的技术。就是普通的多线程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-22 11:36 , Processed in 0.139211 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表