CoolFace
Modelpublic

AlpachinoNLP/Baichuan-13B-Instruction

sourceHugging Faceupdated 3y agoView on Hugging Face
6likes23downloads
Model Card

Baichuan-13B-Instruction

[image]

<!-- Provide a quick summary of what the model is/does. -->

介绍

Baichuan-13B-Instruction 为 Baichuan-13B 系列模型进行指令微调后的版本,预训练模型可见 Baichuan-13B-Base。

Demo

如下是一个使用 gradio 的模型 demo

python
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("AlpachinoNLP/Baichuan-13B-Instruction",trust_remote_code=True,use_fast=False)
model = AutoModelForCausalLM.from_pretrained("AlpachinoNLP/Baichuan-13B-Instruction",trust_remote_code=True ).half()
model.cuda()

def generate(histories,  max_new_tokens=2048, do_sample = True, top_p = 0.95, temperature = 0.35, repetition_penalty=1.1):
    prompt = ""
    for history in histories:
        history_with_identity = "\nHuman:" + history[0] + "\n\nAssistant:" + history[1]
        prompt += history_with_identity
    input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(model.device)
    outputs = model.generate(
                    input_ids = input_ids,
                    max_new_tokens=max_new_tokens,
                    early_stopping=True,
                    do_sample=do_sample,
                    top_p=top_p, 
                    temperature=temperature,
                    repetition_penalty=repetition_penalty,
        )
    rets = tokenizer.batch_decode(outputs, skip_special_tokens=True)
    generate_text = rets[0].replace(prompt, "")
    return generate_text
    
with gr.Blocks() as demo:
    chatbot = gr.Chatbot()
    msg = gr.Textbox()
    clear = gr.Button("clear")

    def user(user_message, history):
        return "", history + [[user_message, ""]]

    def bot(history):
        print(history)
        bot_message = generate(history)
        history[-1][1] = bot_message
        return history

    msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
        bot, chatbot, chatbot
    )
    clear.click(lambda: None, None, chatbot, queue=False)

if __name__ == "__main__":
    demo.launch(server_name="0.0.0.0")


量化部署

Baichuan-13B 支持 int8 和 int4 量化,用户只需在推理代码中简单修改两行即可实现。请注意,如果是为了节省显存而进行量化,应加载原始精度模型到 CPU 后再开始量化;避免在 from_pretrained 时添加 device_map='auto' 或者其它会导致把原始精度模型直接加载到 GPU 的行为的参数。

使用 int8 量化 (To use int8 quantization):

python
model = AutoModelForCausalLM.from_pretrained("AlpachinoNLP/Baichuan-13B-Instruction", torch_dtype=torch.float16, trust_remote_code=True)
model = model.quantize(8).cuda() 

同样的,如需使用 int4 量化 (Similarly, to use int4 quantization):

python
model = AutoModelForCausalLM.from_pretrained("AlpachinoNLP/Baichuan-13B-Instruction", torch_dtype=torch.float16, trust_remote_code=True)
model = model.quantize(4).cuda()

模型详情

模型结构

<!-- Provide the basic links for the model. -->

整体模型基于Baichuan-13B,为了获得更好的推理性能,Baichuan-13B 使用了 ALiBi 线性偏置技术,相对于 Rotary Embedding 计算量更小,对推理性能有显著提升;与标准的 LLaMA-13B 相比,生成 2000 个 tokens 的平均推理速度 (tokens/s),实测提升 31.6%:

Modeltokens/s
LLaMA-13B19.4
Baichuan-13B25.4

具体参数和见下表 | 模型名称 | 隐含层维度 | 层数 | 头数 | 词表大小 | 总参数量 | 训练数据(tokens) | 位置编码 | 最大长度 | | ------------ | ---------- | ---- | ---- | -------- | -------------- | ------------------ | ----------------------------------------- | -------- | | Baichuan-7B | 4,096 | 32 | 32 | 64,000 | 7,000,559,616 | 1.2万亿 | RoPE | 4,096 | | Baichuan-13B | 5,120 | 40 | 40 | 64,000 | 13,264,901,120 | 1.4万亿 | ALiBi | 4,096 |

训练详情

数据集主要由三部分组成:

  • —在 sharegpt_zh 数据集中筛选的出 13k 高质量数据。
  • —lima
  • —按照任务类型挑选的 2.3k 高质量中文数据集,每个任务类型的数据量在 100 条左右。

硬件:8*A40

测评结果

CMMLU

Model 5-shotSTEMHumanitiesSocial SciencesOthersChina SpecificAverage
Baichuan-7B34.447.547.646.644.344.0
Vicuna-13B31.836.237.639.534.336.3
Chinese-Alpaca-Plus-13B29.833.433.237.932.133.4
Chinese-LLaMA-Plus-13B28.133.135.435.133.533.0
Ziya-LLaMA-13B-Pretrain29.030.733.834.431.932.1
LLaMA-13B29.230.831.633.030.531.2
moss-moon-003-base (16B)27.230.428.832.628.729.6
Baichuan-13B-Base41.761.159.859.056.455.3
Baichuan-13B-Chat42.862.659.759.056.155.8
Baichuan-13B-Instruction44.5061.1659.0758.3455.5555.61
Model zero-shotSTEMHumanitiesSocial SciencesOthersChina SpecificAverage
ChatGLM2-6B41.2852.8553.3752.2450.5849.95
Baichuan-7B32.7944.4346.7844.7943.1142.33
ChatGLM-6B32.2242.9144.8142.6041.9340.79
BatGPT-15B33.7236.5338.0746.9438.3238.51
Chinese-LLaMA-13B26.7626.5727.4228.3326.7327.34
MOSS-SFT-16B25.6826.3527.2127.9226.7026.88
Chinese-GLM-10B25.5725.0126.3325.9425.8125.80
Baichuan-13B42.0460.4959.5556.6055.7254.63
Baichuan-13B-Chat37.3256.2454.7954.0752.2350.48
Baichuan-13B-Instruction42.5662.0960.4158.9756.9555.88
说明:CMMLU 是一个综合性的中文评估基准,专门用于评估语言模型在中文语境下的知识和推理能力。我们直接使用其官方的评测脚本对模型进行评测。Model zero-shot 表格中 Baichuan-13B-Chat 的得分来自我们直接运行 CMMLU 官方的评测脚本得到,其他模型的的得分来自于 CMMLU 官方的评测结果,Model 5-shot 中其他模型的得分来自于Baichuan-13B 官方的评测结果。