PaddlePaddle/PARL 碰到的小问题(一)
2019-09-29 本文已影响0人
vickeex
github addr: https://github.com/PaddlePaddle/PARL.git
readthedoc addr: https://parl.readthedocs.io/en/latest/index.html
run examples
试验跑PARL给的甜栗子,需要装一下paddlepaddle。
$ pip install paddlepaddle
-
cpu:如果直接 install paddlepaddle,那么是CPU版本
-
gpu:
$ pip install paddlepaddle-gpu
如上命令默认是最新版本。但是CUDA版本也需要与软件版本对应,否则会碰到错误如下:
Traceback (most recent call last):
......
File "/home/inspur/anaconda3/lib/python3.6/site-packages/parl/core/fluid/agent.py", line 90, in __init__
0) if machine_info.is_gpu_available() else fluid.CPUPlace()
paddle.fluid.core_avx.EnforceNotMet: cudaGetDeviceCount failed in paddle::platform::GetCUDADeviceCountImpl, error code : 35, Please see detail in https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__TYPES.html#
group__CUDART__TYPES_1g3f51e3575c2178246db0a94a430e0038: CUDA driver version is insufficient for CUDA runtime version at [/paddle/paddle/fluid/platform/gpu_info.cc:106]
即"CUDA driver version is insufficient",此时解决办法如下:
- 使用命令查看CUDA和CUDNN版本
$ cat /usr/local/cuda/version.txt
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
- 选择对应版本:paddlepaddle-gpu==X.X.X.postXX,post后的两个X分别代表CUDA和CUDNN版本。比如我是CUDA版本9和CUDNN版本7,我就
$pip install paddlepaddle-gpu==1.5.1.post97
,大致对照关系如下表。
CUDA版本 | CUDNN版本 | paddlepaddle版本 |
---|---|---|
9 | 7.0 | paddlepaddle-gpu==1.2.1.post97 |
9 | 7.1 | paddlepaddle-gpu==1.3.1.post97 |
9 | 7.2 | paddlepaddle-gpu==1.4.1.post97 |
9 | 7.3 | paddlepaddle-gpu==1.5.1.post97 |
8 | 7.X | paddlepaddle-gpu==1.5.1.post87 |
9 | 7.X | paddlepaddle-gpu==1.5.1.post97 |
10 | 7.X | paddlepaddle-gpu==1.5.1.post107 |
好啦,现在$ python3 ~/PARL/examples/QuickStart/train.py
就用上PARL了,ok了呀么么哒
note: 发现"PARL requires paddle>=1.5.1",所以还是得用1.5.1.postXX,虽然有可能有问题,但目前还没有. 建议当匹配版本<1.5.1时升级下CUDNN等.
定个小目标:本赛季上王者,下赛季就随便玩啦。
咦,今晚就上了?
run error: allocating error
C++ Callstacks:
Enforce failed. Expected allocating <= available, but received allocating:10238983829 > available:8762294016.
Insufficient GPU memory to allocation. at [/paddle/paddle/fluid/platform/gpu_info.cc:262]
使用时已有其他进程占用GPU,导致的运行错误。
思考:paddlepaddle/PARL需要对GPU的完整控制权?
通过添加参数设置解决:
CUDA_VISIBLE_DEVICES=0
FLAGS_fraction_of_gpu_memory_to_use=0.99