gpt4 book ai didi

tensorflow - word2vec 教程示例是否意味着潜在的次优实现?

转载 作者:行者123 更新时间:2023-12-02 01:30:52 25 4
gpt4 key购买 nike

机器规范:

  • Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
  • 16GB 内存
  • 英伟达 TitanX

  • (顺便提一句
    word2vec 示例(word2vec.py 和 word2vec_o​​ptimized.py)中有一个错误,如果没有给出设备指令,它会出错。我添加了一个 with tf.device('/cpu:0') 来解决)

    超参数设置:
  • 默认模型超参数 + 8 个并发线程
  • 使用 text8 作为训练数据和 questions-words.txt 作为测试。

  • 分析结果:
  • word2vec_o​​ptimized.py:171891 字/秒(8 个线程)
  • word2vec_o​​ptimized.py:9258 字/秒(8 个线程)

  • (优化版与Mikolov的原版实现相当,标准版明显慢很多)

    训练时CPU使用率大致相同(优化版高一点)

    我查看了两个实现的代码,我无法弄清楚为什么标准实现(word2vec.py)比 C++ 手工编码的内核(word2vec_kernels.cc)慢 20 倍

    word2vec_kernel.cc 似乎没有做任何特殊的事情来加速(它首先进行批量随机采样,然后在单个批次中对样本运行循环)

    word2vec.py 版本对我来说似乎也不是最理想的,它使用标准的 tensorflow 操作并且批处理似乎是合适的。

    你们有没有做过任何内部分析来找出标准版本的性能瓶颈是什么?性能错误是否会威胁到其他神经网络的训练性能?

    最佳答案

    你们有没有做过任何内部分析来找出标准版本的性能瓶颈是什么?
    答:是的。我们做到了。分析导致我们决定编写优化版本。

    性能错误是否会威胁到其他神经网络的训练性能?
    答:这是一个复杂的问题,答案取决于场景。我不会做这样的概括。在许多其他模型中(至少对于我玩过的一些模型),计算通常由“重运算”主导,例如 matmul、卷积等。在这些模型中,损失及其梯度的计算相对便宜。另一方面,word2vec 的特殊之处在于训练步骤基本上是嵌入查找+损失梯度+应用梯度,因为这些操作不是“融合”的,执行这些操作会导致更高的内存带宽。 TF 计划开发编译器优化技术来自动融合此类操作,这将在一定程度上避免手动融合操作以优化性能的需要。

    关于tensorflow - word2vec 教程示例是否意味着潜在的次优实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34249516/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com