链载Ai

标题: 大模型工程化部署:使用FastChat部署基于OpenAI API兼容大模型服务 [打印本页]

作者: 链载Ai    时间: 7 小时前
标题: 大模型工程化部署:使用FastChat部署基于OpenAI API兼容大模型服务


ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);visibility: visible;">FastChat是加州大学伯克利分校LM-SYS发布的一个用于训练、服务和评估基于大型语言模型的聊天机器人的开放平台。

项目地址:https://github.com/lm-sys/FastChat.git

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);visibility: visible;">其核心功能包括:

支持主流模型部署:

FastChat支持多种模型,包括LLama 2, Vicuna, Alpaca, Baize, ChatGLM, Dolly, Falcon, FastChat- t5, GPT4ALL, Guanaco, MTP, OpenAssistant, RedPajama, StableLM, WizardLM等。

优点:

Fastchat除了WebUI让大家便捷的使用和测试大模型外,还提供了restful API的服务调用方式,并且它提供的API与OpenAI开放出的API完全兼容,意味着以前大家基于OpenAI的API构建的一系列应用都可以无需任何改动,直接运行在FastChat框架上。

一个显而易见的好处就是,通过OpenAI的GPT模型已经获得原型验证甚至商业成功的应用,都可以采用这个框架将应用服务完整迁移到本地,通过选择开源的大模型即可实现私有化大模型服务部署,避免了数据出域、隐私安全等一系列问题。

2.2.1 FastChat Server架构

Fastchat的部署采用的架构是master-slave的模式, 由一个controller控制多个worker进行统筹管理。主要包括四个部分:

  1. 部署controller用于控制worker。

  2. 部署worker,然后worker注册到controller。

  3. 部署API服务,提供OpenAI API兼容的接口,可以平替OpenAI接口。

  4. FastChat WebUI, Gradio Server,方便通过界面聊天


准备环境(可用智星云云服务器)

克隆代码

gitclonehttps://github.com/lm-sys/FastChat.gitcdFastChat

创建虚拟环境

python-mvenvenvsourceenv/bin/activate

设置依赖镜像和版本

pip3configsetglobal.index-urlhttps://mirrors.bfsu.edu.cn/pypi/web/simplepip3configsetinstall.trusted-hostmirrors.bfsu.edu.cn

安装依赖

pip3install--upgradepippip3install-e".[model_worker,webui]"pip3installgit+https://github.com/huggingface/transformerspip3installtransformers_stream_generatoreinop

安装成功

注意:HuggingFace 在国内不能访问,可以切换到使用 ModelScope 的镜像。环境变量需要设置:export FASTCHAT_USE_MODELSCOPE=True

FastChat API 部署

第一步是启动控制器服务,启动命令:

python-mfastchat.serve.controller--host0.0.0.0
用这种方式,可以后台运行
python-mfastchat.serve.controller--host0.0.0.0&

这次运行的FastChat的fastchat.serve.controller命令,--host参数是设置服务的主机地址,这里设置为0.0.0.0,表示可以通过任何地址访问,服务启动后默认端口是21001,端口可以修改 通过 --port执定。如果想该命令的更多信息可以执行python -m fastchat.serve.controller --help命令。

第二步是启动 Model Worker 服务,启动命令:

pipinstall-Uhuggingface_hubexportHF_ENDPOINT=https://hf-mirror.comhuggingface-clidownload--resume-downloadQwen/Qwen-1_8B-Chat--local-dirQwen/Qwen-1_8B-Chat


exportCUDA_VISIBLE_DEVICES=0python-mfastchat.serve.model_worker\--model-pathQwen/Qwen-1_8B-Chat\--model-namesgpt-3.5-turbo\--port21002\--worker-addresshttp://localhost:21002

使用 FastChat 的fastchat.serve.model_worker命令来启动服务,通过--model-path参数来指定 LLM 的路径,服务启动后默认端口是 21002,可以通过--port参数来修改端口,如果想查看该命令的更多信息可以执行python -m fastchat.serve.model_worker --help命令,首次启动会下载模型,比较慢。

第三步是启动 RESTFul API 服务,启动命令:后面加&符号表示后台运行

python-mfastchat.serve.openai_api_server--host0.0.0.0--port8800

服务启动后,默认端口是8000,可以通过--port参数来修改端口,在浏览器中访问服务的这个路径http://127.0.0.1:8800/docs可以查看接口信息,这个服务就是我们最终要用的LLM API 服务,它的接口跟OpenAI 的接口是兼容的:

我们可以在Swagger里面直接请求对应的接口

第四步,FastChat WebUI 部署,不是必须启动项目

pipinstallopenai

定义api_endpoints.json

{"gpt-3.5-turbo":{"model_name":"gpt-3.5-turbo","api_type":"openai","api_base":"http://127.0.0.1:8800/v1","api_key":"sk-******","anony_only":false,"recommended_config":{"temperature":0.7,"top_p":1.0},"text-arena":true,"vision-arena":false}}

启动gradio_web_server

python3-mfastchat.serve.gradio_web_server--port8801--controller""--share--registerapi_endpoints.json
遇到OPENAI_API_KEY 错误,运行:export OPENAI_API_KEY='api_key'
遇到markupsafe 按这个版本安装:pip install markupsafe==2.0.1

服务默认端口是 7860,可以通过--port参数来指定端口,还可以通过添加--share参数来开启 Gradio 的共享模式,这样就可以通过外网访问 WebUI 服务。

启动后我们会得到这样一个界面,这个界面类似ChatGPT,可以用来生成内容。

接口参数含义:







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5