暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【你好!我是MOSS】从0开始搭建本地MOSS智能机器人

Dotnet Dancer 2023-04-27
953


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

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

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

查看显卡信息:

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

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

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

      安装git 依赖包们

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

          查看git版本列表

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


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

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




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


            解压和创建git安装文件夹

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


                    编译与安装git

                      make && make install


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

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


                          重新拉取代码

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

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


                          MOSS项目现在在服务器上了


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

                          进行安装moss依赖

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


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

                              yum install epel-release
                              yum install -y python-pip


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


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


                              anaconda下载列表地址:

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


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

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


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

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


                                配置anaconda环境变量

                                获取到ananconda安装的路径

                                配置环境变量

                                  vim ~/.bashrc

                                  anacondabin目录添加到环境变量里面去

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


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

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



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

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

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


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

                                          python moss_cli_demo.py


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


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


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

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

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

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

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

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


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


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


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

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


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

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

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

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

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

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


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

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


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

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

                                                chmod 777 NVIDIA-Linux-x86_64-525.116.03.run

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

                                                  lsmod | grep nouveau

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


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

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

                                                    在文件末尾新增两行

                                                      blacklist nouveau
                                                      options nouveau modeset=0


                                                      备份initramfs

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

                                                        重新建立initramfs

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


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


                                                          开始安装显卡驱动

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

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

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


                                                            安装cuda环境

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

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

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


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

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

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


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


                                                                安装dkms驱动

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

                                                                  安装cuda环境

                                                                    yum -y install cuda

                                                                    Cuda安装完成


                                                                    测试一下环境

                                                                      nvcc -V


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

                                                                      修改配置文件

                                                                        vim ~/.bashrc

                                                                        最末尾新增

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

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

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

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

                                                                          OK,本地部署到此结束。

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









                                                                          文章转载自Dotnet Dancer,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                          评论