利用 AI Studio 完成 Paddle 编译

为什么要对 Paddle 进行编译?

众所周知,PaddlePaddle 的底层代码是利用 C++ 进行开发的,对于 Python 端的日常使用者,我们仅需要依据 Paddle 官方提供的 pip 详情安装 Paddle 既可。

如果要从 Paddle 使用者升级为 Paddle 贡献者,一起为国产深度学习框架努力,那么【飞桨黑客马拉松】这个比赛就很适合大家入门!

注: 该比赛给大家提供了一个比赛的形式一起参与 Paddle 项目共建!(并不是想象中的黑客 hahahahah)

个人理解:Paddle 编译是深入参与 Paddle 开源项目共建的必经之路!

如何利用 AI Studio 完成 Paddle 编译?

  • 首先我们需要申请 AI Studio 新项目:【框架开发任务】的使用权限,该项目是最近 AI Studio 刚上新的项目,配置了 Docker 镜像环境,可以无碍完成 Paddle 编译进行框架开发!

在这里插入图片描述

这里我总结了框架二次开发项目里完成 Paddle 编译所需的代码:

  1. git clone https://github.com/PaddlePaddle/Paddle.git
  2. pip3.7 install -r Paddle/python/requirements.txt
  3. cd Paddle && mkdir build && cd build
  4. cmake .. -DPY_VERSION=3.7 -DWITH_GPU=OFF -DWITH_TESTING=ON
  5. make -j$(nproc) #(约 2h)

仅需五行代码既可完成 Paddle 编译(上述代码是在终端中执行的)。

如果大家想对 Paddle 编译有更深入的理解,可以去了解一下 PaddlePaddle Hackathon 在 Github ISSUE 中开设的热身打卡活动,完成该活动还可以领取飞桨精美周边礼品!

下一部分提供了框架二次开发项目完成该活动的所需步骤!

注:框架二次开发项目的申请规则:发邮件给 ext_paddle_oss@baidu.com 管理员,附上 github username,aistudio uid,在邮件中说明用途(需与飞桨框架开发相关噢)!

利用框架二次开发项目完成热身打卡活动

以下步骤均在 AI Studio 框架二次开发项目中完成!

热身打卡活动的具体任务需求可以详见活动页面,这里就不多赘述了。

一、完成前期准备工作。

拉取 PaddlePaddle/Paddle 仓库代码,并安装相关依赖。

  • 1.git clone https://github.com/PaddlePaddle/Paddle.git
  • 2.cd Paddle
  • 3.pip3.7 install -r python/requirements.txt

注:当前工作目录为 Paddle 目录(可以用 pwd 检查)。

二、 完成初次编译。

  • 4.mkdir build
  • 5.cd build
  • 6.time cmake .. -DPY_VERSION=3.7 -DWITH_GPU=OFF -DWITH_TESTING=ON

执行完成后截图 cmake 结果,注意需要包含时间和 commit 号(时间大概需要2h)。

  • 7.time make -j$(nproc)

执行完成后截图 make 结果。

注: 在初次编译的时候,我们就加上了-DWITH_TESTING=ON,所以在运行单元测试的时候就可以不用再 cmake 和 make了。

三、 完成二次编译。

再修改文件的时候,再有注释的地方添加空格,然后保存即可。

修改底层的头文件:Paddle/paddle/fluid/platform/enforce.h

  • 8.time make -j$(nproc)

执行完成后截图 make 结果。

修改Op的cc文件:Paddle/paddle/fluid/operators/center_loss_op.cc

  • 9.time make -j$(nproc)

执行完成后截图 make 结果。

修改python文件:Paddle/python/paddle/tensor/math.py

  • 10.time make -j$(nproc)

执行完成后截图 make 结果。

四、安装whl包。

  • 11.pip install Paddle/python/dist/paddlepaddle-0.0.0-cp37-cp37m-linux_x86_64.whl

执行完成后截图。

注: 在pip install前可以利用pwd检查下当前目录是不是 Paddle/build/

五、 运行单元测试。

  • 12./home/cmake-3.16.0-Linux-x86_64/bin/ctest -R test_logsumexp

执行完成后截图。

六、发邮件领礼品!!!

最后按照热身打卡活动的格式要求,将上述截图发送到 paddle-hack@baidu.com 邮箱既可!

注意事项

  • 除了框架二次开发项目外,其余AI Studio项目目前不能够完成 Paddle 编译任务,主要原因是在 Paddle/CMakeLists.txt 里要求 cmake 的版本最低为3.15。而 AI Studio Notebook 项目里的 cmake 版本为3.12.2低于3.15(可以尝试一下改 CMakeLists.txt 的要求)。
  • git clone https://github.com/PaddlePaddle/Paddle.git之后要记得pip3.X install -r Paddle/python/requirements.txt,其中pip3.X的版本号要和 cmake 时要求的 python version 一致。
  • 运行单元测试时ctest要改为/home/cmake-3.16.0-Linux-x86_64/bin/ctest,目前框架二次开发项目里直接ctest会出现 command not found (在后续的更新中会修复这个问题)。
!cmake --version
cmake version 3.12.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

).

总结

该项目介绍了如何利用 AI Studio 的框架二次开发项目完成 Paddle 编译,如果想深入参与 Paddle 框架开发的话,Paddle 编译是必不可少的一步。在完成此次热身活动的期间也是遇到了一些问题,在 Luotao 大佬的帮助下也是成功解决了!但是目前也只是按照官方流程对 Paddle 进行编译,还需学习 cmake 的相关知识。

细心的小伙伴会发现在编译的时候会出现一些 Warning 信息,刚好现在飞桨推出了编译 Warning 消除项目,欢迎感兴趣的小伙伴一起来参与编译 Warning 消除任务,在项目中实践强化自己!


此文章为搬运
原项目链接

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐