FastChat

在这里插入图片描述

Fast Chat是一个用于训练/部署和评估基于大型语言模型的聊天机器人的开发平台。其核心功能包括:

  • 最先进模型的权重/训练代码和评估代码(例如Vicuna/FastChat-T5)
  • 基于分布式多模型的服务系统,具有Web界面和与OpenAI兼容的RESTful API。

安装

在这里插入图片描述

pip install fschat

模型权重

支持的模型

https://github.com/lm-sys/FastChat/blob/main/docs/model_support.md
在这里插入图片描述

如何支持新模型

在这里插入图片描述

model_registry.py

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

conversation.py

  • ChatGLM default template & ChatGLM2 default template
    在这里插入图片描述
    在这里插入图片描述

  • ChatGPT default template
    在这里插入图片描述

  • Baichuan-13B-Chat template
    在这里插入图片描述
    在这里插入图片描述

  • Qwen-chat default template
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • llama2 template
    在这里插入图片描述
    在这里插入图片描述

model_adapter.py

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • PeftModelAdapter
    在这里插入图片描述

  • ChatGLMAdapter
    在这里插入图片描述

  • ChatGPTAdapter
    在这里插入图片描述

  • BaichuanAdapter
    在这里插入图片描述

  • Llama2Adapter
    在这里插入图片描述

  • QwenChatAdapter
    在这里插入图片描述

使用命令行界面进行推理

python -m fastchat.serve.cli --model-path xxx

使用Web GUI进行服务

使用Web UI进行服务,需要提供三个主要组件:与用户交互的Web服务器/托关一个或多个模型的模型工作者,协调Web服务器和模型工作者的控制器。

  • 启动控制器
    该控制器管理分布式工作者

    python -m fastchat.serve.controller
    
  • 启动模型工作者

    python -m fastchat serve.model_worker --model-path xxx
    

    等带进程完成加载模型并显示"Uvicorn running on …"。模型工作者将向控制器器注册自己。
    为了确保您的模型工作者已正确连接到控制器,请使用以下命令发送测试消息,将看到一个简短的输出。

    python -m fastchat.serve.test_message --model-name xxx
    
  • 启动动服务器

    python -m fastchat.serve.gradio_web_server
    

    这是用户将于与之交互的用户界面。
    安装这些步骤,将能够使用Web UI提供您的模型。可以打开浏览器并与模型聊天。如果没有显示出来,将暂时重新启动Gradio Web服务器。

  • 高级功能
    可以将 多个模型工作者注册到单个控制器,这可用于提高模型的吞吐量或同时提供多个模型。在这种情况下,需要为不同的模型分配不同的GPU和端口号。

    # worker 0
    CUDA_VISIBLE_DEVICES=0 python -m fastchat.serve.model_worker --model-path xxx --controller http://localhost:21001 --port 31000 --worker http://localhost:31000
    # worker 1
    CUDA_VISIBLE_DEVICES=1 python -m fastchat.serve.model_worker --model-path xxx --controller http://localhost:21001 --port 31001 --worker http://localhost:31001
    

还可以启动一个包含Chatbot Arena选项卡的多标签Gradio服务器。

python -m fastchat.serve.gradio_web_server_multi

应用程序编程接口API

兼容OpenAI的RESTful API和SDK

FastChat为其支持的模型提供了兼容OpenAI的API,因此可以将FastChat作为OpenAI API的本地替代品使用。FastChat服务器与openai-python库和cURL命令兼容。

https://github.com/lm-sys/FastChat/blob/main/docs/openai_api.md

在这里插入图片描述

  • RESTful API Server
    在这里插入图片描述
  • OpenAI Official SDK
    在这里插入图片描述
  • cURL
    在这里插入图片描述

Hugging Face 生成API

https://github.com/lm-sys/FastChat/blob/main/fastchat/serve/huggingface_api.py
在这里插入图片描述

LangChain集成

https://github.com/lm-sys/FastChat/blob/main/docs/langchain_integration.md
LangChain是一个库,它通过利用大型语言模型(LLM)并使其能够与其它计算或知识源组合起来促进应用程序的开发。FastChat兼容OpenAI的API服务器可以无缝的使用Langchain和开放模型。

  • 启动RESTful API服务器
    在这里插入图片描述

  • 设置OpenAI 环境
    在这里插入图片描述

  • 尝试本地LangChain
    在这里插入图片描述

评估

在这里插入图片描述
https://github.com/lm-sys/FastChat/tree/main/fastchat/llm_judge

安装

在这里插入图片描述

查看预先生成的模型答案和判断

在这里插入图片描述
https://huggingface.co/spaces/lmsys/mt-bench
在这里插入图片描述

MT工作台

  • 在MT-bench上评估模型
    在这里插入图片描述

  • 其它评分选项
    在这里插入图片描述

  • 如何得到GPT-3.5/GPT-4/Claude的答案
    在这里插入图片描述

  • 绘图
    在这里插入图片描述

协议计算

在这里插入图片描述

数据集

  • Chatbot Arena对话数据集
    https://huggingface.co/datasets/lmsys/chatbot_arena_conversations
    在这里插入图片描述

  • MT-bench人工注释数据集
    https://huggingface.co/datasets/lmsys/mt_bench_human_judgments
    在这里插入图片描述

微调

数据

在这里插入图片描述

  • sharegpt_zh_27k.json
    在这里插入图片描述
  • dummy_conversation.json
    https://github.com/lm-sys/FastChat/blob/main/data/dummy_conversation.json
    在这里插入图片描述

代码和超参数

在这里插入图片描述

使用本地GPU微调Vicuna-7B

在这里插入图片描述
https://github.com/lm-sys/FastChat/blob/main/docs/training.md
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考资料
FastChat——一个用于训练、部署和评估基于大型语言模型的聊天机器人的开放平台
lm-sys/FastChat

### 关于FastChat性能优化的方法 为了提升FastChat的速度和性能,可以从以下几个方面入手: #### 1. 使用高效的推理框架 VLLM 是一种能够显著提高大语言模型推理效率的工具[^5]。通过连续批处理(Continuous Batching),它可以有效减少 GPU 的闲置时间,从而大幅加快推理速度。如果 FastChat 集成了 VLLM,则可以通过调整其配置来进一步优化性能。 #### 2. 参数高效微调 (PEFT) 参数高效微调技术可以帮助降低模型大小的同时保持较高的精度[^4]。对于 FastChat 而言,在部署阶段应用 PEFT 可以减小模型体积,进而减少内存占用并加速加载过程。具体来说,可以尝试使用 Hugging Face 提供的 PEFT 库来进行适配工作。 #### 3. 模型量化 模型量化是一种压缩神经网络权重表示的技术,通常会将浮点数转换成更低位宽的数据类型(比如 int8 或 float16)。这种做法不仅减少了存储需求,还提升了计算吞吐量。在 FastChat 中启用量化功能可能会带来明显的性能增益[^2]。 ```python from transformers import AutoModelForCausalLM, BitsAndBytesConfig bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype="float16" ) model = AutoModelForCausalLM.from_pretrained("your_model_path", quantization_config=bnb_config) ``` #### 4. 并行化策略 合理设计多卡分布式训练或者推断流程也是改善系统表现的重要手段之一。例如,可以考虑采用张量切片、流水线并行等方式充分利用集群资源[^1]。 #### 5. 缓存机制 引入缓存层能有效缓解重复请求带来的压力。当用户发送相似问题时,可以直接返回之前已经生成过的答案而无需再次执行完整的解码操作[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值