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,可以在网上搜索,我是参考的官方教程,应该也可以参考这个教程

相关推荐
FoldWinCard2 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
2601_954526753 小时前
【工业传感与算法实战】温漂补偿与零点抗漂破局:基于二阶多项式拟合的 C/C++ 边缘校准算法,深度拆解“压力变送器什么牌子好”的技术硬指标
c语言·c++·算法
code_pgf4 小时前
`unordered_map` 详解
c++
零涂毕业设计4 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud1234 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质4 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX4 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.4 小时前
Linux系统管理
linux·运维
阿龙的工作记录5 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手5 小时前
Linux的基本指令
linux·运维·服务器