特征化/NLP 比反向传播更昂贵的训练管道

数据挖掘 神经网络 张量流 nlp 训练 词嵌入
2022-02-23 18:06:49

我正在做一个文档分类项目,我在 tensorflow 中使用神经网络,其中的特征是来自 fastext 或 word2vec 的 300 维词嵌入(是的,我知道有更新更好的嵌入——这是为了向后兼容性)。

每个文档都很长——3000 多个令牌。

特征化包括对文档进行标记、嵌入并将嵌入堆叠到维度数组中batchsize, max_doc_length, features制作批处理文件(在 CPU 上)所需的时间是执行一次反向传播迭代(也在 CPU 上)所需时间的 5 倍以上。如果反向传播速度更快,我的问题在 GPU 上会更糟。

我的批次大小几乎为 1GB,所以如果我要在开始反向传播之前将所有内容写入磁盘,我会使用几乎整个 TB。这太多了,特别是考虑到我想尝试不同的特征化策略。

那么,有什么好的方法可以解决这个问题呢?是否有旨在解决此问题的软件包?

现在我有两个并行的进程——一个生成批处理并将它们保存到磁盘(并行),另一个加载它们,将它们用于反向传播,然后删除它们。感觉有点笨拙,我不能成为第一个遇到这个问题的人。

建议赞赏!

1个回答

有很多选择可以花钱:

  • 获得更好的 CPU。
  • 由于每个文档都是独立的,因此将流程分布在集群中。
  • 减少词汇量。如果只使用前 n 个最流行的词,它会大大减少数据的大小。
  • 减小嵌入空间的大小。
  • 切换到 doc2vec,这样文档本身就是一个学习嵌入。