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