- 安装与编译
- Linux安装PaddlePaddle
- Q:Ubuntu18.10、CPU版本、Python3.6编译错误如何解决?
- Q:遇到如下cuDNN报错如何解决?
- Q:cuda9.0需要安装哪一个版本的paddle,安装包在哪?
- Q:使用 pip install paddlepaddle-gpu==0.14.0.post87命令在公司内部开发GPU机器上安装PaddlePaddle,安装信息如下:
- Q:在使用PaddlePaddle GPU的Docker镜像的时候,出现 Cuda Error: CUDA driver version is insufficient for CUDA runtime version?
- Q:安成功安装了PaddlePaddle CPU版本后,使用Paddle训练模型,训练过程中,Paddle会自动退出,gdb显示Illegal instruction?
- Q:使用sudo nvidia-docker run —name Paddle -it -v $PWD:/work hub.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda8.0-cudnn7 /bin/bash,安装成功后,出现如下问题
- Q:使用的系统是Ubuntu 16.04,GPU相关环境:cuda8.0, cudnn 6.0, 安装最新版的paddlepaddle fluid 后,import paddle.fluid时问题如下:
- Q:安装的是cuda9.0和cudnn7.0,默认安装的是0.14.0.post87,训练一个手写数据那个例子的时候报错?
- Q:版本为paddlepaddle_gpu-0.14.0.post87-cp27-cp27mu-manylinux1_x86_64.whl,跑一个简单的测试程序,出现Segmentation fault。其中 如果place为cpu,可以正常输出,改成gpu则core。
- Q:安装完了PaddlePaddle后,出现以下python相关的单元测试都过不了的情况:
- Q:根据官方文档中提供的步骤安装Docker,无法下载需要的golang,导致tar: Error is not recoverable: exiting now?
- Q:在Docker镜像上,GPU版本的PaddlePaddle运行结果报错
- Q:在Liunx环境上,通过编译源码的方式安装PaddlePaddle,当安装成功后,运行 paddle version, 出现 PaddlePaddle 0.0.0?
- Q:安装PaddlePaddle过程中,出现paddlepaddle*.whl is not a supported wheel on this platform?
- MacOS安装PaddlePaddle
- Q:PaddlePaddle官方文档中,关于MacOS下安装PaddlePaddle只提及了MacOS中使用Docker环境安装PaddlePaddle的内容,没有Mac本机安装的内容?
- Q:以源码方式在MacOS上安装时,出现Configuring incomplete, errors occured!?
- Q:MacOS 10.12下编译PaddlePaddle出现/bin/sh: wget: command not found,如何解决?
- Q:官网中只介绍了Mac下使用Docker安装编译PaddlePaddle的方式,因为我对Docker不怎么熟悉,想直接安装到本地的Mac系统中,MacOS版本为10.13,是符合要求的,但尝试了多次后,已经出现No rule to make target错误?
- Q:MacOS本机直接通过源码编译的方式安装PaddlePaddle出现[paddle/fluid/platform/CMakeFiles/profiler_py_proto.dir/all] Error 2?
- Q:MacOS本地编译PaddlePaddle github上develop分支的代码出现,出现No such file or directory错误?
- Q:paddle源码编译(osx)报各种module找不到的问题
- Q:在MacOS下,本地直接编译安装PaddlePaddle遇到collect2: ld terminated with signal 9 [Killed] ?
- Q:因为需要安装numpy等包,但在Mac自带的Python上无法安装,权限错误导致难以将PaddlePaddle正常安装到Mac本地?
- Linux安装PaddlePaddle
安装与编译
Linux安装PaddlePaddle
Q:Ubuntu18.10、CPU版本、Python3.6编译错误如何解决?
- 版本、环境信息1)PaddlePaddle版本:Github develop版本 2)CPU:vmware14 3)GPU:非GPU4)系统环境:Ubuntu18.10 64位 Python3.6
- 安装方式信息:本地编译中本机编译第十步make 命令
- 错误信息
- [100%] Built target warpctc
- Install the project...
- -- Install configuration: "Release"
- -- Installing: /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/install/warpctc/lib/libwarpctc.so
- -- Installing: /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/install/warpctc/include/ctc.h
- [ 5%] Completed 'extern_warpctc'
- [ 5%] Built target extern_warpctc
- Scanning dependencies of target extern_gzstream
- [ 5%] Creating directories for 'extern_gzstream'
- [ 5%] Performing download step (git clone) for 'extern_gzstream'
- Cloning into 'extern_gzstream'...
- Already on 'master'
- Your branch is up to date with 'origin/master'.
- [ 5%] No patch step for 'extern_gzstream'
- [ 5%] No update step for 'extern_gzstream'
- [ 5%] No configure step for 'extern_gzstream'
- [ 5%] Performing build step for 'extern_gzstream'
- CPPFLAGS: "-I/home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/install/zlib/include" -I. -fPIC -O
- LDFLAGS: "-L/home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/install/zlib/lib" -L. -lgzstream -lz
- [ 5%] Performing install step for 'extern_gzstream'
- [ 5%] Completed 'extern_gzstream'
- [ 5%] Built target extern_gzstream
- Scanning dependencies of target place
- [ 5%] Building CXX object paddle/fluid/platform/CMakeFiles/place.dir/place.cc.o
- In file included from /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/boost/src/extern_boost/boost/mpl/aux_/na_assert.hpp:23,
- from /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/boost/src/extern_boost/boost/mpl/arg.hpp:25,
- from /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/boost/src/extern_boost/boost/variant/variant_fwd.hpp:19,
- from /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/boost/src/extern_boost/boost/variant/variant.hpp:27,
- from /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/boost/src/extern_boost/boost/variant.hpp:17,
- from /home/eason/main/source/ai/alg/Paddle/Paddle/paddle/fluid/platform/variant.h:45,
- from /home/eason/main/source/ai/alg/Paddle/Paddle/paddle/fluid/platform/place.h:21,
- from /home/eason/main/source/ai/alg/Paddle/Paddle/paddle/fluid/platform/place.cc:15:
- /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/boost/src/extern_boost/boost/mpl/assert.hpp:154:21: error: unnecessary parentheses in declaration of ‘assert_arg’ [-Werror=parentheses]
- failed ************ (Pred::************
- ^
- /home/eason/main/source/ai/alg/Paddle/Paddle/build/third_party/boost/src/extern_boost/boost/mpl/assert.hpp:159:21: error: unnecessary parentheses in declaration of ‘assert_not_arg’ [-Werror=parentheses]
- failed ************ (boost::mpl::not_::************
- ^
- cc1plus: all warnings being treated as errors
- make[2]: *** [paddle/fluid/platform/CMakeFiles/place.dir/build.make:63: paddle/fluid/platform/CMakeFiles/place.dir/place.cc.o] Error 1
- make[1]: *** [CMakeFiles/Makefile2:2670: paddle/fluid/platform/CMakeFiles/place.dir/all] Error 2
- make: *** [Makefile:152: all] Error 2
- 问题解答自行编译建议的GCC版本:4.8、5.4以及更高。
Q:遇到如下cuDNN报错如何解决?
- CUDNN_STATUS_NOT_INITIALIZED at [/paddle/paddle/fluid/platform/device_context.cc:216]
- 问题解答cuDNN与CUDA版本不一致导致。PIP安装的GPU版本默认使用CUDA 9.0和cuDNN 7编译,请根据您的环境配置选择在官网首页选择对应的安装包进行安装,例如paddlepaddle-gpu==1.2.0.post87 代表使用CUDA 8.0和cuDNN 7编译的1.2.0版本。
Q:cuda9.0需要安装哪一个版本的paddle,安装包在哪?
- 问题解答pip install paddlepaddle-gpu 命令将安装支持CUDA 9.0 cuDNN v7的PaddlePaddle,可以参考安装说明文档
Q:使用 pip install paddlepaddle-gpu==0.14.0.post87命令在公司内部开发GPU机器上安装PaddlePaddle,安装信息如下:
机器的CUDA信息如下:按照官网安装:pip install paddlepaddle-gpu==0.14.0.post87执行 import paddle.fluid as fluid 失败奇怪的是,同样的环境下,上周运行成功,这周确运行失败,求解答?
- 问题解答这通常是GPU显存不足导致的,请检查一下机器的显存,确保显存足够后再尝试import paddle.fluid
Q:在使用PaddlePaddle GPU的Docker镜像的时候,出现 Cuda Error: CUDA driver version is insufficient for CUDA runtime version?
- 问题解答通常出现
Cuda Error: CUDA driver version is insufficient for CUDA runtime version
, 原因在于没有把机器上CUDA相关的驱动和库映射到容器内部。使用nvidia-docker, 命令只需要将docker换为nvidia-docker即可。更多请参考nvidia-docker
Q:安成功安装了PaddlePaddle CPU版本后,使用Paddle训练模型,训练过程中,Paddle会自动退出,gdb显示Illegal instruction?
- 报错信息
- *** Aborted at 1539697466 (unix time) try "date -d @1539697466" if you are using GNU date ***
- PC: @ 0x0 (unknown)
- *** SIGILL (@0x7fe3a27b7912) received by PID 13005 (TID 0x7fe4059d8700) from PID 18446744072140585234; stack trace: ***
- @ 0x318b20f500 (unknown)
- @ 0x7fe3a27b7912 paddle::framework::VisitDataType<>()
- @ 0x7fe3a279f84f paddle::operators::math::set_constant_with_place<>()
- @ 0x7fe3a1e50c21 paddle::operators::FillConstantOp::RunImpl()
- @ 0x7fe3a27526bf paddle::framework::OperatorBase::Run()
- @ 0x7fe3a1ca31ea paddle::framework::Executor::RunPreparedContext()
- @ 0x7fe3a1ca3be0 paddle::framework::Executor::Run()
- @ 0x7fe3a1bc9e7d _ZZN8pybind1112cpp_function10initializeIZN6paddle6pybindL13pybind11_initEvEUlRNS2_9framework8ExecutorERKNS4_11ProgramDescEPNS4_5ScopeEibbE63_vIS6_S9_SB_ibbEINS_4nameENS_9is_methodENS_7siblingEEEEvOT_PFT0_DpT1_EDpRKT2_ENUlRNS_6detail13function_callEE1_4_FUNEST_
- @ 0x7fe3a1c14c24 pybind11::cpp_function::dispatcher()
- @ 0x7fe405acf3e4 PyEval_EvalFrameEx
- @ 0x7fe405ad0130 PyEval_EvalCodeEx
- @ 0x7fe405ace4a1 PyEval_EvalFrameEx
- @ 0x7fe405ad0130 PyEval_EvalCodeEx
- @ 0x7fe405ace4a1 PyEval_EvalFrameEx
- @ 0x7fe405ad0130 PyEval_EvalCodeEx
- @ 0x7fe405a5c181 function_call
- @ 0x7fe405a340f3 PyObject_Call
- @ 0x7fe405accde7 PyEval_EvalFrameEx
- @ 0x7fe405acec56 PyEval_EvalFrameEx
- @ 0x7fe405ad0130 PyEval_EvalCodeEx
- @ 0x7fe405a5c27d function_call
- @ 0x7fe405a340f3 PyObject_Call
- @ 0x7fe405accde7 PyEval_EvalFrameEx
- @ 0x7fe405ad0130 PyEval_EvalCodeEx
- @ 0x7fe405a5c181 function_call
- @ 0x7fe405a340f3 PyObject_Call
- @ 0x7fe405a46f7f instancemethod_call
- @ 0x7fe405a340f3 PyObject_Call
- @ 0x7fe405a8abd4 slot_tp_call
- @ 0x7fe405a340f3 PyObject_Call
- @ 0x7fe405acd887 PyEval_EvalFrameEx
- @ 0x7fe405acec56 PyEval_EvalFrameEx
- 问题解答CPU版本PaddlePaddle自动退出的原因通常是因为所在机器不支持AVX2指令集而主动abort。简单的判断方法:用gdb-7.9以上版本(因编译C++文件用的工具集是gcc-4.8.2,目前只知道gdb-7.9这个版本可以debug gcc4编译出来的目标文件):
- $ /path/to/gdb -iex "set auto-load safe-path /" -iex "set solib-search-path /path/to/gcc-4/lib" /path/to/python -c core.xxx
在gdb界面:
- (gdb) disas
找到箭头所指的指令,例如:
- 0x00007f381ae4b90d <+3101>: test %r8,%r8
- => 0x00007f381ae4b912 <+3106>: vbroadcastss %xmm0,%ymm1
- 0x00007f381ae4b917 <+3111>: lea (%r12,%rdx,4),%rdi
然后google一下这个指令需要的指令集。上面例子中的带xmm和ymm操作数的vbroadcastss指令只在AVX2中支持然后看下自己的CPU是否支持该指令集
- cat /proc/cpuinfo | grep flags | uniq | grep avx --color
如果没有AVX2,就表示确实是指令集不支持引起的主动abort如果没有AVX2指令集,就需要要安装不支持AVX2指令集版本的PaddlePaddle,默认安装的PaddlePaddle是支持AVX2指令集的,因为AVX2可以加速模型训练的过程,更多细节可以参考安装文档
Q:使用sudo nvidia-docker run —name Paddle -it -v $PWD:/work hub.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda8.0-cudnn7 /bin/bash,安装成功后,出现如下问题
- import paddle.fluid
- *** Aborted at 1539682149 (unix time) try "date -d @1539682149" if you are using GNU date ***
- PC: @ 0x0 (unknown)
- *** SIGILL (@0x7f6ac6ea9436) received by PID 16 (TID 0x7f6b07bc7700) from PID 18446744072751846454; stack trace: ***
- 问题解答请先确定一下机器是否支持AVX2指令集,如果不支持,请按照相应的不支持AVX2指令集的PaddlePaddle,可以解决该问题。
Q:使用的系统是Ubuntu 16.04,GPU相关环境:cuda8.0, cudnn 6.0, 安装最新版的paddlepaddle fluid 后,import paddle.fluid时问题如下:
- 报错信息
- Traceback (most recent call last):
- File "", line 1, in
- File "/usr/local/lib/python2.7/dist-packages/paddle/fluid/init.py", line 132, in
- bootstrap()
- File "/usr/local/lib/python2.7/dist-packages/paddle/fluid/init.py", line 126, in bootstrap
- core.init_devices(not in_test)
- paddle.fluid.core.EnforceNotMet: CUBLAS: not initialized, at [/paddle/paddle/fluid/platform/device_context.cc:153]
- PaddlePaddle Call Stacks:
- 0 0x7f0238da06f6p paddle::platform::EnforceNotMet::EnforceNotMet(std::exception_ptr::exception_ptr, char const*, int) + 486
- 1 0x7f0239b1ee54p paddle::platform::CUDADeviceContext::CUDADeviceContext(paddle::platform::CUDAPlace) + 1684
- 2 0x7f0239b1feb0p paddle::platform::DeviceContextPool::DeviceContextPool(std::vector<boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void, boost::detail::variant::void, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_>, std::allocator<boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> > > const&) + 752
- 3 0x7f0238e368bcp paddle::framework::InitDevices(bool, std::vector<int, std::allocator >) + 588
- 4 0x7f0238e36addp paddle::framework::InitDevices(bool) + 285
- 5 0x7f0238d865bap
- 6 0x7f0238db1804p pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 2596
- 7 0x4bc3fap PyEval_EvalFrameEx + 1482
- 8 0x4b9ab6p PyEval_EvalCodeEx + 774
- 9 0x4c1e6fp PyEval_EvalFrameEx + 24639
- 10 0x4b9ab6p PyEval_EvalCodeEx + 774
- 11 0x4b97a6p PyEval_EvalCode + 22
- 12 0x4b96dfp PyImport_ExecCodeModuleEx + 191
- 13 0x4b2b06p
- 14 0x4b402cp
- 15 0x4a4ae1p
- 16 0x4a4513p PyImport_ImportModuleLevel + 2259
- 17 0x4a59e4p
- 18 0x4a577ep PyObject_Call + 62
- 19 0x4c5e10p PyEval_CallObjectWithKeywords + 48
- 20 0x4be6d7p PyEval_EvalFrameEx + 10407
- 21 0x4b9ab6p PyEval_EvalCodeEx + 774
- 22 0x4eb30fp
- 23 0x44a7a2p PyRun_InteractiveOneFlags + 400
- 24 0x44a56dp PyRun_InteractiveLoopFlags + 186
- 25 0x43092ep
- 26 0x493ae2p Py_Main + 1554
- 27 0x7f026bfa1830p __libc_start_main + 240
- 28 0x4933e9p _start + 41
- 问题解答请先查看您系统GPU环境的适配关系,应该选择和您的系统已经安装的CUDA版本相同的whl包,您的系统是cuda 8.0, cudnn 6 应该使用cuda8.0_cudnn7_avx_mkl才可以适配。然后尝试
import paddle.fluid
命令看看是否报错。如果报错,则可能是GPU 和CUDA环境没有正确配置。如果没有报错,请判断是否有给所有相关文件sudo权限
。
Q:安装的是cuda9.0和cudnn7.0,默认安装的是0.14.0.post87,训练一个手写数据那个例子的时候报错?
- 报错信息:
- Traceback (most recent call last):
- File "train.py", line 240, in <module>
- main()
- File "train.py", line 236, in main
- train(args)
- File "train.py", line 147, in train
- exe.run(fluid.default_startup_program())
- File "/usr/local/lib/python2.7/dist-packages/paddle/fluid/executor.py", line 443, in run
- self.executor.run(program.desc, scope, 0, True, True)
- paddle.fluid.core.EnforceNotMet: enforce allocating <= available failed, 1827927622 > 1359806208
- at [/paddle/paddle/fluid/platform/gpu_info.cc:119]
- PaddlePaddle Call Stacks:
- 0 0x7f1bac5312f6p paddle::platform::EnforceNotMet::EnforceNotMet(std::__exception_ptr::exception_ptr, char const*, int) + 486
- 1 0x7f1bad3a95bep paddle::platform::GpuMaxChunkSize() + 766
- 2 0x7f1bad2d92ddp paddle::memory::GetGPUBuddyAllocator(int) + 141
- 3 0x7f1bad2d94ecp void* paddle::memory::Alloc<paddle::platform::CUDAPlace>(paddle::platform::CUDAPlace, unsigned long) + 28
- 4 0x7f1bad2ced42p paddle::framework::Tensor::mutable_data(boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_>, std::type_index) + 866
- 5 0x7f1bac7a0cbfp paddle::operators::FillConstantOp::RunImpl(paddle::framework::Scope const&, boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const&) const + 1007
- 6 0x7f1bad261ebdp paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const&) + 205
- 7 0x7f1bac5cd06fp paddle::framework::Executor::RunPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, bool, bool, bool) + 255
- 8 0x7f1bac5ce0c0p paddle::framework::Executor::Run(paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool) + 128
- 9 0x7f1bac548cbbp void pybind11::cpp_function::initialize<pybind11::cpp_function::initialize<void, paddle::framework::Executor, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool, pybind11::name, pybind11::is_method, pybind11::sibling>(void (paddle::framework::Executor::*)(paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(paddle::framework::Executor*, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool)#1}, void, paddle::framework::Executor*, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::cpp_function::initialize<void, paddle::framework::Executor, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool, pybind11::name, pybind11::is_method, pybind11::sibling>(void (paddle::framework::Executor::*)(paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(paddle::framework::Executor*, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool)#1}&&, void (*)(paddle::framework::Executor*, paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call) + 555
- 10 0x7f1bac5411c4p pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 2596
- 11 0x4c37edp PyEval_EvalFrameEx + 31165
- 12 0x4b9ab6p PyEval_EvalCodeEx + 774
- 13 0x4c16e7p PyEval_EvalFrameEx + 22711
- 14 0x4b9ab6p PyEval_EvalCodeEx + 774
- 15 0x4c1e6fp PyEval_EvalFrameEx + 24639
- 16 0x4c136fp PyEval_EvalFrameEx + 21823
- 17 0x4b9ab6p PyEval_EvalCodeEx + 774
- 18 0x4eb30fp
- 19 0x4e5422p PyRun_FileExFlags + 130
- 20 0x4e3cd6p PyRun_SimpleFileExFlags + 390
- 21 0x493ae2p Py_Main + 1554
- 22 0x7f1bd6ae9830p __libc_start_main + 240
- 23 0x4933e9p _start + 41
- 问题解答该问题通常是GPU显存不足造成的,请在显存充足的GPU服务器上再次尝试则可。可以检查一下机器的显存使用情况。方法如下:
- test@test:~$ nvidia-smi
- Tue Jul 24 08:24:22 2018
- +-----------------------------------------------------------------------------+
- | NVIDIA-SMI 384.130 Driver Version: 384.130 |
- |-------------------------------+----------------------+----------------------+
- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
- | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
- |===============================+======================+======================|
- | 0 GeForce GTX 960 Off | 00000000:01:00.0 On | N/A |
- | 22% 52C P2 100W / 120W | 1757MiB / 1994MiB | 98% Default |
- +-------------------------------+----------------------+----------------------+
- +-----------------------------------------------------------------------------+
- | Processes: GPU Memory |
- | GPU PID Type Process name Usage |
- |=============================================================================|
- | 0 1071 G /usr/lib/xorg/Xorg 314MiB |
- | 0 1622 G compiz 149MiB |
- | 0 2201 G fcitx-qimpanel 7MiB |
- | 0 15304 G ...-token=58D78B2D4A63DAE7ED838021B2136723 74MiB |
- | 0 15598 C python 1197MiB |
- +-----------------------------------------------------------------------------+
Q:版本为paddlepaddle_gpu-0.14.0.post87-cp27-cp27mu-manylinux1_x86_64.whl,跑一个简单的测试程序,出现Segmentation fault。其中 如果place为cpu,可以正常输出,改成gpu则core。
- 程序代码
- def testpaddle014():
- place = fluid.CUDAPlace(0)
- #place = fluid.CPUPlace()
- print 'version', paddle.__version__, place
- input = fluid.layers.data(name='input', shape=[3,50,50], dtype='float32')
- output = fluid.layers.conv2d(input=input,num_filters=1,filter_size=3,stride=1,padding=1,groups=1,act=None)
- #output = fluid.layers.fc(input=input,size=2)
- fetch_list = [output.name]
- data = np.zeros((2,3,50,50), np.float32)
- exe = fluid.Executor(place)
- exe.run(fluid.default_startup_program())
- outputlist = exe.run(
- fluid.default_main_program(),
- feed={'input': data},
- fetch_list=fetch_list
- )
- print 'output', outputlist[0].shape
- 问题解答安装版本为
paddlepaddle_gpu-0.14.0.post87-cp27-cp27mu-manylinux1_x86_64.whl
,其中post87是指在CUDA8.0、cudnn7.0编译的,请确定您机器上是否安装了对应版本的cuDNN。造成问题描述中现象的情况通常可能是环境不匹配导致的。
Q:安装完了PaddlePaddle后,出现以下python相关的单元测试都过不了的情况:
- 24 - test_PyDataProvider (Failed)
- 26 - test_RecurrentGradientMachine (Failed)
- 27 - test_NetworkCompare (Failed)
- 28 - test_PyDataProvider2 (Failed)
- 32 - test_Prediction (Failed)
- 33 - test_Compare (Failed)
- 34 - test_Trainer (Failed)
- 35 - test_TrainerOnePass (Failed)
- 36 - test_CompareTwoNets (Failed)
- 37 - test_CompareTwoOpts (Failed)
- 38 - test_CompareSparse (Failed)
- 39 - test_recurrent_machine_generation (Failed)
- 40 - test_PyDataProviderWrapper (Failed)
- 41 - test_config_parser (Failed)
- 42 - test_swig_api (Failed)
- 43 - layers_test (Failed)
并且查询PaddlePaddle单元测试的日志,提示:
- paddle package is already in your PYTHONPATH. But unittest need a clean environment.
- Please uninstall paddle package before start unittest. Try to 'pip uninstall paddle'.
- 问题解答卸载PaddlePaddle包
pip uninstall paddle
, 清理掉老旧的PaddlePaddle安装包,使得单元测试有一个干净的环境。如果PaddlePaddle包已经在python的site-packages里面,单元测试会引用site-packages里面的python包,而不是源码目录里/python
目录下的python包。同时,即便设置PYTHONPATH
到/python
也没用,因为python的搜索路径是优先已经安装的python包。
Q:根据官方文档中提供的步骤安装Docker,无法下载需要的golang,导致tar: Error is not recoverable: exiting now?
报错截图
问题解答由上图可知,生成docker镜像时需要下载golang,使用者需要保证电脑可以科学上网。选择下载并使用docker.paddlepaddlehub.com/paddle:latest-devdocker镜像,执行命令如下:
- git clone https://github.com/PaddlePaddle/Paddle.git
- cd Paddle
- git checkout -b 0.14.0 origin/release/0.14.0
- sudo docker run --name paddle-test -v $PWD:/paddle --network=host -it docker.paddlepaddlehub.com/paddle:latest-dev /bin/bash
进入docker编译GPU版本的PaddlePaddle,执行命令如下:
- mkdir build && cd build
- # 编译GPU版本的PaddlePaddle
- cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=ON
- make -j$(nproc)
通过上面的方式操作后:接着安装PaddlePaddle并运行线性回归test_fit_a_line.py程序测试一下PaddlePaddle是安装成功则可
- pip install build/python/dist/*.whl
- python python/paddle/fluid/tests/book/test_fit_a_line.py
Q:在Docker镜像上,GPU版本的PaddlePaddle运行结果报错
- 问题解答使用
sudo docker run —name paddle-test -v $PWD:/paddle —network=host -it docker.paddlepaddlehub.com/paddle:latest-dev /bin/bash
命令创建的docker容器仅能支持运行CPU版本的PaddlePaddle。使用如下命令重新开启支持GPU运行的docker容器:
- export CUDA_SO="<span class="markdown-equation" id="equation-0"></span>(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')"
- export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}')
- sudo docker run <span class="markdown-equation" id="equation-1"></span>{DEVICES} --rm --name paddle-test-gpu -v /usr/bin/nvidia-smi:/usr/bin/nvidia-smi -v $PWD:/paddle --network=host -it docker.paddlepaddlehub.com/paddle:latest-dev /bin/bash
进入docker之后执行如下命令进行PaddlePaddle的安装及测试运行:
- export LD_LIBRARY_PATH=/usr/lib64:/usr/local/lib:$LD_LIBRARY_PATH
- pip install build/python/dist/*.whl
- python python/paddle/fluid/tests/book/test_fit_a_line.py
Q:在Liunx环境上,通过编译源码的方式安装PaddlePaddle,当安装成功后,运行 paddle version, 出现 PaddlePaddle 0.0.0?
- 问题解答如果运行
paddle version
, 出现PaddlePaddle 0.0.0
;或者运行cmake ..
,出现
- CMake Warning at cmake/version.cmake:20 (message):
- Cannot add paddle version from git tag
在dev分支下这个情况是正常的,在release分支下通过export PADDLE_VERSION=对应版本号 来解决。
Q:安装PaddlePaddle过程中,出现paddlepaddle*.whl is not a supported wheel on this platform?
- 问题解答
paddlepaddle*.whl is not a supported wheel on this platform
表示你当前使用的PaddlePaddle不支持你当前使用的系统平台,即没有找到和当前系统匹配的paddlepaddle安装包。最新的paddlepaddle python安装包支持Linux x86_64和MacOS 10.12操作系统,并安装了python 2.7和pip 9.0.1。请先尝试安装最新的pip,方法如下:
- pip install --upgrade pip
如果还不行,可以执行 python -c "import pip; print(pip.pep425tags.get_supported())"
获取当前系统支持的python包的后缀,并对比是否和正在安装的后缀一致。如果系统支持的是 linux_x86_64
而安装包是 manylinux1_x86_64
,需要升级pip版本到最新;如果系统支持 manylinux1_x86_64
而安装包(本地)是 linux_x86_64
,可以重命名这个whl包为 manylinux1_x86_64
再安装。
MacOS安装PaddlePaddle
Q:PaddlePaddle官方文档中,关于MacOS下安装PaddlePaddle只提及了MacOS中使用Docker环境安装PaddlePaddle的内容,没有Mac本机安装的内容?
- 问题解答基于Docker容器编译PaddlePaddle与本机上直接编译PaddlePaddle,所使用的编译执行命令是不一样的,但是官网仅仅给出了基于Docker容器编译PaddlePaddle所执行的命令。 1.基于Docker容器编译PaddlePaddle,需要执行:
- # 1. 获取源码
- git clone https://github.com/PaddlePaddle/Paddle.git
- cd Paddle
- # 2. 可选步骤:源码中构建用于编译PaddlePaddle的Docker镜像
- docker build -t paddle:dev .
- # 3. 执行下面的命令编译CPU-Only的二进制
- docker run -it -v $PWD:/paddle -e "WITH_GPU=OFF" -e "WITH_TESTING=OFF" paddlepaddle/paddle_manylinux_devel:cuda8.0_cudnn5 bash -x /paddle/paddle/scripts/paddle_build.sh build
- # 4. 或者也可以使用为上述可选步骤构建的镜像(必须先执行第2步)
- docker run -it -v $PWD:/paddle -e "WITH_GPU=OFF" -e "WITH_TESTING=OFF" paddle:dev
2.直接在本机上编译PaddlePaddle,需要执行:
- # 1. 使用virtualenvwrapper创建python虚环境并将工作空间切换到虚环境
- mkvirtualenv paddle-venv
- workon paddle-venv
- # 2. 获取源码
- git clone https://github.com/PaddlePaddle/Paddle.git
- cd Paddle
- # 3. 执行下面的命令编译CPU-Only的二进制
- mkdir build && cd build
- cmake .. -DWITH_GPU=OFF -DWITH_TESTING=OFF
- make -j$(nproc)
更详细的内容,请参考官方文档
Q:以源码方式在MacOS上安装时,出现Configuring incomplete, errors occured!?
- 报错截图
- 问题解答 安装PaddlePaddle编译时需要的各种依赖则可,如下:
- pip install wheel
- brew install protobuf@3.1
- pip install protobuf==3.1.0
如果执行pip install protobuf==3.1.0时报错,输出下图内容:
从图中可以获得报错的关键为Cannot uninstall 'six'
,那么解决方法就是先安装好six
,再尝试安装protobuf 3.1.0
如下:
- easy_install -U six
- pip install protobuf==3.1.0
Q:MacOS 10.12下编译PaddlePaddle出现/bin/sh: wget: command not found,如何解决?
- 问题解答报错的原因从报错输出的信息中可以发现,即没有有找到wget命令,安装wget则可,安装命令如下:
- brew install wget
Q:官网中只介绍了Mac下使用Docker安装编译PaddlePaddle的方式,因为我对Docker不怎么熟悉,想直接安装到本地的Mac系统中,MacOS版本为10.13,是符合要求的,但尝试了多次后,已经出现No rule to make target错误?
报错截图
问题解答该问题是有CMake引擎的,修改CMake编译命令,打开WITH_FLUID_ONLY编译选项,修改后编译命令如下:
- cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF
Q:MacOS本机直接通过源码编译的方式安装PaddlePaddle出现[paddle/fluid/platform/CMakeFiles/profiler_py_proto.dir/all] Error 2?
- 报错截图
- 问题解答 使用cmake版本为3.4则可
Q:MacOS本地编译PaddlePaddle github上develop分支的代码出现,出现No such file or directory错误?
报错截图
问题解答因为此时develop分支上Generating build/.timestamp这一步涉及的代码还在进行修改,所以并不能保证稳定,建议切换回稳定分支进行编译安装。 可以通过执行如下命令将分支切换到0.14.0进行编译:
- cd Paddle
- git checkout -b release/1.1
- cd build && rm -rf *
- cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF
- make -j4
编译成功后的结果如图:
Q:paddle源码编译(osx)报各种module找不到的问题
从源码编译,最后cmake ..
时Could NOT find PY_google.protobuf (missing: PY_GOOGLE.PROTOBUF)CMake Error at cmake/FindPythonModule.cmake:27 (message):python module google.protobuf is not found
若通过-D设置路径后,又会有其他的如Could not find PY_wheel
等其他找不到的情况+ 问题解答如上,当cmake找到python解释器和python库时,如果安装了许多pythons,它总会找到不同版本的Python。在这种情况下,您应该明确选择应该使用哪个python。通过cmake显式设置python包。只要确保python libs和python解释器是相同的python可以解决所有这些问题。当这个python包有一些原生扩展时,例如numpy,显式set python包可能会失败。
Q:在MacOS下,本地直接编译安装PaddlePaddle遇到collect2: ld terminated with signal 9 [Killed] ?
- 问题解答该问题是由磁盘空间不足造成的,你的硬盘要有30G+的空余空间,请尝试清理出足够的磁盘空间,重新安装。
Q:因为需要安装numpy等包,但在Mac自带的Python上无法安装,权限错误导致难以将PaddlePaddle正常安装到Mac本地?
- 问题解答Mac上对自带的Python和包有严格的权限保护,最好不要在自带的Python上安装。建议用virtualenv建立一个新的Python环境来操作。virtualenv的基本原理是将机器上的Python运行所需的运行环境完整地拷贝一份。我们可以在一台机器上制造多份拷贝,并在这多个拷贝之间自由切换,这样就相当于在一台机器上拥有了多个相互隔离、互不干扰的Python环境。
下面使用virtualenv为Paddle生成一个专用的Python环境。 安装virtualenv,virtualenv本身也是Python的一个包,可以用pip进行安装:
- sudo -H pip install virtualenv
由于virtualenv需要安装给系统自带的Python,因此需要使用sudo权限。接着使用安装好的virtualenv创建一个新的Python运行环境:
```
virtualenv --no-site-packages paddle
```
--no-site-packages 参数表示不拷贝已有的任何第三方包,创造一个完全干净的新Python环境。后面的paddle是我们为这个新创建的环境取的名字。执行完这一步后,当前目录下应该会出现一个名为paddle(或者你取的其他名字)的目录。这个目录里保存了运行一个Python环境所需要的各种文件。
启动运行环境:
```
source paddle/bin/activate
```
执行后会发现命令提示符前面增加了(paddle)字样,说明已经成功启动了名为‘paddle’的Python环境。执行which python,可以发现使用的已经是刚刚创建的paddle目录下的Python。
在这个环境中,我们可以自由地进行PaddlePaddle的安装、使用和开发工作,无需担心对系统自带Python的影响。
如果我们经常使用Paddle这个环境,我们每次打开终端后都需要执行一下source paddle/bin/activate来启动环境,比较繁琐。为了简便,可以修改终端的配置文件,来让终端每次启动后自动启动特定的Python环境。
执行:
```
vi ~/.bash_profile
```
打开终端配置文件,并在文件的最后添加一行:
```
source paddle/bin/activate
```
这样,每次打开终端时就会自动启动名为‘paddle’的Python环境了。