语言大模型部署踩坑,即FastGpt使用要点记录
需求:
部署一个智能问答助手,可以理解客户提出的问题,并从我们提供的资料中找出信息进行回答.
选型:
FastGpt可以很好满足这个需求,且可以使用本地部署的语言大模型,而且是开源项目,方便二次开发,接入微信钉钉等也有现成方案.
踩坑:
总体部署方法按照FastGpt的文档:使用 Xinference 接入本地模型 | FastGPT
其中又引用了几篇文章:
https://xorbits.cn/blogs/langchain-streamlit-doc-chat#3部署-qwen-14b-模型
https://xorbits.cn/blogs/fastgpt-weather-chat
1.为了节省成本,选用了矿卡 英伟达P104-100,8G显存,但是没有显示接口.
这块卡如果想有视频输出,需要使用带核显的cpu,但搜到文章如果是linux系统,使用ssh,没有核显也可以,参考文章:
矿卡P104再就业AI绘图(附centos安装cuda及配置stable diffusion教程) - 哔哩哔哩
我的电脑有核显,但是注意安装好驱动以后,主板的显示选项里,显示输出要选择PCI-E,而不是核显
2.系统使用国产开源Linux发行版 openEuler 22.03LTS sp3
刚开始安装cuda,提示成功,过一阵重启,系统损坏,重装系统,还是报错,后来换了块硬盘好了
3.安装显卡驱动
这块显卡在英伟达官网搜不到对应型号驱动,但其实核心与gtx1080相近,下载安装1080的驱动即可,官网驱动地址:
但是安装还有一些注意事项,这个是所有英伟达显卡在Linux上装驱动时都要注意的,就是需要先禁用Linux默认的英伟达驱动nouveau,详细操作见文章:
【国产化踩坑记】openEuler系统安装,nvidia驱动,cuda,anaconda安装步骤记录_openeuler安装nvidia驱动-CSDN博客
4.安装CUDA
也是按照官网步骤安装即可
CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA Developer
其中系统没有openEuler,所以选择的是centOS 版本选 7,安装方式用的rpm(network)成功安装,估计rpm(local)也可以
试过runfile(local)但是没有成功.
安装完成后配置系统变量,见3中的文章
5.安装python环境,建议先安装conda,即python的版本管理器,安装方法见下面文章,写的非常详细:
注意:记得每次使用python命令要激活进入对应的版本环境,即使用命令:
conda activate py311
6.安装xinference及推理后端
因为硬件PC,为了降低显存占用,安装 CTransformers 作为 Xinference 的推理后端,即:
pip install xinference
pip install ctransformers
安装c++库
- Nvidia GPU:
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
其实xinference也提供了Docker版本,但是为了减少大模型运行的损耗,还是选择了实体机部署
7.启动 Xinference 模型服务
因为默认的模型来源网站HuggingFace无法正常访问,所以使用启动参数修改为modelscope,命令 :
XINFERENCE_MODEL_SRC=modelscope xinference-local -H 0.0.0.0
注意:参考网站的参数有误,H前面只有一条横杠
8.然后访问http://部署机器ip:9997/即可打开Xinference 提供的WebUI
在Launch Model里搜索,点击模型,选好参数,点击火箭图标,然后第一次会下载这个模型,如果模型很大,时间会长一些,下载完成就会启动,然后在Running Models里就可以查看到,点击最后一栏Actions下第一个图标,就可以进行测试对话.
实测在这里的对话应该是用了模型的高配置,以qwen-1.8为例,可以用满8G的显存,而在默认配置的FastGpt里,显存只用到4G多,当然回答的质量也是成正比的,这个有待稍候研究.
9.部署fastgpt
直接使用官方文档的快速部署,即docker compose部署
其实除了fastgpt还部署了oneapi
有几个需要注意的点:
(1)docker-compose.yml文件里需要设置一下环境变量,主要是oneapi相关的,OPENAI_BASE_URL这个特别注意,因为要访问其他容器映射出来的端口,则ip或者域名应当写宿主机的,有些文章建议使用docker提供的http://host.docker.internal,实测并不可行,还是要写本机的ip或者docker安装后默认虚拟出来的网关,比如172.17.0.1;
另外注意后面一定要加/v1,例如:- OPENAI_BASE_URL=http://192.168.3.111:3001/v1;CHAT_API_KEY即在oneapi里创建的令牌.
(2)接入本地模型,需要修改fastgpt的配置文件:config.json,但是官方文档里的方法在新版本已经不适用了,
即已不再区分chatModels、cqModels 和 extractModels,不需要添加三个,只在llmModels里添加一个就可以,
可以复制里面一个已有的比如gpt-3.5-turbo的,然后进行修改,注意修改"model"必须与oneapi里添加的自定义渠道里的"模型"一项一致,比如qwen-chat,再就是"name"可以任意起名比如:千问模型测试
10.要本地使用fastgpt的知识库功能,还需要部署本地向量模型,如M3E,也是按照官方文档,使用docker部署:
部署好后也需要修改配置文件config.json,加入到vectorModels里,同9里的注意2,修改model和name,
还需要加入oneapi的渠道