近期做了一些机器学习平台开放API接入的事情,涉及到一些环境搭建的工作,整理一份文档,帮助理解,并作为备忘。
转一张来自知乎的图,对整个结构描述的比较清晰。

image.png

从底层到上层依次是:硬件 → 操作系统 → 驱动程序 → cuda开发工具包 → GPU运算加速库 → 机器学习框架。

显卡驱动程序

显卡硬件,在机器学习领域,基本上都是 nvidia 家的。插上显卡后,需要安装显卡驱动程序,才能正常识别显卡,并使用显卡功能。
驱动安装的过程可以从 nvidia 官网找到
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html#introduction
安装后就能通过 nvidia-smi 命令观察 nvidia 的GPU资源使用情况了。

cuda工具包

nvidia cuda 描述文档

组成结构

image.png
上图是来自 nvidia 官网的 cuda组成 图,cuda本身只包含图中的 CUDA Toolkit 部分,包括 runtime、一些依赖库,和工具。
为了方便使用,cuda也集成了一个 nvidia 显卡驱动包,其中 nvidia.ko 为显卡驱动程序,libcuda.so 为给开发者提供的编程接口。

驱动版本兼容性

如上图的组成结构,CUDA Toolkit 和 显卡驱动之间是不同的版本体系。机器上已经安装的驱动程序,可能会和用户安装的 CUDA Toolkit 间存在不兼容的问题,官方给出了兼容性表格。
image.png

从官方docker获取

cuda与cudnn可以从dockerhub快速获取基础镜像,不用自己编译安装。
https://hub.docker.com/r/nvidia/cuda/tags
例如

1
FROM nvidia/cuda:11.2.2-devel-centos7

其中

  • base镜像 包含 cuda runtime
  • runtime镜像,基于base镜像制作,包含了一些运算库
  • devel镜像,基于 runtime 镜像制作,包含了一些开发用的头文件和工具集

自行安装

如果要自己安装也行,参考 官方的安装指南

cudnn运算加速库

cudnn 是 nvida 为他家显卡开发的深度卷积神经网络的加速库,要使用 nvidia 的GPU进行GPU运算,一般的训练/推导框架,都需要安装这个库。

从docker获取

找到镜像

1
FROM nvidia/cuda:11.2.2-cudnn8-devel-centos7

自行安装

参考 官方的安装指南

容器中挂载GPU

很多时候,训练/运算任务并不是直接在物理机/虚拟机上进行,而是在容器中进行的。 直接启动一个 带 cuda 的容器,也是没办法调用 cuda 的,需要在宿主机上安装一些组件,并且在容器启动时增加一些参数。

安装 nvidia-container-runtime

为了支持容器挂载GPU驱动,首先需要安装 nvidia-container-runtime:
https://nvidia.github.io/nvidia-container-runtime/

挂载命令

image.png
详见 docker run 命令文档

☞ 参与评论