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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/75991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Cisco设备上配置接口速度和双工

默认情况下,思科交换机将自动协商速度和双工设置。将设备(交换机、路由器或工作站)连接到 Cisco 交换机上的端口时,将发生协商过程,设备将就传输参数达成一致,当今的大多数网络适配器都支持此功能。 在本文…

八路DI八路DO,开关量远程IO模块,Modbus TCP数据采集模块 YL90-RJ45

特点: ● 八路开关量输入,八路开关量输出 ● DI状态变化自动发送状态数据,可以捕获脉冲 ● 采用Socket自由协议编程简单、轻松应用 ● 开关量毫秒级响应速度适应多种场合 ● 内置网页功能,可以通过网页查询与控制 ● 同时也…

星际争霸之小霸王之小蜜蜂(十二)--猫有九条命

系列文章目录 星际争霸之小霸王之小蜜蜂(十一)--杀杀杀 星际争霸之小霸王之小蜜蜂(十)--鼠道 星际争霸之小霸王之小蜜蜂(九)--狂鼠之灾 星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大…

练习接口测试详细步骤

最近一段时间学了Python语言,重新学了 Java,js,html语言,CSS,linux,一堆测试工具;唉~ 在接触接口测试过程中补了很多课, 终于有点领悟接口测试的根本; 偶是…

Beats:安装及配置 Metricbeat (二)- 8.x

这篇文章是继文章 “Beats:安装及配置 Metricbeat (一)- 8.x” 的续篇。你可以先阅读之前的那篇文章再继续阅读这篇文章。我们在这篇文章中继续之前的探讨。 使用 fingerprint 来代替证书 在实际的使用中,我们需要从 Elasticsear…

SB树,看这一篇就够了

算法拾遗三十九SB树及跳表 SB树SB树四种违规类型总结 SB树Code 跳表 SB树 SB树是基于搜索二叉树来的,也有左旋和右旋的操作,只是不同于AVL树,它也有它自己的一套平衡性方法。 任何以叔叔节点为头的子树的节点个数不小于自己任何一个侄子树的…

如何自己开发一个前端监控SDK

最近在负责团队前端监控系统搭建的任务。因为我们公司有统一的日志存储平台、日志清洗平台和基于 Grafana 搭建的可视化看板,就剩日志的采集和上报需要自己实现了,所以决定封装一个前端监控 SDK 来完成日志的采集和上报。 架构设计 因为想着以后有机会…

【软考】系统集成项目管理工程师(三)信息系统集成专业技术知识③

一、云计算 1、定义 通过互联网来提供大型计算能力和动态易扩展的虚拟化资源;云是网络、互联网的一种比喻说法。是一种大集中的服务模式。 2、特点 (1)超大规模(2)虚拟化(3)高可扩展性&…

UG\NX二次开发 计算一个向量的反向向量UF_VEC3_negate

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 计算一个向量的反向向量UF_VEC3_negate 效果: 代码: #include "me.hpp"void ufusr(char* param, int* retcode, int paramLen) {UF…

什么是Docker和Docker-Compose?

Docker的构成 Docker仓库:https://hub.docker.com Docker自身组件 Docker Client:Docker的客户端 Docker Server:Docker daemon的主要组成部分,接受用户通过Docker Client发出的请求,并按照相应的路由规则实现路由分发…

服务器基准测试实践:SysBench的搭建与基本使用

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,AWS/阿里云资深使用…

VS编译.cu文件源文件无法打开matrix.h和mex.h问题

配置好cu和VS相关库文件后CUDA程序仍然报错:无法打开matrix.h和mex.h,解决办法: (1)这两个头文件是matlab中的,可能无法直接在VS中调用,可以通过添加外部依赖项的方法将matlab中的头文件的文件路…

【数据结构与算法系列4】长度最小的子数组 (C++ Python)

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&…

物理层-数据链路层-网络层-传输层-会话层-表示层-应用层

Go网络编程 网络协议 从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定: 第一次,传输文件名,接收方接收到文件名,应答OK给传输方&…

JVM基础面试题

JDK、JRE、JVM的关系 JVM Java虚拟机,它只识别.class类型文件,它能将class文件中的字节码指令进行识别并调用操作系统向上的API完成动作。 JRE Java运行时环境。它主要包含两部分:Jvm的标准实现和Java的一些基本类库。相对于JVM来说,JRE多出来…

电阻和电容

目录 1、常见的电阻器 2、电容 ​编辑 1、常见的电阻器 对于电阻需要了解三个参数(查询电阻的数据手册): 1、封装:就是电阻的尺寸或者大小,看焊在你的pcb板上是否合适。 2、标称:电阻的电阻大小、精度、…

Unity入门教程||创建项目(上)

一、介绍 目的:通过尝试制作一款使用玩家角色把小球弹飞的简单小游戏,熟悉使用Unity进行游戏开发的基本流程。 软件环境:Unity 2017.3.0f3,Visual Studio 2013 二、创建新项目 1,启动Unity后将出现一个并列显示Pro…

动静态库生成使用

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️林 子       🛰️博客专栏:✈️ Linux       🛰️社区 :✈️ 进步学堂       &#x1f6f0…

Purple Pi OH(Debian/Ubuntu)使用python控制gpio

本文分享的是Purple Pi OH开源主板搭载Debian/Ubuntu系统如何使用python控制gpio。 Purple Pi OH作为一款兼容树莓派的开源主板,采用瑞芯微RK3566 (Cortex-A55) 四核64位超强CPU,主频最高达1.8 GHz,算力高达1Tops,支持INT8/INT16,支持Tensor…

leetcode 129. 求根节点到叶节点数字之和

2023.9.8 好久没写回溯题了,有点陌生ToT。 本题思路就是通过回溯保存所有根节点到叶子节点的路径,然后将这些路径转化为数字并全部相加。 直接看代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tre…