我有一个深度学习工作站,其中有 4 个 GPU,每个具有 6 GB 内存。是否有可能让 docker 容器将 4 个 GPU 视为一个但 24 GB?
谢谢你。
我有一个深度学习工作站,其中有 4 个 GPU,每个具有 6 GB 内存。是否有可能让 docker 容器将 4 个 GPU 视为一个但 24 GB?
谢谢你。
简短的回答:没有。
替代答案:是的,但需要额外的硬件,价格昂贵,并且可能与您现有的硬件不兼容。
解释:
如果您的 GPU 是使用连接的NVIDIA NVLink
(请查看此处的详细信息https://www.nvidia.com/en-us/design-visualization/nvlink-bridges/),则有可能。
通常NVLink
用于成对的 GPU,例如 GPU0 与 GPU1 连接,GPU2 与 GPU3 连接,在这种情况下,您可以获得的最佳选择是 2 个每个具有双倍内存的 GPU。
另一种选择是特殊InfiniBand
模块,由一些供应商安装到现代 GPU 服务器上。
我以前没有使用过 docker,但是经常使用带有多个 GPU 的 CUDA。由于多个 GPU 在物理上是分开的,因此使用多个 GPU 需要在代码级别进行大量内存同步。
我不认为 docker 可以虚拟地合并所有 GPU 内存,因为这会使 GPU 端的计算变得非常复杂。使用多个 GPU 需要自定义内核才能相互同步。
我提到的最好的类比是,“你可以让两台裸机计算机合并 RAM 并像一台机器一样运行 Microsoft Word 吗?”。