作为今年九月份开源的一个中午大语言模型,Baichuan2已经在各个维度上取得了亮眼的结果,效果已经超过了当前火热的ChatGLM2-6B,可以通过自然语言交互的方式为你提供以下服务:
目录
一、模型介绍
二、模型结果
通用领域
7B 模型结果
13B 模型结果
三、推理和部署
安装依赖
Python 代码方式
Chat 模型推理方法示范
Base 模型推理方法示范
命令行工具方式
网页 demo 方式
四、接入 LangChain-Chatchat
五、项目地址
本次发布版本和下载链接见下表:
基座模型 | 对齐模型 | 对齐模型 4bits 量化 | |
---|---|---|---|
7B | Baichuan2-7B-Base | Baichuan2-7B-Chat | Baichuan2-7B-Chat-4bits |
13B | Baichuan2-13B-Base | Baichuan2-13B-Chat | Baichuan2-13B-Chat-4bits |
我们在通用、法律、医疗、数学、代码和多语言翻译六个领域的中英文和多语言权威数据集上对模型进行了广泛测试。
在通用领域我们在以下数据集上进行了 5-shot 测试。
C-Eval | MMLU | CMMLU | Gaokao | AGIEval | BBH | |
---|---|---|---|---|---|---|
5-shot | 5-shot | 5-shot | 5-shot | 5-shot | 3-shot | |
GPT-4 | 68.40 | 83.93 | 70.33 | 66.15 | 63.27 | 75.12 |
GPT-3.5 Turbo | 51.10 | 68.54 | 54.06 | 47.07 | 46.13 | 61.59 |
LLaMA-7B | 27.10 | 35.10 | 26.75 | 27.81 | 28.17 | 32.38 |
LLaMA2-7B | 28.90 | 45.73 | 31.38 | 25.97 | 26.53 | 39.16 |
MPT-7B | 27.15 | 27.93 | 26.00 | 26.54 | 24.83 | 35.20 |
Falcon-7B | 24.23 | 26.03 | 25.66 | 24.24 | 24.10 | 28.77 |
ChatGLM2-6B | 50.20 | 45.90 | 49.00 | 49.44 | 45.28 | 31.65 |
Baichuan-7B | 42.80 | 42.30 | 44.02 | 36.34 | 34.44 | 32.48 |
Baichuan2-7B-Base | 54.00 | 54.16 | 57.07 | 47.47 | 42.73 | 41.56 |
C-Eval | MMLU | CMMLU | Gaokao | AGIEval | BBH | |
---|---|---|---|---|---|---|
5-shot | 5-shot | 5-shot | 5-shot | 5-shot | 3-shot | |
GPT-4 | 68.40 | 83.93 | 70.33 | 66.15 | 63.27 | 75.12 |
GPT-3.5 Turbo | 51.10 | 68.54 | 54.06 | 47.07 | 46.13 | 61.59 |
LLaMA-13B | 28.50 | 46.30 | 31.15 | 28.23 | 28.22 | 37.89 |
LLaMA2-13B | 35.80 | 55.09 | 37.99 | 30.83 | 32.29 | 46.98 |
Vicuna-13B | 32.80 | 52.00 | 36.28 | 30.11 | 31.55 | 43.04 |
Chinese-Alpaca-Plus-13B | 38.80 | 43.90 | 33.43 | 34.78 | 35.46 | 28.94 |
XVERSE-13B | 53.70 | 55.21 | 58.44 | 44.69 | 42.54 | 38.06 |
Baichuan-13B-Base | 52.40 | 51.60 | 55.30 | 49.69 | 43.20 | 43.01 |
Baichuan2-13B-Base | 58.10 | 59.17 | 61.97 | 54.33 | 48.17 | 48.78 |
推理所需的模型权重、源码、配置已发布在 Hugging Face,下载链接见本文档最开始的表格。我们在此示范多种推理方式。程序会自动从 Hugging Face 下载所需资源。
pip install -r requirements.txt
>>> import torch >>> from transformers import AutoModelForCausalLM, AutoTokenizer >>> from transformers.generation.utils import GenerationConfig >>> tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/Baichuan2-13B-Chat", use_fast=False, trust_remote_code=True) >>> model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan2-13B-Chat", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True) >>> model.generation_config = GenerationConfig.from_pretrained("baichuan-inc/Baichuan2-13B-Chat") >>> messages = [] >>> messages.append({"role": "user", "content": "解释一下“温故而知新”"}) >>> response = model.chat(tokenizer, messages) >>> print(response) "温故而知新"是一句中国古代的成语,出自《论语·为政》篇。这句话的意思是:通过回顾过去,我们可以发现新的知识和理解。换句话说,学习历史和经验可以让我们更好地理解现在和未来。 这句话鼓励我们在学习和生活中不断地回顾和反思过去的经验,从而获得新的启示和成长。通过重温旧的知识和经历,我们可以发现新的观点和理解,从而更好地应对不断变化的世界和挑战。
>>> from transformers import AutoModelForCausalLM, AutoTokenizer >>> tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/Baichuan2-13B-Base", trust_remote_code=True) >>> model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan2-13B-Base", device_map="auto", trust_remote_code=True) >>> inputs = tokenizer('登鹳雀楼->王之涣\n夜雨寄北->', return_tensors='pt') >>> inputs = inputs.to('cuda:0') >>> pred = model.generate(**inputs, max_new_tokens=64, repetition_penalty=1.1) >>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)) 登鹳雀楼->王之涣 夜雨寄北->李商隐
在上述两段代码中,模型加载指定
device_map='auto'
,会使用所有可用显卡。如需指定使用的设备,可以使用类似export CUDA_VISIBLE_DEVICES=0,1
(使用了0、1号显卡)的方式控制。
python cli_demo.py
本命令行工具是为 Chat 场景设计,因此我们不支持使用该工具调用 Base 模型。
依靠 streamlit 运行以下命令,会在本地启动一个 web 服务,把控制台给出的地址放入浏览器即可访问。本网页 demo 工具是为 Chat 场景设计,因此我们不支持使用该工具调用 Base 模型。
streamlit run web_demo.py
运行效果
注意事项:
Baichuan2部署使用的 Pytorch 版本是2.0
接入 LangChain-Chatchat (原 Langchain-ChatGLM): 基于 Langchain 与 ChatGLM 等大语言模型的本地知识库问答应用实现。只需在项目model_config.py 中修改 llm_model_dict 中代码,加入:
"Baichuan2": {
"local_model_path": "E:\\baichuan-incBaichuan2-13B-Chat", # "THUDM/chatglm2-6b-32k",
"api_base_url": "http://localhost:8888/v1", # "URL需要与运行fastchat服务端的server_config.FSCHAT_OPENAI_API一致
"api_key": "EMPTY"
},
并且修改:
# LLM 名称
LLM_MODEL = "Baichuan2"
实现效果如下:
Baichuan2:
GitHub - baichuan-inc/Baichuan2: A series of large language models developed by Baichuan Intelligent Technology
LangChain-Chatchat :
GitHub - chatchat-space/Langchain-Chatchat: Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain