首页 > 教程攻略 > ai资讯 >大模型工程化部署:使用FastChat部署基于OpenAI API兼容大模型服务

大模型工程化部署:使用FastChat部署基于OpenAI API兼容大模型服务

来源:互联网 时间:2026-08-24 13:47:12

大模型部署这件事,说穿了无非是两难:想用高端模型就得忍受云端依赖,想本地化又常常面临接口不兼容的尴尬。而今天聊的这个框架,恰好把这两条路给打通了。

FastChat,出自加州大学伯克利分校的LM-SYS团队,定位是训练、服务和评估大模型聊天机器人的开放平台。它真正厉害的地方,不是堆功能,而是做了三件很关键的事:提供了最先进模型的权重、训练与评估代码;做了一个带WebUI且与OpenAI接口完全兼容的RESTful API,能够直接平替GPT接口;还让用户通过浏览器就能轻松使用各种模型。

其核心功能,可以归结为三点:

  • 提供最先进LLM模型的权重、训练代码和评估代码。
  • 带有WebUI和与OpenAI兼容的RESTful API的分布式多模型服务系统,可以平替,无缝迁移OpenAI GPT接口。
  • 提供WebUI界面,方便用户通过浏览器来使用LLM。

支持主流模型部署

FastChat支持的模型清单相当可观,包括LLama 2、Vicuna、Alpaca、Baize、ChatGLM、Dolly、Falcon、FastChat-t5、GPT4ALL、Guanaco、MTP、OpenAssistant、RedPajama、StableLM、WizardLM等。

优点

除了WebUI带来的便捷体验,FastChat最亮眼的还是它的RESTful API。它提供的API与OpenAI的API完全兼容,这意味着以前基于OpenAI API构建的一系列应用,几乎不需要改动任何代码,就能直接跑在FastChat上。一个现实的好处就是:通过OpenAI的GPT模型已经获得原型验证甚至商业成功的应用,可以用这个框架完整地迁移到本地。选择开源大模型,就能实现私有化大模型服务部署,从根本上避免数据出域、隐私安全等一系列问题。

说到架构,FastChat采用的是经典的master-sla ve模式,由一个controller统筹管理多个worker。整套部署体系包含了四个部分:

  1. 部署controller用于控制worker。
  2. 部署worker,然后worker注册到controller。
  3. 部署API服务,提供OpenAI API兼容的接口,可以平替OpenAI接口。
  4. FastChat WebUI,即Gradio Server,方便通过界面聊天。

准备环境

克隆代码

git clone https://github.com/lm-sys/FastChat.git
cd FastChat

创建虚拟环境

python -m venv env
source env/bin/activate

设置依赖镜像和版本

pip3 config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple
pip3 config set install.trusted-host mirrors.bfsu.edu.cn

安装依赖

pip3 install --upgrade pip
pip3 install -e ".[model_worker,webui]"
pip3 install git+https://github.com/huggingface/transformers
pip3 install transformers_stream_generator einop

安装成功

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

FastChat API 部署

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

python -m fastchat.serve.controller --host 0.0.0.0

用这种方式,可以后台运行:

python -m fastchat.serve.controller --host 0.0.0.0 &

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

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

pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download Qwen/Qwen-1_8B-Chat --local-dir Qwen/Qwen-1_8B-Chat
export CUDA_VISIBLE_DEVICES=0
python -m fastchat.serve.model_worker --model-path Qwen/Qwen-1_8B-Chat --model-names gpt-3.5-turbo --port 21002 --worker-address http://localhost:21002

使用FastChat的fastchat.serve.model_worker命令来启动服务,通过--model-path参数指定LLM的路径,服务启动后默认端口是21002,可以通过--port参数修改。首次启动会下载模型,速度会比较慢。

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

python -m fastchat.serve.openai_api_server --host 0.0.0.0 --port 8800

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

第四步,FastChat WebUI部署(不是必须启动)。

pip install openai

定义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 -m fastchat.serve.gradio_web_server --port 8801 --controller "" --share --register api_endpoints.json

如果遇到OPENAI_API_KEY错误,运行:export OPENAI_API_KEY='api_key'。如果遇到markupsafe错误,按这个版本安装:pip install markupsafe==2.0.1

服务默认端口是7860,可以通过--port参数指定。添加--share参数可以开启Gradio的共享模式,这样就能通过外网访问WebUI服务。启动后会得到一个类似ChatGPT的界面,可以用来生成内容。

接口参数含义

  • temperature

    :大于等于零的浮点数。取值为0时几乎没有随机性;取值越高,输出越随机。如果该问答只有确定性答案,T值设置为0,反之设置为大于0。
  • top_k

    :大于0的正整数。从k个概率最大的结果中进行采样。k越大,多样性越强;k越小,确定性越强。一般设置在20~100之间。实践中,可以从100开始逐步调低,直到效果达到最佳。
  • top_p

    :大于0的浮点数。使所有被考虑的结果的概率和大于p值。p值越大,多样性越强;p值越小,确定性越强。一般设置在0.7~0.95之间。实践中,可以从0.95开始降低,直到效果达到最佳。需要特别说明的是,top_p比top_k更有效,应优先调节这个参数。
  • repetition_penalty

    :大于等于1.0的浮点数。用于惩罚重复token,默认1.0代表没有惩罚。