[工程] gunicorn下的深度学习api 如何合理分配gpu

背景

老大提了一个需求: gunicron 起多个进程的时候,如何保证pytorch的模型均匀分配到不同的gpu上,按道理,如果能拿到类似每个进程的序号,那分配起来应该都是简单的,那核心问题提炼出来了,如何拿到进程的序号

分析

顺手直接去找一个相关的问题和分析,https://github.com/benoitc/gunicorn/issues/1278 ,发现很多人都有同样的需求,不过貌似提的pr都没有进一步的解决,所以只能进一步来看官方的文档有什么可用的。
《[工程] gunicorn下的深度学习api 如何合理分配gpu》
通过进一步发现 http://docs.gunicorn.org/en/latest/settings.html 的文档,这些在起进程的时候就可以预先定义好进程的id

实践

我们写好gunicorn_conf.py

这样我们通过环境变量就可以清楚的知道我们的当前子进程的序号

通过这个方法就可以轻松的设置自己进程所在的gpu ,这样就可以根据gpu的数量,均匀的分配进程

wsgi.py 这个就是app的实体了,正常启用就可以了。

点赞
  1. 西蓝花胡萝卜说道:

    你好
    set_process_gpu 这个函数是在哪里调用,设置了相同的gunicorn_conf文件,但是里面的函数都没被调用

    1. bruce说道:

      在你的当前业务进程里面调用就可以了

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据