volta

你真得了解多个docker容器如何共享GPU么?

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