语言大模型部署踩坑,即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的驱动即可,官网驱动地址:

官方驱动 | NVIDIA

但是安装还有一些注意事项,这个是所有英伟达显卡在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的版本管理器,安装方法见下面文章,写的非常详细:

Linux安装conda - 知乎

 

注意:记得每次使用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部署

Docker Compose 快速部署 | FastGPT

其实除了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部署:

接入 M3E 向量模型 | FastGPT

 部署好后也需要修改配置文件config.json,加入到vectorModels里,同9里的注意2,修改model和name,

还需要加入oneapi的渠道

posted @ 2024-05-08 14:31  dirgo  阅读(1633)  评论(0编辑  收藏  举报