Tensorflow word2vec教程示例是否暗示了潜在的次优实现?
机器规格:Tensorflow word2vec教程示例是否暗示了潜在的次优实现?,tensorflow,Tensorflow,机器规格: 英特尔(R)Core(TM)i7-3770处理器@3.40GHz 16GB内存 英伟达泰坦 (顺便说一句 word2vec示例(word2vec.py和word2vec_optimized.py)中存在一个bug,如果没有给出设备指令,它将出错。我添加了一个with tf.device('/cpu:0')来解决这个问题 超参数设置: 默认模型超参数+8个并发线程 使用text8作为培训数据,使用questions-words.txt作为测试 分析结果: word2vec_o
- 英特尔(R)Core(TM)i7-3770处理器@3.40GHz
- 16GB内存
- 英伟达泰坦
- 默认模型超参数+8个并发线程
- 使用text8作为培训数据,使用questions-words.txt作为测试
- word2vec_optimized.py:171891字/秒(8个线程)
- word2vec_optimized.py:9258字/秒(8个线程)
我回顾了两个实现的代码,我无法理解为什么标准实现(Word2VEC.Py)比C++手工编码内核(Word2vECKE.KNE.CC)
慢20X。 word2vec_kernel.cc似乎没有做任何特殊的加速操作(它首先进行批量随机采样,然后在单个批次中对样本运行循环) 对我来说,word2vec.py版本似乎也不是次优的,它使用标准的tensorflow操作,批处理似乎是合适的你们有没有做过任何内部分析来找出标准版本的性能瓶颈?性能缺陷会对其他神经网络的训练性能造成威胁吗?你们有没有做过任何内部分析来找出标准版本的性能瓶颈? A:是的。是的。分析导致我们决定编写优化版本 一般来说,性能缺陷会对其他神经网络的训练性能造成威胁吗?
答:这是一个复杂的问题,答案取决于具体情况。我不会做出这样的概括。在许多其他模型中(至少对于我玩过的一些模型),计算通常由“繁重的操作”控制,如matmul、卷积等。在这些模型中,损失及其梯度的计算相对便宜。另一方面,word2vec非常特殊,因为训练步骤基本上是嵌入查找+丢失梯度+应用梯度,因为这些操作没有“融合”,执行这些操作会产生更高的内存带宽。TF计划开发编译器优化技术来自动融合这些操作,这将在一定程度上避免,手动融合操作以优化性能的需要。投票结束,因为这个问题是离题的:你们有没有做过任何内部分析来找出标准版本的性能瓶颈?一般来说,性能缺陷会对其他神经网络的训练性能造成威胁吗?请参阅:,或尝试在