cw2vec
cw2vec copied to clipboard
加速方法?
博主好,训练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',似乎不起作用,博主这边有没有加速建议?可以从哪些方面加速?
几点小想法:
- 使用 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 倍
- 训练大数据集时,可以考虑降低负取样的数量