gemma-2-baku-2b-it项目介绍
gemma-2-baku-2b-it项目是一个基于指令调优的语言模型变体,由rinna/gemma-2-baku-2b演变而来。该模型利用了聊天向量(Chat Vector)和赔率比偏好优化(ORPO)进行微调,以适应gemma-2的聊天格式。
模型概况
模型架构
gemma-2-baku-2b-it是一种以Transformer为基础的语言模型,拥有26层和2304个隐藏单元。其详细的架构信息可以在Gemma 2模型卡上找到。
训练过程
在模型的训练过程中,通过一种称为“模型合并”的方法将基础模型赋予遵循指令的能力。这个过程通过参数向量间的相减实现,这包括从google/gemma-2-2b-it中减去google/gemma-2-2b的参数向量,并与rinna/gemma-2-baku-2b叠加。过程中,嵌入层在参数向量的减法和加法中被排除在外。
为了进一步优化合并模型的性能,应用了ORPO方法,部分使用了rinna的内部数据集。
贡献者
该项目的主要贡献者包括:
性能评估
有关该模型的性能评估信息,请参考rinna的LM基准测试页面。
如何使用该模型
以下是如何在Python中使用transformers库加载和使用该模型的示例代码:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "rinna/gemma-2-baku-2b-it"
dtype = torch.bfloat16
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
torch_dtype=dtype,
attn_implementation="eager",
)
chat = [
{ "role": "user", "content": "西田幾多郎とはどんな人物ですか?" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
input_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
outputs = model.generate(
input_ids,
max_new_tokens=512,
)
response = tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True)
print(response)
模型推荐在bfloat16精度下进行批量推理时使用eager attention。目前,当输入序列中包含填充且使用默认注意力机制时,Gemma 2可能会产生NaN值。
分词器
该模型使用的是google/gemma-2-2b-it的原始分词器。
引用方式
如需引用该模型或者相关研究,请参考以下文献格式:
@misc{rinna-gemma-2-baku-2b-it,
title = {rinna/gemma-2-baku-2b-it},
author = {Chen, Xinqi and Wakatsuki, Toshiaki and Sawada, Kei},
url = {https://huggingface.co/rinna/gemma-2-baku-2b-it}
}
许可证
该项目遵循Gemma使用条款。