我正在尝试实现一种在 Pytorch 中进行并发推理的有效方法。
现在,我在我的 GPU 上启动了 2 个进程(我只有 1 个 GPU,两个进程都在同一个设备上)。每个进程都会加载我的 Pytorch 模型并执行推理步骤。
我的问题是我的模型在内存上占用了相当多的空间。我在 GPU 上有 12Gb 的内存,而模型仅占用约 3Gb 的内存(没有数据)。这意味着,我的 2 个进程只为模型占用了 6Gb 的内存。
现在我想知道是否可以只加载一次模型,并使用这个模型对 2 个不同的进程进行推理。我想要的是模型只消耗 3Gb 的内存,但仍然有 2 个进程。
我遇到了这个提到 IPC 的答案,但据我了解,这意味着进程 #2 将从进程 #1 复制模型,因此我最终仍会为模型分配 6Gb。
我还查看了关于 DataParallel 和 DistributedDataParallel 的 Pytorch 文档,但这似乎是不可能的。
这似乎是我想要的,但我找不到任何关于如何在推理模式下使用 Pytorch 的代码示例。
我知道这可能很难为训练做这样的事情,但请注意我只是在谈论推理步骤(模型处于只读模式,无需更新梯度)。有了这个假设,我不确定这是否可能。
繁华开满天机
繁星淼淼
相关分类