我正在34 GB预处理MS_MARCO语料库(22 GB)上从头开始训练word2vec。(预处理语料库被发送标记化,因此其大小更大)我正在使用以下代码训练我的word2vec模型:
from gensim.test.utils import common_texts, get_tmpfile
from gensim.models import Word2Vec
class Corpus():
"""Iterate over sentences from the corpus."""
def __init__(self):
self.files = [
"sp_cor1.txt",
"sp_cor2.txt",
"sp_cor3.txt",
"sp_cor4.txt",
"sp_cor5.txt",
"sp_cor6.txt",
"sp_cor7.txt",
"sp_cor8.txt"
]
def __iter__(self):
for fname in self.files:
for line in open(fname):
words = line.split()
yield words
sentences = Corpus()
model = Word2Vec(sentences, size=300, window=5, min_count=1, workers=8, sg=1, hs=1, negative=10)
model.save("word2vec.model")
我的模型现在运行了大约30多个小时。这是值得怀疑的,因为在我的i5笔记本电脑上有8个内核,我每时每刻都在100%使用所有8个内核。另外,我的程序现在似乎已经从磁盘中读取了超过100 GB的数据。我不知道这里是否有任何问题,但是我对培训产生怀疑的主要原因是因为从磁盘读取100 GB。整个语料库是34 GB,那么为什么我的代码从磁盘中读取了100 GB的数据?有谁知道在34 GB的文本上训练word2vec需要多少时间,8个内核的i5 CPU并行运行?谢谢。有关更多信息,我还从系统监视器附加了我的进程照片。
我想知道为什么我的模型从内存中读取了 112 GB,即使我的语料库总共为 34 GB?我的训练会完成吗?此外,我有点担心我的笔记本电脑的健康状况,因为它自过去30小时以来一直以峰值容量运行。现在真的很热。我是否应该添加任何附加参数,以便更快地进行训练而不会造成太大的性能损失?Word2Vec
哆啦的时光机
相关分类