cw2vec icon indicating copy to clipboard operation
cw2vec copied to clipboard

加速方法?

Open ShuGao0810 opened this issue 7 years ago • 1 comments

博主好,训练7G+的语料时,当前代码运行效率非常低。我试了下用GPU加速训练,在cw2vec_kernals.cc的 REGISTER_KERNEL_BUILDER(Name("NegTrainCw2vec").Device(DEVICE_CPU), NegTrainCw2vecOp);后加上了

#if GOOGLE_CUDA
REGISTER_KERNEL_BUILDER(Name("NegTrainCw2vec").Device(DEVICE_GPU), NegTrainCw2vecOp);
#endif

同时在shell脚本中指定CUDA_VISIBLE_DEVICES='0',似乎不起作用,博主这边有没有加速建议?可以从哪些方面加速?

ShuGao0810 avatar Oct 08 '18 07:10 ShuGao0810

几点小想法:

  • 使用 GPU 会减慢训练速度,仅用 CPU 即可。此代码库不使用 GPU
  • 此代码库支持多核 CPU 并行训练,但加速效果不甚明显
  • 数据的预处理我已经测试过了,运算速度的瓶颈不在这里
  • https://github.com/noobiegz/cw2vec/blob/master/cw2vec_kernels.cc 是一个可以怀疑的对象
  • 优化效率的第一步是要知道慢在哪里,建议对程序测下,看大部分的时间都花在哪里了,这有两个方面:
    • 可以先粗略的看下时间的消耗,例如使用 pycharm 自带的 "Profile"
    • tf 图的执行,可以参考下这里:https://github.com/tensorflow/tensorflow/issues/1824#issuecomment-225754659
  • 运行速度大约需要提升 5 - 10 倍
  • 训练大数据集时,可以考虑降低负取样的数量

qwfy avatar Oct 08 '18 11:10 qwfy