FasterTransformer在linux系统中的安装教程(ubuntu系统)

参考资料

安装过程

  • 在官方文档中,其对安装流程已经表述的比较详细,主要是安装nvidia-docker和安装编译FasterTransformer。其中难点主要是在安装nvidia-docker上。

  • 当然其实也可以不安装nvidia-docker,直接使用配置好的cuda环境配置,但是这样的话我们就无法使用docker来配置环境,因此配置不好会污染环境,最好是使用docker安装环境,例如使用docker安装pytorch,在pytorch的镜像中安装FasterTransformer,编译出针对pytorch的FasterTransformer。因为FasterTransformer需要使用cuda调GPU,因此需要再容器中调用GPU,即配置好驱动环境,这在使用普通的docker是不能实现的。例如,我们可以随便进入一个容器,执行nvidia-smi看看能否识别出GPU设备。而安装nvidia-docker就是为了在容器中有GPU的环境。

  • 为了配置docker,我们按照官方教程进行安装,安装最后,运行sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi,如果能识别到GPU,即结果类似于如下所示即可认为安装成功。

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 535.86.10 Driver Version: 535.86.10 CUDA Version: 12.2 |
    |-------------------------------+----------------------+----------------------+
    | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
    | | | MIG M. |
    |===============================+======================+======================|
    | 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
    | N/A 34C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
    | | | N/A |
    +-------------------------------+----------------------+----------------------+

    +-----------------------------------------------------------------------------+
    | Processes: |
    | GPU GI CI PID Type Process name GPU Memory |
    | ID ID Usage |
    |=============================================================================|
    | No running processes found |
    +-----------------------------------------------------------------------------+

  • 安装成功后,我们可以从nvidia官方拉取一个pytorch镜像并建立容器,之后在该容器中配置环境。

  • 例如可以执行如下命令:docker run --name ft_pytorch -ti --runtime=nvidia --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/pytorch:22.06-py3。该命令就根据nvcr.io/nvidia/pytorch:22.06-py3镜像建立容器,容器名字为ft_pytorch。其中--runtime=nvidia --gpus all能够让我们在容器中识别到GPU,也就是上一步安装NVIDIA Container Toolkit的目的。在官方教程中,使用的是nvidia-docker命令,在这里我们只需要使用docker命令,外加--runtime=nvidia --gpus all就可以实现同样的功能。

  • --ipc=host是使容器共享宿主内存,这里主要是为了在容器内实现翻墙,从而方便的在容器内拉取github仓库。如果我们已经在linux服务器上安装好了翻墙软件例如clash,那么我们在容器中直接使用export http_proxy="http://127.0.0.1:7890/"export https_proxy="http://127.0.0.1:7890/"就可以实现翻墙了。

  • 此后,我们通过docker start运行并进入容器,可以先使用nvidia-smi再验证一下能否识别到GPU,如果可以识别,就可以继续下一步。

  • 拉取仓库git clone https://github.com/NVIDIA/FasterTransformer.git,并接着通过命令mkdir -p FasterTransformer/build, cd FasterTransformer/build新建build文件夹。

  • 执行git submodule init && git submodule update

  • 查找自己的GPU设备对应的DSM号,从官方网站上查询。

  • 执行cmake -DSM=xx -DCMAKE_BUILD_TYPE=Release -DBUILD_PYT=ON -DBUILD_MULTI_GPU=ON ..,将xx替换为刚刚查询的DSM号。注意此前我在官方网站上查询得到的DSM是8.9,之后我将8.9带入,一直无法编译成功。后来换成89就可以了!

  • 执行make -j12编译,成功后就可以跑FasterTransformer中的示例验证是否真正成功了!

  • 可以使用小一点的模型,例如opt-125m进行验证。跑huggingface的官方样例可能还需要在容器中安装git lfs,可以在网上搜索,我是参考的官方教程,应该也可以参考这个教程

相关推荐
开心大爆炸2 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
_Twink1e2 小时前
openJiuwen 实训营 Day 1 · WorkSwarm 入门教程
开发语言·c++·openjiuwen
oushaojun22 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
问天_观心3 小时前
大模型微调学习(一)
开发语言·人工智能·学习·语言模型·github
苏生Susheng3 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
dong_junshuai3 小时前
每天一个开源项目#87 fmt:24.5K Stars 的 C++ 格式化核心
c++·开源·github
Ruiery3 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败3 小时前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW4 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li4 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器