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

相关推荐
Felven43 分钟前
stress-ng 与 fio 性能测试工具使用指南
linux·测试工具·fio·stress-ng
by209991 小时前
vector 的模拟实现:扩容与边界的详细阐述(下)
c++·经验分享·vector·动态数组
huainingning2 小时前
RJ SW Console口忘记密码处理方法
linux·运维·服务器
布裘2 小时前
【银河麒麟】桌面系统循环登录,无法进入桌面?
linux·运维·服务器
慧都小项2 小时前
程序到了Linux才出错?用CLion把调试接到目标环境
linux·运维·服务器
余额瞒着我当琳4 小时前
红黑树的实现--红黑树的概念、规则、效率、结构、旋转、查找、验证
数据结构·c++·算法
青少儿编程课堂4 小时前
AC自动机多模式串匹配精讲:校园关键词巡检实战解析
c++·python·算法·bfs·信息学竞赛
Dawson Zhu4 小时前
《Agentic Design Patterns》第 1 章导读:提示词链(Prompt Chaining)
人工智能·语言模型·架构·aigc·agi
Ruiery4 小时前
Linux 6.6内核内存管理深度解析(一):物理内存初始化 — memblock 怎么把内存交给 buddy
linux·运维·服务器
天蓝蓝的本我5 小时前
conda日常用到的命令积累1-登录linux,安装pycharm
linux·pycharm·conda