Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • Issue
  • #12078

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 7月 10, 2018 by saxon_zh@saxon_zhGuest

Mac OS系统下直接本机编译PaddlePaddle“踩坑”记录

Created by: wzzju

Mac OS系统下直接本机编译PaddlePaddle“踩坑”记录

文档声明:编译过程参照官网文档(Fluid 0.14.0)。硬件环境为MacBook Pro,操作系统版本为10.13.5 (17F77)。

问题1

基于Docker容器编译PaddlePaddle与本机上直接编译PaddlePaddle,所使用的编译执行命令是不一样的,但是官网仅仅给出了基于Docker容器编译PaddlePaddle所执行的命令。

建议文档对应处修改为如下类似内容:

基于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

直接在本机上编译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)

问题2

image image

解决方法:
pip install wheel
brew install protobuf@3.1
pip install protobuf==3.1.0
执行pip install protobuf==3.1.0时报错:

image

解决方法:
easy_install -U six 
pip install protobuf==3.1.0

问题3

image

解决方法:
brew install wget

问题4

image

解决方法:

修改CMake编译命令,打开WITH_FLUID_ONLY编译选项,修改后编译命令如下:

cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF

问题5

image

解决方法一:

修改paddle/fluid/platform/CMakeFiles/profiler_py_proto.dir/build.make内容的第60行~第62行内容,原内容如下(划线部分为需要修改的地方): image

修改后如下(划线部分为需要修改的地方): image

解决方法二:

将CMake版本降级到3.4及以下,故而最终的CMake版本控制范围为:3.2=<CMake<=3.4。目前,官网文档上只写了CMake版本需要大于等于3.2,还应该强调不能使用CMake太新的版本,即可将CMake使用版本范围声明为:3.2=<CMake<=3.4。

问题6

image

解决方法:
# 上面编译的是develop分支,此时Generating build/.timestamp这一步涉及的代码还在修改中。

接下来通过执行如下命令将分支切换到0.14.0进行编译:

cd Paddle
git checkout -b 0.14.0 origin/release/0.14.0
cd build &&  rm -rf *
cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF
make -j4

编译成功后结果如下:

image

问题7——运行PaddlePaddle出错

使用pip install build/python/dist/*.whl命令安装PaddlePaddle后, 测试运行PaddlePaddle时出错,错误信息如下:

image

解决方法:

卸载paddlepaddle,安装openblas,重新编译安装。

pip uninstall paddlepaddle
cd Paddle/build && rm -rf *
brew install openblas
cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF
make -j4

问题8——重新编译时报错

image

解决方法:

执行cmake命令时加上编译选项-DOPENBLAS_INC_DIR=/usr/local/Cellar/openblas/0.3.1/include/,具体如下:

cd Paddle/build && rm -rf *
cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=ON -DOPENBLAS_INC_DIR=/usr/local/Cellar/openblas/0.3.1/include/
time make -j4

最终编译结果

image

安装PaddlePaddle并运行test_fit_a_line.py 程序:
pip install build/python/dist/*.whl
python python/paddle/fluid/tests/book/test_fit_a_line.py

运行结果

image

总结

Mac OS系统下编译PaddlePaddle需要事先安装好wheel、protobuf、wget、openblas等软件,而一个全新等Mac OS系统上这些软件可能均未安装,因此在官方文档中应该明确指出Mac OS系统下编译PaddlePaddle依赖wheel、protobuf、wget、openblas等软件,且要指出这些软件在Mac OS下不会自动安装,需要使用者手动安装。对于CMake等要求,目前官网文档上只写了CMake版本需要大于等于3.2,还应该强调不能使用CMake太新的版本,即可将CMake使用版本范围声明为:3.2=<CMake<=3.4。

参考资料

  • PaddlePaddle使用文档

  • paddle源码编译(osx)报各种module找不到的问题 #280

  • Mac 编译Paddle报错*** target pattern contains no `%'. Stop.

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Paddle#12078
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7