使用 CUDA 支持构建 tensorflow2

2020 年 6 月 19 日 | Christian Goll | CC-BY-SA-3.0

Build tensorflow2 with CUDA support

使用 CUDA 支持构建 Tensorflow 2.1.1

Tensorflow 2.1.1 在 Tumbleweed 和 Leap 15.2 中可用,但由于与 NVIDIA 的法律问题,未启用 CUDA 支持。由于 CUDA 支持可以大大加速神经网络的训练和推理,因此启用它是有益的。

本文档解释了如何构建带有 CUDA 支持的 tensorflow 包。

先决条件

用于构建的 CUDA 包将通过 -p 标志添加到 osc 命令,但由于一个错误,您至少需要版本 0.169.1。该版本已包含在 Tumbleweed 中,但对于 Leap 15.2,您需要使用以下命令添加 openSUSE 工具仓库并更新 osc

sudo zypper ar https://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_15.2/openSUSE:Tools.repo
sudo zypper ref
sudo zypper up --allow-vendor-change osc

建议使用配备良好机器进行构建,因为至少需要 10GB 内存,并且构建也需要很长时间。在我的十二核机器上,花费了两个多小时。

创建 CUDA 归档

在此步骤中,所有相关的 CUDA 包都放入单个仓库中,以便 osc 可以访问它们。为此,使用以下命令创建仓库目录(在本例中为 $HOME/opt/cuda-10-1

mkdir -p $HOME/opt/cuda-10-1

在下一步中,下载的工作与 Tumbleweed 和 openSUSE Leap 15.2 兼容。

CUDA

从 https://developer.nvidia.com/cuda-10.1-download-archive-update2 下载 openSUSE 的 rpm(本地)并安装它。安装后,使用以下命令将 rpm 复制到本地目录

cp /var/cuda-repo-10-1-local-10.1.*/*rpm $HOME/opt/cuda-10-1

NCCL

访问 https://developer.nvidia.com/nccl/nccl-download 并下载 RedHat/CentOS 7 的本地安装程序。安装下载的 rpm 后,您需要使用以下命令复制软件包

cp /var/nccl-repo-2.7.3-ga-cuda10.1/*rpm $HOME/opt/cuda-10-1

CUdnn

您需要在 NVIDA 注册才能从 https://developer.nvidia.com/cudnn 下载。下载 cuDNN Runtime Library for RedHat/Centos 7.3 (RPM)cuDNN Developer Library for RedHat/Centos 7.3 (RPM)。下载后,将 rpm 复制到 $HOME/opt/cuda-10-1

创建本地仓库

现在,您可以使用以下命令创建本地仓库,该仓库可与 osc 一起使用

cd $HOME/opt/cuda-10-1 
createrepo .

您可能需要安装 createrepo 包。

编译 Tensorflow

准备好所有软件包后,您需要获取 tensorflow 源代码。这可以通过以下方式完成

osc co science:machinelearning/tensorflow2

Tensorflow 现在可以在 science:machinelearning/tensorflow2 目录中通过以下命令编译

osc build --ccache -p $HOME/opt/cuda-10-1 -k . -M cuda-10-1 openSUSE_Leap_15.2

这将开始 tensorflow 包的构建。您应该始终使用 --ccache 选项,因为这可以加快重建速度。对于 Tumbleweed,使用以下命令

osc build --ccache -p $HOME/opt/cuda-10-1 -k . -M cuda-10-1 openSUSE_Tumbleweed

经过几个小时后,构建应该完成,生成的 tensorflow rpm 应该位于您开始构建的目录中。

安装

为了正确安装,将 rpm 复制到 $HOME/opt/cuda-10-1 并重新运行 createrepo。您可能需要使用以下命令将此仓库添加到您的系统中

zypper ar $HOME/opt/cuda-10-1/repodata tensorflow

以便安装 tensorflow2 包。

分享此帖子