baichuan2对话模板

本文介绍了如何在大模型的训练和推理过程中,利用Baichuan2对话模板进行编码和解码,特别是如何通过tokenizer将用户和助手的标识转换为特定的预留标记(<reserved_106>和<reserved_107>),以便进行有效的交互。
摘要由CSDN通过智能技术生成

在大模型的训练和推理的过程中有个对话template,需要训练的时候保持对齐,baichuan2的对话template具体实现参考baichuan2 对话模板定义,里面的model.generation_config.user_token_id通过baichuan2的tokenizer encode之后解码后为<reserved_106>, model.generation_config.assistant_token_id通过baichuan2的tokenizer encode之后解码后为<reserved_107>
通过代码

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
from colorama import Fore, Style
model_dir='./Baichuan2-13B-Chat/'   # 本地路径
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    revision="v2.0",
    torch_dtype=torch.float16,
    device_map="auto",
    trust_remote_code=True,
    load_in_8bit=True,
)
model.generation_config = GenerationConfig.from_pretrained(   # 等价于config = AutoConfig.from_pretrained(model_dir)放到上面
    model_dir,
    revision="v2.0",
)

tokenizer = AutoTokenizer.from_pretrained(
    model_dir,
    revision="v2.0",
    use_fast=False,
    trust_remote_code=True
)
messages = []
while True:
    prompt = input(Fore.GREEN + Style.BRIGHT + "\n用户:" + Style.NORMAL)
    messages.append({"role": "user", "content": prompt})  # 历史叠加
    response = model.chat(tokenizer, messages)
    print(response)
    if torch.backends.mps.is_available():
         torch.mps.empty_cache()
    messages.append({"role": "assistant", "content": response})

通过debug单步调试,分析baichuan2 message转input tokens
这样给定一段对话:

[{'role': 'user', 'content': '你好呀'}, 
{'role': 'assistant', 'content': '你好!很高兴见到你。请问有什么我可以帮助你的吗?'}, 
{'role': 'user', 'content': '你能干嘛'}, 
{'role': 'assistant', 'content': '作为一个大语言模型,我可以通过自然语言交互的方式为你提供以下服务'}, 
{'role': 'user', 'content': '回答宝马和大众的区别吗'}]

通过对话模板就变成这个样子:

<reserved_106>你好呀
<reserved_107>你好!很高兴见到你。请问有什么我可以帮助你的吗?
<reserved_106>你能干嘛
<reserved_107>作为一个大语言模型,我可以通过自然语言交互的方式为你提供以下服务:
<reserved_106>回答宝马和大众的区别吗<reserved_107>

相当于用<reserved_106>区别user,用<reserved_107>区分assistant

参考文章:
https://zhuanlan.zhihu.com/p/655565397
https://blog.csdn.net/muyao987/article/details/133345573

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值