OpenLMLab / ChatZoo

Light local website for displaying performances from different chat models.
Apache License 2.0
85 stars 7 forks source link

ChatZoo

ChatZoo

ChatZoo,一款轻量级的大模型评测工具。

Github Repo Stars [GitHub]() HuggingFace badge GitHub commit activity (branch) GitHub issues

[ 简体中文 ] | [ English ]

新闻

目录

ChatZoo是什么?

ChatZoo是一款轻量级大模型评测工具。作为一名大模型行业的爱好者或从业者,您可以利用ChatZoo来调试和评测各种大模型的表现。它为您提供了一个交互式的环境,让您能够与多个模型同时对话,并评估它们的响应质量、语义准确性和流畅度。

Image

特性

安装

在安装前,您需要确保:

您可以直接通过git clone来获取整个工程文件:

git clone https://github.com/OpenLMLab/ChatZoo.git

下载完成后,您只需要在根目录下运行

pip install -r requirements.txt

来安装所有需要的依赖。

使用

pipeline

当您成功安装ChatZoo后,只需要在根目录下运行python main.py --config config.py即可拉起整个服务。

config.py中,您可以自行修改以设定你需要的配置,下面提供一个基础的样例:

# 模型列表:界面打开时出现的模型。(最多4个模型)
model_list = [
    {
        # 模型名称(参考HuggingFace中的名称,必需)
        "model_name_or_path": "THUDM/chatglm2-6b-32k",
        # 模型昵称(给模型的自定义名称,必需且不重复)
        "nickname": "chatglm2-6b-32k",
        # Tokenizer路径(参考HuggingFace中的名称,必需)
        "tokenizer_path": "THUDM/chatglm2-6b-32k",
        # 生成参数(若使用ChatZoo内设模型可不指定并使用默认配置,否则会报错)
        "generate_kwargs": {
            "max_length": 2048
        },
        # GPU
        "devices": "3",
        # 数据类型
        "dtype": "float16",
        # 基础模型(仅在LoRA的情况下可以使用)
        "base_model": None,
        # Prompt(若使用ChatZoo内设模型可不指定并使用默认配置,否则会报错)
        "prompts": {
             "meta_prompt": "",
             "user_prompt": "问: {}\n",
             "bot_prompt": "答: {}\n"
         }
    }
]
# 用户列表
user_list = [
    {
        # 用户名(必需),用于登录ChatZoo
        "username": "admin",
        # 角色(必需),可选annotate(标注者)或者debug(开发者)
        # 开发者权限:模型管理、会话标注、单轮标注
        # 标注者权限:会话标注、单轮标注
        "role": "annotate",
        # 最大会话标注数量
        "session_mark_num": 100, 
        # 最大单轮标注会话数量
        "single_mark_num": 100
     },
]
# 主机名(可选),默认为localhost
host_name = "10.140.0.216"
# 端口(可选),若不指定将自动寻找空闲端口
port = 8080
# 模式(必需),可选debug(调试模式)|arena(竞技场模式)
# 调试模式下,标注者不可进行标注
mode = "debug"
# 是否流式生成(必需)
is_stream = True
# 数据库类型(必需)
database_dtype = "sqlite"
# 数据库地址(必需)
database_path = "./data.db"

支持的模型

ChatZoo提供三种导入模型的方式:本地模型、外部网页接入和预设模型。

本地模型

ChatZoo通过ChatBot类提供了一些模型的实现,您可以直接使用:

添加自己的模型

您也可以添加自己的对话模型,以下提供两种方式:

👉优先推荐(HuggingFace模型) 对于HuggingFace中的模型🤗,您可以通过修改config.py中的部分字段来导入您需要的模型,比如您想添加llama模型,则可以将config.pymodel_list字段修改如下:

model_list = [
    {
        # 模型名称(参考HuggingFace中的名称,必需)
        "model_name_or_path": "decapoda-research/llama-7b-hf",
        # 模型昵称(给模型的自定义名称,必需且不重复)
        "nickname": "llama",
        # Tokenizer路径(参考HuggingFace中的名称,必需)
        "tokenizer_path": "decapoda-research/llama-7b-hf",
        # 生成参数(必须指定)
        "generate_kwargs": {
            "max_length": 2048
        },
        # GPU
        "devices": "3",
        # 数据类型
        "dtype": "float16",
        # 基础模型(仅在LoRA的情况下可以使用)
        "base_model": None,
        # Prompt(必须指定)
        "prompts": {
             "meta_prompt": "",
             "user_prompt": "问: {}\n",
             "bot_prompt": "答: {}\n"
         }
    }
]

👉另一种方式(非HuggingFace模型的情况)

1. 继承 ChatBOT 类

您可以通过在 generator/ 路径下新建一个文件,继承 ChatBOT 来展示您自己的对话模型。而如果您的模型是基于 🤗huggingface 中的模型实现的,那么您可以继承 TransformersChatBOT 类。您需要实现以下函数或属性:

[
    {"role":"HUMAN", "content":"你好!你是谁?"},
    {"role":"BOT", "content": "你好!我是机器人!"},
    {"role":"HUMAN", "content": "今天天气不错!"}
]
2. 构建映射关系(可选)

当您定义了您自己的 ChatBOT 后,您就可以通过参数 --type --pretrained_path--tokenizer_path(可选)来使用您自己的聊天机器人了。其中 --type 的值应为您自己的 ChatBOT 所在的文件名,启动时 ChatZoo 会自动根据文件名匹配并导入合适的类。

如果您想一劳永逸,那么您还可以在 config.py 中将您的预训练路径与 ChatBOT 文件名的对应关系添加到 MODEL_NAME_TO_MODEL_DICT 字典中。这样您在启动后端时就不必使用 --type 参数了。

外部网页接入

敬请期待...

预设模型

敬请期待...

模式介绍

针对不同的应用场景,ChatZoo提供两种模式:调试模式竞技场模式。您可以在config.py中修改mode来切换不同的模式。

调试模式

config.py中,

mode = "debug"

调试模式适用于模型的开发者,你可以在模型管理界面修改模型配置、增删模型。

修改模型配置

您可以点击某个模型上方的配置按钮,从而打开修改配置弹窗。 在修改完配置后,点击保存即可成功修改。

新增模型

点击右下角的+,即可在界面中加入新的模型(注意ChatZoo要求最多界面中同时出现4个模型)。ChatZoo提供三种模型导入的方式:

删除模型

点击某个模型右上角的×,即可将该模型从界面中移除。

竞技场模式

config.py中,

mode = "arena"

竞技场模式适合标注者,在这个模式下,您无法对模型进行修改,只能与模型进行会话并标注。与模型的会话也分为两种模式:会话标注单回复标注

结果分析

当您完成标注后,可以通过命令

python tools/elo_score.py --config config.py

生成统计数据与结果分析。 Result

引用我们

@misc{2023chatzoo,
    title={ChatZoo: Chat with Models to Debug, Evaluate, and Annotate.},
    author={OpenLMLab},
    howpublished = {\url{https://github.com/OpenLMLab/ChatZoo}},
    year={2023}
}