Hanlp 需要配置启用 GPU 吗?

文档中说通过 batch 就可以使用 GPU. 这个是默认的吗? 我测试了,还是显示使用 CPU。是不是哪里要开启或配置一下?下面是测试 github 说明文档中的分词例子,使用了 batch:

Executing op Shape in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op StridedSlice in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op AddV2 in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op ResourceGather in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op Identity in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op Identity in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op NotEqual in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op Cast in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op MutexLock in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op ReadVariableOp in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op Identity in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op ReadVariableOp in device /job:localhost/replica:0/task:0/device:CPU:0
Executing op ConsumeMutexLock in device /job:localhost/replica:0/task:0/device:CPU:0

我配置好了 gpu.

不需要配置HanLP。但如果你的显卡驱动,cuda,cudnn,TensorFlow版本有任何一项出问题,都不会用上GPU。这些问题影响全部依赖GPU的library,包括TensorFlow、PyTorch等,与HanLP无关,建议自行排查。

# nvidia-smi
Wed Mar 11 04:12:42 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.81                 Driver Version: 384.81                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  On   | 00000000:00:0D.0 Off |                    0 |
| N/A   35C    P0    30W / 250W |    584MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P100-PCIE...  On   | 00000000:00:0E.0 Off |                    0 |
| N/A   33C    P0    31W / 250W |    584MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  Tesla P100-PCIE...  On   | 00000000:00:0F.0 Off |                    0 |
| N/A   31C    P0    32W / 250W |    584MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla P100-PCIE...  On   | 00000000:00:10.0 Off |                    0 |
| N/A   33C    P0    32W / 250W |    584MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

我们训练其他 TF 模型,GPU 都用上了。但是在同样环境下 hanlp 现在还是使用 CPU. 怎样可以进一步排查下原因?

HanLP依赖tensorflow==2.1.0。安装tensorflow==2.1.0,打开terminal import tensorflow 随便创建一个tensor,看看GPU到底用上了没有。

我之前尝试的结果,tensorflow2.1.0要求CUDA=10.1,cuDNN=7.6.5,你的CUDA还是9.x肯定不行啊。此外你这显卡驱动384.81版本太低也要更新。

1 Like

感谢 @illusions 的评论,验证了我的评论。

1 Like

谢谢两位大佬,我可能需要操作系统一起升级了。ubuntu 16.04

我也是ubuntu 16.04,正好之前搞得时候写了两篇博客,内容比较粗略,你可以随便看看~
https://blog.csdn.net/weixin_41712499/article/details/104618529
https://blog.csdn.net/weixin_41712499/article/details/104633578

1 Like

找到线索1.0 谢谢各位大佬。我去尝试一下window环境