闻达用RWKV部署在Linux上 以Ubuntu为例
1.闻达介绍
1.1简介
闻达是一个LLM调用平台。目标为针对特定环境的高效内容生成,同时考虑个人和中小企业的计算资源局限性,以及知识安全和私密性问题。
针对特定环境的内容生成是LLM使用中的一项重要应用,实现这一目的,主要有全量微调、lora 微调、和本项目方法。但个人没有做全量微调的,lora 微调只能牺牲基础能力换单任务效果(用 6B 模型 lora 调出来的单任务效果,专门设计一个 0.5B 模型也能实现,且推理成本更低)。
而本项目采用知识库 +auto 脚本的形式为 LLM 提高生成能力,充分考虑个人和中小企业的资源问题,以及国内大背景下知识安全和私密性问题,实现使小模型获得近似于大模型的生成能力。
目前支持模型:chatGLM-6B、chatRWKV、chatYuan、llama 系列以及 openaiapi 和 chatglm130b api,初步支持 moss。
使用知识库扩展模型所知信息,使用 auto 提高模型生成质量和复杂问题解决能力。
支持 chatGLM-6B、chatRWKV、llama 系列流式输出和输出过程中中断。
自动保存对话历史至浏览器(多用户同时使用不会冲突,chatRWKV 历史消息实现方式需使用 string)
对话历史管理(删除单条、清空)
支持局域网、互联网的部署和多用户同时使用。
1.2项目地址
https://github.com/wenda-LLM/wenda
1.3闻达llm交流QQ群
162451840
我在群里叫:Rolex#11770🎈
2.闻达部署
写在前面,采用2台机器部署的原因是在实际生产需求中服务端往往不在本地,有可能在公司甚至可能在云端,所以采用这种Clint/Server的方式更加符合未来实际生产需求。当然如果有防火墙或者端口限制的问题,需要做进一步调整。
2.1硬件/系统需求
1台前端:PC(运行PowerShell)/macOS(运行Terminal终端);简称:【1号机】192.168.1.11
1台后端服务端:系统为Ubuntu Server 22.04 LTS,显卡需求参考所使用的模型需求;简称:【2号机】192.168.1.16
2台机器之间网络可以互通方便ssh连接,并且都可以连接互联网;
本说明以2台机器都在同一个局域网内作为范例
2.2新建conda(Anaconda)虚拟环境
Anaconda下载目录:https://repo.anaconda.com/archive/
目前最新下载地址为:https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
$ ssh root@192.168.1.16
$ wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh //下载Anaconda
$ sudo sh Anaconda3-2023.03-1-Linux-x86_64.sh //安装Anaconda
安装需要输入yes,完成生效:exit退出当前shh登录,并重ssh连接,刚刚安装和初始化Anaconda设置才可以生效。
$ conda config --set auto_activate_base false //修改启动环境:如果您希望 conda 的基础环境在启动时不被激活,请将 auto_activate_base 参数设置为 false
$ conda -V //查看conda版本
$ conda update conda -y //更新conda版本
$ conda info -e //查看虚拟环境列表
$ conda create -n wenda python=3.11 cudatoolkit=11.8 -y //通过conda中新建虚拟环境wenda
$ conda activate wenda //To activate this environment, use 激活wenda虚拟环境
如果需要退出conda环境的话:
$ conda deactivate //To deactivate an active environment, use 退出当前conda环境
2.3安装wenda闻达环境
项目地址:https://github.com/wenda-LLM/wenda
$ cd ~ //进入当前用户文件夹
$ git clone https://github.com/wenda-LLM/wenda.git //从GitHub上下载wenda闻达git项目
$ cd ~/wenda/ //进入wenda文件夹
$ pip3 install -r ~/wenda/requirements/requirements.txt //安装依赖环境
2.4安装RWKV模型or或者ChatGLM-6B RLHF & LoRA Model模型
RWKV项目地址:https://github.com/BlinkDL/ChatRWKV
$ mkdir ~/model //新建一个model文件夹
$ cd ~/model //进入model文件夹
$ wget https://huggingface.co/BlinkDL/rwkv-4-world/resolve/main/RWKV-4-World-CHNtuned-7B-v1-20230709-ctx4096.pth //下载RWKV的模型RWKV-4-World-CHNtuned-7B-v1-20230709-ctx4096.pth
or或者
在【1号机】在桌面上下载并解压缩好ChatGLM-6B RLHF & LoRA Model模型(在我的百度网盘企业版分享
链接: https://pan.baidu.com/s/1iopvjjEfyztefjqLxTwNhA
提取码: 5c5k)路径是:/Users/rolex/Desktop/ChatGLM-6B_RLHF
$ scp -r ~/Desktop/ChatGLM-6B_RLHF/* root@192.168.1.16:/root/model/ChatGLM-6B_RLHF/
$ pip3 install transformers //安装transformers
$ cp ~/wenda/example.config.yml config.yml //复制一份配置文件
$ vim ~/wenda/config.yml //编辑配置文件
修改RWKV模型的路径,在95-96行修改成:
path: “/root/model/RWKV-4-World-CHNtuned-7B-v1-20230709-ctx4096.pth” #rwkv模型位置"
strategy: “cuda fp16”
修改RWKV模型参数,在109-110行修改成:
presence_penalty: 0
count_penalty: 1
$ vim ~/wenda/llms/llm_rwkv.js
修改llm_rwkv.js文件的默认参数,在1-2行修改成:
app.temperature=1
app.top_p=0.3
or或者
修改ChatGLM-6B_RLHF模型的路径,在112行修改成:
path: “/root/model/ChatGLM-6B_RLHF”
2.5安装M3E-Base模型
模型下载地址:https://huggingface.co/moka-ai/m3e-base
$ cd ~/model //进入wenda/model文件夹
$ mkdir -p ~/model/m3e-base //新建一个wenda/model/m3e-base文件夹
$ cd ~/model/m3e-base //进入wenda/model/m3e-base文件夹
$ for file in .gitattributes README.md config.json model.safetensors pytorch_model.bin special_tokens_map.json tokenizer.json tokenizer_config.json vocab.txt; do wget -N https://huggingface.co/moka-ai/m3e-base/resolve/main/$file; done //-N参数让wget只下载那些比本地版本新的文件
$ vim ~/wenda/config.yml //编辑配置文件
修改rtst模型路径,在55行修改成:
model_path: “/root/model/m3e-base"
$ pip3 install -U sentence-transformers //使用M3E需要先安装sentence-transformers
2.6安装知识库rtst模式
在1号机下载知识库,并确认为txt文本文件(可以是一批文件),假设这个文件的路径是:
~/Desktop/知识库样例数据/txt/
重新开一个Terminal终端窗口
$ scp -r ~/Desktop/txt/* root@192.168.1.16:/root/wenda/txt/
$ ssh root@192.168.1.16
$ cd ~
$ conda activate wenda //激活wenda的conda虚拟环境
$ which python3 //查看conda虚拟环境中查看python3的路径
显示python3路径在:/root/anaconda3/envs/wenda/bin/python3
$ vim ~/wenda/run_rwkv.sh
修改python路径,第2行修改成:
PYTHON=“/root/anaconda3/envs/wenda/bin/python3”
$ python3 ~/wenda/plugins/gen_data_st.py //生成知识库
$ cd ~/wenda && sh ./run_rwkv.sh //运行rwkv需要的文件
2.7运行
$ conda activate wenda //进入wenda虚拟环境
$ cd ~/wenda && python3 ~/wenda/wenda.py //运行闻达
如果需要停止运行请按“control+C”,如果还不是不行就按“control+\”
另外,如果想监控【2号机】192.168.1.16上的显卡运行状况,在【1号机】上新开一个Terminal终端运行:
$ ssh root@192.168.1.16
$ watch -n 0.1 nvidia-smi //以10次/秒的频率刷新监控GPU使用状况
2.8更多环境配置
如果像我一样需要指定运行在第2个GPU显卡上,那么请这样修改:
$ vim ~/wenda/config.yml //编辑配置文件
修改RWKV模型的路径,在96行修改成:
strategy: “cuda:1 fp16i8”
如果显卡的显存大于15G,又想更快的运行,可以把96行修改成这样:
strategy: "cuda:1 fp16”
修改双显卡GPU运行不同的神经网络层,在96行修改成:
strategy: “cuda:0 fp16 *14 -> cuda:1 fp16”
2.9访问
在【1号机】浏览器(例如Chrome)内输入:
http://192.168.1.16:17860
如果【1号机】上直无法直接接访问【2号机】的端口,也可以通过端口SSH隧道的方式做端口映射:
在【1号机】上新开一个Terminal终端运行:
$ ssh -L 17860:localhost:17860 root@192.168.1.16 //把本地的7860端口映射到192.168.1.16的7860端口上
此时【1号机】的17860端口就被映射到【2号机】的17860上去了
在【1号机】浏览器(例如Chrome)内输入:
http://localhost:17860
2.10更新
$ git -C ~/wenda pull //更新wenda闻达
2.11删除整个环境和文件夹
$ conda deactivate //退出环境
$ conda remove -n wenda --all -y //删除wenda环境
$ conda info -e //查看当前conda环境是否还有wenda
$ rm -rf ~/wenda
版权归原作者 RolexChan 所有, 如有侵权,请联系我们删除。