尝试在PyTorch中创建“全局嵌入层提供程序”

时间:2018-11-23 00:53:44

标签: python python-multiprocessing pytorch

我正在深入研究深度学习模型。该模型包含具有相同词嵌入层的多个分类器,并且可以在不同过程中同时进行训练。作者最初的实现使用不同的过程,该过程只是启动不同的训练模型并在单独的过程中对其进行训练。因为每个进程/分类器都使用一个嵌入层,该嵌入层需要大于4GB的加载手套文件,所以它占用了太多内存。我想知道是否有一种方法可以使那些进程共享其嵌入层,从而减少内存使用。

我使用了multiprocessing库,但是没有用。我的解决方案是将原始训练功能放入multiprocessing.Pool中。对于共享嵌入层:

首先,我使用multiprocessing.Manager.dict(),但是会引发Bad message length错误。

然后我尝试将嵌入层作为参数传递给训练函数(默认情况下通过引用传递)。它适用于手套文件(10000行)的示例,但是如果我使用完整的手套文件(glove.42B.300d.txt),则该过程以0退出,没有错误消息,不进入训练功能。

我也尝试使用全局变量,但是其行为与传递给函数完全一样。

0 个答案:

没有答案