gunicorn+flask使用问题修复方案
admin
2024-05-22 20:51:17
0次

来源:torch模型在线推理采用gunicorn+flask部署API服务

问题简述:torch模型——huggingface bert模型,CPU核数96+4个GPU同时使用,启动worker=80左右(80个并发请求),前期能够调用GPU,后期发现有些进程重启后就不再被使用了(top下看不到该pid的进程),因此使用GPU的就不再被使用了,只剩下使用CPU的部分worker,请求方描述,只改变了 java中try请求等待时间加长了。测试也发现postman单个请求响应时间为8min,是以前的至少4倍(之前最多2min,基本上在1min内响应)。

当全部只采用GPU训练(随机选择device),采用kill -9杀死pid时,ps下面还有新的进程产生,这是咋回事?经搜索发现无法杀死gunicorn子进程,它会再次拉起新的进程(这种进程都是死的,根本无法执行,当有请求过来时返回500),因此如果想要每个GPU启动4-5个进程,只能选择nginx转发,指定单个GPU 4~5个works,但nginx转发可能存在网关耗时问题(暂不考虑,另外nginx怎么和我之前用的不太一样了啊,yum install nginx安装的,之前是ubuntn结果)

为啥要杀死某个进程?这是因为启动的时候无法选定所有GPU均匀分布,也就是说做不到4个卡每个卡4个进程(采用random随机选择GPU index,只有一个脚本的情况下必然无法指定GPU,而如果采用preload_app=False,结果只会选定某个GPU),因此设定preload_app=True,它会共享某部分数据(内存),而模型的数据(输入输出)并没有共享。如果某个卡进程数(pid个数)较少,某个卡较多,这肯定不太好,不能充分利用GPU效率。

为啥出现GPU不能用的情况?不被利用的情况,在之前启动时用了GPU(杀死了部分不合理的pid,该卡进程较多,所以杀了几个)和全部CPU,而CPU进程占比较多(80%+),如果仅仅是因为阻塞导致重启该进程,那么CPU进程最后还能运行(可能有些CPU进程就是没死,部分CPU进程没有发生阻塞)而GPU却死了不能重启。无解,只能增加GPU数,或者多台机器部署。

在gunicorn的执行config中,设置的worker数应该与random选择的index相适合,比如全部用GPU情况下index=[0,1,2,3],那么worker应设置为4的倍数,比如8,16,20,但index如果仅仅为[0,1,2,3],可能会出现某个卡分配的进程多,有的分配的少,为了足够随机,index应该设置为更大长度,比如,[0,1,2,3]*20或者[0123]*40 .这种设置会足够随机(random使用)。

目前worker_class仍旧是采用gevent模式,sync未尝试,因为模型推理可能较慢,异步模式好一点吧。

参考文档:flask+gunicorn,flask加载两次?gunicorn启动 ,nginx问题,nginx部署

相关内容

热门资讯

大渡河畔红色地标引游客 标题:赓续长征精神 奋进复兴征程|大渡河畔红色地标引游客国庆假期,各地游客来到位于四川省雅安市石棉县...
滇池东岸美食风物季丨10月6日... 秋日湖畔,音浪不息2026滇池东岸美食风物季持续火热10月6日滇池东岸将带来旷野歌者王金永的昆明专场...
从茶马古道到动车飞驰 松州古城... 四川在线记者王攀 川观新闻阿坝观察 刘文佳松潘县融媒体中心陈孙舟扬王小兰侯明磊10月5日早上8点,松...
从“面朝黄土”到奔赴“诗与远方... 新华社西安10月5日电(记者邹竞一、蔡馨逸)“等忙完这一阵,我就去北京,看天安门!”国庆假期,陕西西...
家国同框 | 佳节乡村游,我在... 朱明 摄家国同框 | 佳节乡村游,我在记录家国同框 | 佳节乡村游,我在记录家国同框 | 佳节乡村游...
双节无障碍文旅升温,多地景区探... 本报(chinatimes.net.cn)记者李氏琼 北京报道“您好,我们这里有免费提供的轮椅,请问...
吕梁碛口景区发布紧急提醒 尊敬的游客朋友:截至目前,碛口景区游客接待量已达到景区上限。为确保游览体验和旅游安全,请广大游客及时...
中英旅游,向文化体验更深处去 在英国泰晤士河畔,议会大厦、大本钟前,举着手机拍照的中国游客络绎不绝。有人拿出封面印有大本钟照片的高...
成都高新区“欢庆国庆·艺彩芳华... 封面新闻记者 易弋力10月5日,由成都高新区商务文化旅游局指导的“欢庆国庆·艺彩芳华”2026年高新...
花溪湖:山水之间见证城市蝶变 如今的花溪湖,波光潋滟,草木环生,已然是市民闲暇时散心休闲的好去处。岁月流转,这片水域迎来全新的蜕变...