diff --git a/doc/fluid/beginners_guide/index.rst b/doc/fluid/beginners_guide/index.rst index d90c8dd61318b0ea5ddd14f3983067c66e073068..327cc0bf4479fa0dd9f60f9d2f00e40f3f18490b 100644 --- a/doc/fluid/beginners_guide/index.rst +++ b/doc/fluid/beginners_guide/index.rst @@ -9,7 +9,7 @@ .. toctree:: :maxdepth: 2 - install/install_doc.md + install/Start.rst quick_start/index.rst basics/index.rst basics/learning_materials.md diff --git a/doc/fluid/beginners_guide/install/FAQ.md b/doc/fluid/beginners_guide/install/FAQ.md new file mode 100644 index 0000000000000000000000000000000000000000..96a2ba37817ada8bde7ddbb9f6df23fb59397895 --- /dev/null +++ b/doc/fluid/beginners_guide/install/FAQ.md @@ -0,0 +1,127 @@ +*** + +# **FAQ** +- CentOS6下如何编译python2.7为共享库? + + > 使用以下指令: + + ./configure --prefix=/usr/local/python2.7 --enable-shared + make && make install + + + +- Ubuntu18.04下libidn11找不到? + + > 使用以下指令: + + apt install libidn11 + +- Ubuntu编译时出现大量的代码段不能识别? + + > 这可能是由于cmake版本不匹配造成的,请在gcc的安装目录下使用以下指令: + + apt install gcc-4.8 g++-4.8 + cp gcc gcc.bak + cp g++ g++.bak + rm gcc + rm g++ + ln -s gcc-4.8 gcc + ln -s g++-4.8 g++ + + + + +- 遇到paddlepaddle*.whl is not a supported wheel on this platform? + + > 出现这个问题的主要原因是,没有找到和当前系统匹配的paddlepaddle安装包。 请检查Python版本是否为2.7系列。另外最新的pip官方源中的安装包默认是manylinux1标准, 需要使用最新的pip (>9.0.0) 才可以安装。您可以执行以下指令更新您的pip: + + pip install --upgrade pip + 或者 + + python -c "import pip; print(pip.pep425tags.get_supported())" + + > 如果系统支持的是 linux_x86_64 而安装包是 manylinux1_x86_64 ,需要升级pip版本到最新; 如果系统支持 manylinux1_x86_64 而安装包 (本地)是 linux_x86_64, 可以重命名这个whl包为 manylinux1_x86_64 再安装。 + +- 使用Docker编译出现问题? + + > 请参照GitHub上[Issue12079](https://github.com/PaddlePaddle/Paddle/issues/12079) + +- 什么是 Docker? + + > 如果您没有听说 Docker,可以把它想象为一个类似 virtualenv 的系统,但是虚拟的不仅仅是 Python 的运行环境。 + +- Docker 还是虚拟机? + + > 有人用虚拟机来类比 Docker。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。 + +- 为什么用 Docker? + + > 把工具和配置都安装在一个 Docker image 里可以标准化编译环境。这样如果遇到问题,其他人可以复现问题以便帮助。 + 另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。 + +- 可以选择不用Docker吗? + + > 当然可以。大家可以用把开发工具安装进入 Docker image 一样的方式,把这些工具安装到本机。这篇文档介绍基于 Docker 的开发流程,是因为这个流程比其他方法都更简便。 + +- 学习 Docker 有多难? + + > 理解 Docker 并不难,大概花十分钟看一下[这篇文章](https://zhuanlan.zhihu.com/p/19902938)。 + 这可以帮您省掉花一小时安装和配置各种开发工具,以及切换机器时需要新安装的辛苦。别忘了 PaddlePaddle 更新可能导致需要新的开发工具。更别提简化问题复现带来的好处了。 + +- 可以用 IDE 吗? + + > 当然可以,因为源码就在本机上。IDE 默认调用 make 之类的程序来编译源码,我们只需要配置 IDE 来调用 Docker 命令编译源码即可。 + 很多 PaddlePaddle 开发者使用 Emacs。他们在自己的 `~/.emacs` 配置文件里加两行 + `global-set-key "\C-cc" 'compile` + `setq compile-command "docker run --rm -it -v $(git rev-parse --show-toplevel):/paddle paddle:dev"` + 就可以按 `Ctrl-C` 和 `c` 键来启动编译了。 + +- 可以并行编译吗? + + > 是的。我们的 Docker image 运行一个 [Bash 脚本](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/paddle/scripts/paddle_build.sh)。这个脚本调用`make -j$(nproc)` 来启动和 CPU 核一样多的进程来并行编译。 + +- Docker 需要 sudo? + + > 如果用自己的电脑开发,自然也就有管理员权限(sudo)了。如果用公用的电脑开发,需要请管理员安装和配置好 Docker。此外,PaddlePaddle 项目在努力开始支持其他不需要 sudo 的集装箱技术,比如 rkt。 + +- 在 Windows/MacOS 上编译很慢? + + > Docker 在 Windows 和 MacOS 都可以运行。不过实际上是运行在一个 Linux 虚拟机上。可能需要注意给这个虚拟机多分配一些 CPU 和内存,以保证编译高效。具体做法请参考[issue627](https://github.com/PaddlePaddle/Paddle/issues/627)。 + +- 磁盘不够? + + > 本文中的例子里,`docker run` 命令里都用了 `--rm` 参数,这样保证运行结束之后的 containers 不会保留在磁盘上。可以用 `docker ps -a` 命令看到停止后但是没有删除的 containers。`docker build` 命令有时候会产生一些中间结果,是没有名字的 images,也会占用磁盘。可以参考 [这篇文章](https://zaiste.net/posts/removing_docker_containers) 来清理这些内容。 + +- 在DockerToolbox下使用book时`http://localhost:8888/`无法打开? + + > 需要将localhost替换成虚拟机ip,一般需要在浏览器中输入:`http://192.168.99.100:8888/` + +- pip install gpu版本的PaddlePaddle后运行出现SegmentFault如下: + + @ 0x7f6c8d214436 paddle::platform::EnforceNotMet::EnforceNotMet() + + @ 0x7f6c8dfed666 paddle::platform::GetCUDADeviceCount() + + @ 0x7f6c8d2b93b6 paddle::framework::InitDevices() + + + > 出现这个问题原因主要是由于您的显卡驱动低于对应CUDA版本的要求,请保证您的显卡驱动支持所使用的CUDA版本 + + + + +- MacOS下安装PaddlePaddle后import paddle.fluid出现`Fatal Python error: PyThreadState_Get: no current thread running`错误 + + > - For Python2.7.x: 请使用`find / -name libpython2.7.dylib`找到您当前使用python的`libpython2.7.dylib`路径,并使用`export LD_LIBRARY_PATH=[libpython2.7.dylib所在的目录的上两级目录] && export DYLD_LIBRARY_PATH=[libpython2.7.dylib所在的目录的上两级目录]` + - For Python3.5.x: 请使用`find / -name libpython3.5.dylib`找到您当前使用python的`libpython3.5.dylib`路径,并使用`export LD_LIBRARY_PATH=[libpython3.5.dylib所在的目录的上两级目录] && export DYLD_LIBRARY_PATH=[libpython3.5.dylib所在的目录的上两级目录]` + + + +- MACOS下使用自定义的openblas 详见issue: + + > [ISSUE 13217](https://github.com/PaddlePaddle/Paddle/issues/13721) + +- 已经安装swig但是仍旧出现swig找不到的问题 详见issue: + + > [ISSUE 13759](https://github.com/PaddlePaddle/Paddle/issues/13759) + diff --git a/doc/fluid/beginners_guide/install/Start.rst b/doc/fluid/beginners_guide/install/Start.rst new file mode 100644 index 0000000000000000000000000000000000000000..ba9604a24841974d5b878abe57df070db966c81f --- /dev/null +++ b/doc/fluid/beginners_guide/install/Start.rst @@ -0,0 +1,33 @@ +========== + 安装说明 +========== +本说明将指导您在64位台式机或笔记本电脑上, 使用Python2.7或者Python3.5编译和安装PaddlePaddle,目前PaddlePaddle支持以下环境: + +* *Ubuntu 14.04 /16.04 /18.04* +* *CentOS 7 / 6* +* *MacOS 10.12 / 10.13* +* *Windows7 / 8/ 10(专业版/企业版)* + +请确保您的环境满足以上条件 + + +安装PaddlePaddle +----------------------- + +.. toctree:: + :maxdepth:1 + + install_Ubuntu.md + install_CentOS.md + install_MacOS.md + install_Windows.md + compile/fromsource.rst + +如在安装或编译过程中遇到问题请参见 +----------------------- + +.. toctree:: + :maxdepth:1 + + FAQ.md + Tables.md diff --git a/doc/fluid/beginners_guide/install/Tables.md b/doc/fluid/beginners_guide/install/Tables.md new file mode 100644 index 0000000000000000000000000000000000000000..1100249b025c432025453279ee8c1fb984b1144c --- /dev/null +++ b/doc/fluid/beginners_guide/install/Tables.md @@ -0,0 +1,445 @@ +*** + +# 附录 + +## **编译依赖表** + +
+
依赖包名称 | +版本 | +说明 | +安装命令 | +
---|---|---|---|
CMake | +3.4 | ++ | + |
GCC | +4.8 / 5.4 | +推荐使用CentOS的devtools2 | ++ |
Python | +2.7.x. | +依赖libpython2.7.so | + apt install python-dev 或 yum install python-devel |
+
SWIG | +最低 2.0 | ++ | apt install swig 或 yum install swig |
+
wget | +any | ++ | apt install wget 或 yum install wget |
+
openblas | +any | ++ | + |
pip | +最低9.0.1 | ++ | apt install python-pip 或 yum install Python-pip |
+
numpy | +>=1.12.0 | ++ | pip install numpy==1.14.0 |
+
protobuf | +3.1.0 | ++ | pip install protobuf==3.1.0 |
+
wheel | +any | ++ | pip install wheel |
+
patchELF | +any | ++ | apt install patchelf 或参见github patchELF 官方文档 |
+
go | +>=1.8 | +可选 | ++ |
+
选项 | +说明 | +默认值 | +
---|---|---|
WITH_GPU | +是否支持GPU | +ON | +
WITH_C_API | +是否仅编译CAPI | +OFF | +
WITH_DOUBLE | +是否使用双精度浮点数 | +OFF | +
WITH_DSO | +是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库 | +ON | +
WITH_AVX | +是否编译含有AVX指令集的PaddlePaddle二进制文件 | +ON | +
WITH_PYTHON | +是否内嵌PYTHON解释器 | +ON | +
WITH_STYLE_CHECK | +是否编译时进行代码风格检查 | +ON | +
WITH_TESTING | +是否开启单元测试 | +OFF | +
WITH_DOC | +是否编译中英文文档 | +OFF | +
WITH_SWIG_PY | +是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练 | +Auto | +
WITH_GOLANG | +是否编译go语言的可容错parameter server | +OFF | +
WITH_MKL | +是否使用MKL数学库,如果为否则是用OpenBLAS | +ON | +
+
版本号 | +版本说明 | +
---|---|
paddlepaddle-gpu==1.0.0 | +使用CUDA 9.0和cuDNN 7编译的1.0.0版本 | +
paddlepaddle-gpu==1.0.0.post87 | +使用CUDA 8.0和cuDNN 7编译的1.0.0版本 | +
paddlepaddle-gpu==1.0.0.post85 | +使用CUDA 8.0和cuDNN 5编译的1.0.0版本 | +
paddlepaddle-gpu==0.15.0 | +使用CUDA 9.0和cuDNN 7编译的0.15.0版本 | +
paddlepaddle-gpu==0.15.0.post87 | +使用CUDA 8.0和cuDNN 7编译的0.15.0版本 | +
paddlepaddle-gpu==0.15.0.post85 | +使用CUDA 8.0和cuDNN 5编译的0.15.0版本 | +
paddlepaddle-gpu==0.14.0 | +使用CUDA 9.0和cuDNN 7编译的0.15.0版本 | +
paddlepaddle-gpu==0.14.0.post87 | +使用CUDA 8.0和cuDNN 7编译的0.15.0版本 | +
paddlepaddle-gpu==0.14.0.post85 | +使用CUDA 8.0和cuDNN 5编译的0.15.0版本 | +
paddlepaddle-gpu==0.13.0 | +使用CUDA 9.0和cuDNN 7编译的0.13.0版本 | +
paddlepaddle-gpu==0.12.0 | +使用CUDA 8.0和cuDNN 5编译的0.12.0版本 | +
paddlepaddle-gpu==0.11.0.post87 | +使用CUDA 8.0和cuDNN 7编译的0.11.0版本 | +
paddlepaddle-gpu==0.11.0.post85 | +使用CUDA 8.0和cuDNN 5编译的0.11.0版本 | +
paddlepaddle-gpu==0.11.0 | +使用CUDA 7.5和cuDNN 5编译的0.11.0版本 | +
+
版本号 | +版本说明 | +
---|---|
hub.baidubce.com/paddlepaddle/paddle:latest | +最新的预先安装好PaddlePaddle CPU版本的镜像 | +
hub.baidubce.com/paddlepaddle/paddle:latest-dev | +最新的PaddlePaddle的开发环境 | +
hub.baidubce.com/paddlepaddle/paddle:[Version] | +将version换成具体的版本,历史版本的预安装好PaddlePaddle的镜像 | +
hub.baidubce.com/paddlepaddle/paddle:latest-gpu | +最新的预先安装好PaddlePaddle GPU版本的镜像 | +
+
版本说明 | +cp27-cp27mu | +cp27-cp27m | +
---|---|---|
cpu_avx_mkl | +paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | +paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | +
cpu_avx_mkl | +paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | +paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl | +
cpu_noavx_openblas | +paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | +paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl | +
cuda8.0_cudnn5_avx_mkl | +paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl | +paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl | +
cuda8.0_cudnn7_avx_mkl | +paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl | +paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl | +
-
依赖包名称 | -版本 | -说明 | -安装命令 | -
---|---|---|---|
CMake | -3.4 | -- | - |
GCC | -4.8 / 5.4 | -推荐使用CentOS的devtools2 | -- |
Python | -2.7.x. | -依赖libpython2.7.so | - apt install python-dev 或 yum install python-devel |
-
SWIG | -最低 2.0 | -- | apt install swig 或 yum install swig |
-
wget | -any | -- | apt install wget 或 yum install wget |
-
openblas | -any | -- | - |
pip | -最低9.0.1 | -- | apt install python-pip 或 yum install Python-pip |
-
numpy | ->=1.12.0 | -- | pip install numpy==1.14.0 |
-
protobuf | -3.1.0 | -- | pip install protobuf==3.1.0 |
-
wheel | -any | -- | pip install wheel |
-
patchELF | -any | -- | apt install patchelf 或参见github patchELF 官方文档 |
-
go | ->=1.8 | -可选 | -- |
-
选项 | -说明 | -默认值 | -
---|---|---|
WITH_GPU | -是否支持GPU | -ON | -
WITH_C_API | -是否仅编译CAPI | -OFF | -
WITH_DOUBLE | -是否使用双精度浮点数 | -OFF | -
WITH_DSO | -是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库 | -ON | -
WITH_AVX | -是否编译含有AVX指令集的PaddlePaddle二进制文件 | -ON | -
WITH_PYTHON | -是否内嵌PYTHON解释器 | -ON | -
WITH_STYLE_CHECK | -是否编译时进行代码风格检查 | -ON | -
WITH_TESTING | -是否开启单元测试 | -OFF | -
WITH_DOC | -是否编译中英文文档 | -OFF | -
WITH_SWIG_PY | -是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练 | -Auto | -
WITH_GOLANG | -是否编译go语言的可容错parameter server | -OFF | -
WITH_MKL | -是否使用MKL数学库,如果为否则是用OpenBLAS | -ON | -
-
版本号 | -版本说明 | -
---|---|
paddlepaddle-gpu==0.15.0 | -使用CUDA 9.0和cuDNN 7编译的0.15.0版本 | -
paddlepaddle-gpu==0.15.0.post87 | -使用CUDA 8.0和cuDNN 7编译的0.15.0版本 | -
paddlepaddle-gpu==0.15.0.post85 | -使用CUDA 8.0和cuDNN 5编译的0.15.0版本 | -
paddlepaddle-gpu==0.13.0 | -使用CUDA 9.0和cuDNN 7编译的0.13.0版本 | -
paddlepaddle-gpu==0.12.0 | -使用CUDA 8.0和cuDNN 5编译的0.12.0版本 | -
paddlepaddle-gpu==0.11.0.post87 | -使用CUDA 8.0和cuDNN 7编译的0.11.0版本 | -
paddlepaddle-gpu==0.11.0.post85 | -使用CUDA 8.0和cuDNN 5编译的0.11.0版本 | -
paddlepaddle-gpu==0.11.0 | -使用CUDA 7.5和cuDNN 5编译的0.11.0版本 | -
-
版本号 | -版本说明 | -
---|---|
hub.baidubce.com/paddlepaddle/paddle:latest | -最新的预先安装好PaddlePaddle CPU版本的镜像 | -
hub.baidubce.com/paddlepaddle/paddle:latest-dev | -最新的PaddlePaddle的开发环境 | -
hub.baidubce.com/paddlepaddle/paddle:[Version] | -将version换成具体的版本,历史版本的预安装好PaddlePaddle的镜像 | -
hub.baidubce.com/paddlepaddle/paddle:latest-gpu | -最新的预先安装好PaddlePaddle GPU版本的镜像 | -
-
版本说明 | -cp27-cp27mu | -cp27-cp27m | -
---|---|---|
cpu_avx_mkl | -paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | -paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | -
cpu_avx_mkl | -paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | -paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl | -
cpu_noavx_openblas | -paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl | -paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl | -
cuda8.0_cudnn5_avx_mkl | -paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl | -paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl | -
cuda8.0_cudnn7_avx_mkl | -paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl | -paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl | -