从0开始搭建本地MOSS智能机器人

【前言】MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到,后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。(该部分内容来源于MOSS代码库内的介绍)

【前提条件】需要具备至少一块12GB(个人估计的值)显存的显卡,或者以上规模。.

远程到GPU服务器,我这边本地使用的是Centos 7.5系统环境,目前在远程端,我就直接ssh连接上去进行部署。

从0开始搭建本地MOSS智能机器人

查看显卡信息:

从0开始搭建本地MOSS智能机器人

查看显卡显存等其他信息,我这边使用的一共8张GTX3080TI显卡,96G显存,应该是够用了。AI模型运行和推理,主要耗费显存和cuda核心,所以显存一定要够。

从0开始搭建本地MOSS智能机器人

下载moss项目到本地
git clone https://github.com/OpenLMLab/MOSS.git

从0开始搭建本地MOSS智能机器人

git clone报错,可能是第一次使用,git 版本有问题,先卸载
yum remove git

从0开始搭建本地MOSS智能机器人

安装git 依赖包们

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc -y
yum install gcc perl-ExtUtils-MakeMaker -y

从0开始搭建本地MOSS智能机器人

从0开始搭建本地MOSS智能机器人

查看git版本列表

https://mirrors.edge.kernel.org/pub/software/scm/git

从0开始搭建本地MOSS智能机器人

下载指定的版本,例如最新版 git-2.39.2.tar.gz

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.39.2.tar.gz

从0开始搭建本地MOSS智能机器人

报错了,根据提示进行改造一下,为了以防万一,git版本下载低一点的,例如2.28.0

从0开始搭建本地MOSS智能机器人

解压和创建git安装文件夹

tar -zxf git-2.28.0.tar.gz
mkdir -p ~/local/git
cd git-2.28.0/
./configure --prefix=$HOME/local/git

从0开始搭建本地MOSS智能机器人

编译与安装git

make && make install

从0开始搭建本地MOSS智能机器人

设置环境变量和查看当前版本

export PATH=$HOME/local/git/bin:$PATH
git version

从0开始搭建本地MOSS智能机器人

重新拉取代码

可能是网络原因,或者其他某些原因,一直无法拉取成功

从0开始搭建本地MOSS智能机器人

只能使用工具传上去,例如 SCP工具或命令等。先把moss库git clone到本地,然后通过工具传输到远程服务器上。

从0开始搭建本地MOSS智能机器人

MOSS项目现在在服务器上了

从0开始搭建本地MOSS智能机器人

把默认的torch版本改为1.13.1版本,或者其他高版本也行【备注:现在最新的代码库,已经修复了低版本问题,该步骤可以省略】

从0开始搭建本地MOSS智能机器人

进行安装moss依赖

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

从0开始搭建本地MOSS智能机器人

如果提示没有pip命令,那就安装pip

yum install epel-releaseyum install -y python-pip

从0开始搭建本地MOSS智能机器人

从0开始搭建本地MOSS智能机器人

验证pip,检查版本通过即可。

从0开始搭建本地MOSS智能机器人

需要conda环境,如果conda环境还没有,那就先安装anaconda,例如我找个最新版进行安装

从0开始搭建本地MOSS智能机器人

anaconda下载列表地址:

https://repo.anaconda.com/archive/

从0开始搭建本地MOSS智能机器人

焦急地等待中……下载有点慢,让它跑一会儿

从0开始搭建本地MOSS智能机器人

下载失败,只好本地下载再传送过去了

从0开始搭建本地MOSS智能机器人

传输成功,在路径下可以看见ananconda安装包了

从0开始搭建本地MOSS智能机器人

安装anaconda
sh Anaconda3-2023.03-1-Linux-x86_64.sh

从0开始搭建本地MOSS智能机器人

配置anaconda环境变量

获取到ananconda安装的路径

从0开始搭建本地MOSS智能机器人

配置环境变量

vim ~/.bashrc

把anaconda的bin目录添加到环境变量里面去

从0开始搭建本地MOSS智能机器人

输入 conda没有报错,代表环境安装完成

从0开始搭建本地MOSS智能机器人

创建moss运行所需要的conda环境

conda create --name moss python=3.8
conda activate moss

从0开始搭建本地MOSS智能机器人

从0开始搭建本地MOSS智能机器人

现在重新安装文件里面的依赖,可以通过python3来安装了。先前应该是本地只有python2环境导致的匹配不到高版本的包

从0开始搭建本地MOSS智能机器人

如果下载太慢,就换一个国内镜像站,例如清华镜像站,速度马上飞起

-i https://pypi.tuna.tsinghua.edu.cn/simple

从0开始搭建本地MOSS智能机器人

从0开始搭建本地MOSS智能机器人

运行demo代码,首次运行会下载模型,大约30G左右

python moss_cli_demo.py

从0开始搭建本地MOSS智能机器人

模型下载失败,一断回到解放前……

从0开始搭建本地MOSS智能机器人

改下下载超时规则,找到 huggingface_hub下面的_http.py代码进行修改

从0开始搭建本地MOSS智能机器人

requests.exceptions包导入额外的功能,可参考自行比对,可能有差异,不够就补。

from requests.exceptions import ConnectTimeout, ProxyError,SSLError,Timeout

以及超时时间、重试等都设置大一点。

从0开始搭建本地MOSS智能机器人

重新走一个,发现好像不明所以地变快了???

从0开始搭建本地MOSS智能机器人

最终还是下载失败,于是上hugging face下载到本地,然后再传输到服务器上。Fugging face所在模型地址:

https://huggingface.co/fnlp/moss-moon-003-sft/tree/main

从0开始搭建本地MOSS智能机器人

然后通过远程工具,丢到MOSS下的fnlp文件夹下:

从0开始搭建本地MOSS智能机器人

【注意事项】demo源码一些代码,可能需要自己更改默认参数。例如选择的模型、GPU核心数等。我为了方便,直接在源码里面进行修改。

从0开始搭建本地MOSS智能机器人

最后重新运行demo代码,显示运行通过。

不过在对话过程中,报错了,显示RuntimeError: No CUDA GPUs are available

从0开始搭建本地MOSS智能机器人

接下来得解决RuntimeError: No CUDA GPUs are available错误

先验证下cuda是否生效,写个python代码进行输出

从0开始搭建本地MOSS智能机器人

验证显卡,发现显卡驱动没了。明明刚开始时候还可以来着,可能是出现了某种冲突,或者灵异事件。

从0开始搭建本地MOSS智能机器人

吓得我赶紧先确认下显卡还在不在(还好还在)。还有检查旧版显卡驱动,如果有旧版驱动,先卸载旧版驱动,防止它继续搞幺蛾子。

lspci | grep -i nvidiayum remove "*nvidia*"

从0开始搭建本地MOSS智能机器人

也检查下驱动的一些其他依赖,例如 cuda、cublas等。发现没查出来,就代表没有。有的话也要进行移除。

从0开始搭建本地MOSS智能机器人

下载最新版驱动,根据自己的情况选择驱动。

https://www.nvidia.cn/Download/index.aspx?lang=cn

从0开始搭建本地MOSS智能机器人

下载以后,放到服务器上,进行安装。

从0开始搭建本地MOSS智能机器人

发现文件颜色不对,权限可能不够,授予权限

chmod 777 NVIDIA-Linux-x86_64-525.116.03.run

从0开始搭建本地MOSS智能机器人

检查nouveau驱动是否禁用,安装显卡前需要先禁用。

lsmod | grep nouveau

如果有输出,代表已启动,需要想办法禁用掉。

从0开始搭建本地MOSS智能机器人

打开屏蔽小黑屋的配置文件

vim /lib/modprobe.d/dist-blacklist.conf

从0开始搭建本地MOSS智能机器人

在文件末尾新增两行

blacklist nouveauoptions nouveau modeset=0

从0开始搭建本地MOSS智能机器人

备份initramfs:

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

从0开始搭建本地MOSS智能机器人

重新建立initramfs

dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

从0开始搭建本地MOSS智能机器人

从0开始搭建本地MOSS智能机器人

设置完毕,记得重启【例如通过命令reboot】。重启以后,该驱动没输出了,说明驱动屏蔽完毕。

从0开始搭建本地MOSS智能机器人

开始安装显卡驱动

./NVIDIA-Linux-x86_64-525.116.03.run -no-x-check

从0开始搭建本地MOSS智能机器人

有一些检查项,直接全部默认

从0开始搭建本地MOSS智能机器人

安装完毕以后,检查显卡,终于开篇显示的显卡信息又可以出来了~

从0开始搭建本地MOSS智能机器人

安装cuda环境

可以参考英伟达文档,进行一些初步设置。Nvidia安装文档链接:

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

从0开始搭建本地MOSS智能机器人

yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

从0开始搭建本地MOSS智能机器人

然后点击以下链接,选择对应你操作系统的有关的版本进行下载

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=CentOS&target_version=7&target_type=rpm_network

从0开始搭建本地MOSS智能机器人

为了方便,我选择在线安装,根据提示的内容,进行相关操作

从0开始搭建本地MOSS智能机器人

yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo

从0开始搭建本地MOSS智能机器人

安装dkms驱动

yum clean allyum -y install nvidia-driver-latest-dkms

从0开始搭建本地MOSS智能机器人

安装cuda环境

yum -y install cuda

从0开始搭建本地MOSS智能机器人

Cuda安装完成

从0开始搭建本地MOSS智能机器人

测试一下环境

nvcc -V

发现还是没有命令,但是在 /usr/local/cuda下面是有文件的,说明可能是环境变量没配置

从0开始搭建本地MOSS智能机器人

修改配置文件

vim ~/.bashrc

最末尾新增

export LD_LIBRARY_PATH=/usr/local/cuda/libexport PATH=$PATH:/usr/local/cuda/bin

从0开始搭建本地MOSS智能机器人

从0开始搭建本地MOSS智能机器人

sourse一下,重新输入 nvcc -V 即可看到cuda版本信息,说明cuda环境OK了。

从0开始搭建本地MOSS智能机器人

重新启动服务器,进入激活moss环境,通过输入python代码重新验证一下,发现已经通过

从0开始搭建本地MOSS智能机器人

重新运行demo代码,运行成功,输入内容进行对话测试,结果如下图运行所示

从0开始搭建本地MOSS智能机器人

OK,本地部署到此结束。

如果本文章对你有帮助,欢迎点赞、在看