引言
最近容器比较火,容器支持对CPU和内存的资源限制,但是GPU还不是很明朗,多个容器能不能共享一个GPU呢?如果共享的话,是并行的方式还是并发的方式呢?又如何确保GPU的资源能够被高效利用呢?本文,通过查阅大量官方文档,并通过实验验证,想一探究竟~
问题描述
GPU是深度学习的利器,相比于CPU,并行化的执行方式能够实现更高的时间效率。同时,它的价格也比较昂贵,此次想要做实验的NVIDIA TESLA V100(32G)在京东标价就高达7万人民币,楼主没钱买智能在普通的GPU上做做实验。当一个学校或者一个公司配备了一个土豪级GPU,如果想要让所有人都能使用,同时考虑到系统安全问题,可以让每个用户的编程环境被约束在一个docker容器(container)中。目前,可以实现CPU和内存的虚拟化(即限制用户可用的CPU配额和内存空间)[1],甚至可以实时地调整配额[2],但GPU在容器中虚拟化的文章还是很少。
考虑这样一个问题,当多个用户同时在同一个GPU上提交作业时,GPU资源如何进行分配,现有的技术能否满足用户需求?