占用 GPU 的服务如何解决并发?

2020-05-31 19:58:41 +08:00
 xiaoFine
比如某个服务需要用 GPU 资源(而且不是 JAVA 写的,是 cpp 或者 Python ),是不是需要用跨语言的 MQ 来实现削峰呢(例如 rabbitMQ )
4061 次点击
所在节点    程序员
23 条回复
blless
2020-05-31 20:03:19 +08:00
并发是解决 IO 密集问题, 计算密集要么靠算法 要么就靠加硬件了
helloworld000
2020-05-31 20:27:52 +08:00
哥们我从你问的这些问题可以感觉你貌似学了不少 fancy 的名词,但是并没有都真正理解这些到底是干嘛的。。。
David1119
2020-05-31 20:29:33 +08:00
@helloworld000 哈哈哈,够 fancy~~~
andj4cn
2020-05-31 20:37:13 +08:00
你需要的仅仅是计算资源调度和分配,跟 MQ 没有任何卵关系
xiaoFine
2020-05-31 20:38:55 +08:00
@blless 对,算法端已经不能提速了,gpu 资源有限,并发一高就崩了,所以想着加个消息队列
xiaoFine
2020-05-31 20:39:27 +08:00
@andj4cn 这两个已经没法优化了
xiaoFine
2020-05-31 20:43:39 +08:00
@helloworld000 是的,确实是个二把刀,还请指教
janxin
2020-05-31 21:26:01 +08:00
@xiaoFine 不能优化就多插卡啊
matrix67
2020-05-31 21:56:37 +08:00
@xiaoFine 并发一高就崩了 你要限流啊。 调用 gpu 说到底也是个任务,你让任务进不来不就行了。
inwar
2020-05-31 22:12:40 +08:00
专业平台有多实例+gpu 虚拟化,自己玩可以做调度,分时间片
sioncheng
2020-05-31 22:12:40 +08:00
粗浅地认为,消耗 GPU 的程序应该是计算密集型的吧,而 rabbbitmq 是用来支撑 IO 密集型的程序。
liuxey
2020-05-31 22:19:24 +08:00
分开来看
1. 急迫需要 GPU 算力的服务,为什么要削峰,还不赶紧跑满计算出结果
2. 不急破 GPU 算力的服务,反正不急,GPU 跑着慢慢算呗,阻塞就阻塞
tfdetang
2020-05-31 22:33:15 +08:00
小规模的推理服务其实不是特别需要 gpu, 因为显存 io 的开销很大,不如多分几个 cpu 推理服务。

如果非要用 gpu,那必须用好 batch 运算。将队列中的任务压到一个 batch 里再传递到 gpu 。

当然简单的只是做一个阻塞队列也是可以的
hallDrawnel
2020-05-31 22:35:52 +08:00
这个要看具体的算法,比如深度学习模型可以做 batch 化调度,稍微增加一小点延迟提高计算速度。计算密集型的任务问题不在于 IO 等待,在于算不完,只能加硬件或者优化算法解决。
xiaoFine
2020-05-31 23:01:39 +08:00
@tfdetang 队列转 batch 我确实没想到!感谢,我去试试
qieqie
2020-05-31 23:07:56 +08:00
其实楼主的想法并非没有道理,
cuda 的驱动对于每一个 stream 是维护了一个内部的 kernel 发射队列的,
如果超过了这个队列的上限会阻塞 cpu 线程。
所以需要做 batch 或者在 cpu 上用 queue 调度。
xcstream
2020-05-31 23:09:28 +08:00
就是排队,一个一个来
different
2020-05-31 23:15:06 +08:00
会不会是多个服务申请显存,显存不够就炸了?
xiaoFine
2020-05-31 23:29:39 +08:00
@different 嗯对的,所以单纯的加显卡和优化模型可能对大量的并发请求而言是杯水车薪
helloworld000
2020-06-01 07:05:39 +08:00
好了不开玩笑了

前面提了很多解决办法,比如加机器,multiple-queue,batch ( gang scheduling )这些都算方法之一

但真正的得看你具体应用具体环境的。这玩意不会有银弹或者 1,2 个这些 fancy words 就能搞定的。

整个一套里面还有很多东西,弄下来真没你想的那么简单,大公司都是有专门的 infra team 来做这些。


给你一个正确的学习思路,你可以看看 k8s 相关文档,google borg,borg2 ( https://research.google/pubs/pub49065/) 还有 bytedance 的这个工作 https://github.com/bytedance/byteps

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/677256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX