项目介绍:Ko-Gemma-2-9B-IT
项目背景
Ko-Gemma-2-9B-IT是由Google推出的Gemma模型家族中的一员,专注于韩文的会话生成。这个大语言模型是一个仅解码(decoder-only)的文本到文本模型。它是通过精心挑选的高质量数据集使用监督微调(Supervised Fine-Tuning)技术进行微调的。此外,还采用了人类反馈的直接偏好优化(Direct Preference Optimization)训练技术。其训练数据集包含:
在翻译过程中,对这些数据集的一部分进行了使用和处理,取得了良好的效果。
模型功能
输入和输出
- 输入:文本字符串,如问题、提示或需要概括的文档。
- 输出:对输入文本进行回应,生成韩语文本,如问题的答案或文档的摘要。
设计理念
Google的Gemma模型家族集合了轻量化和先进的开源模型技术,这与用于创建Gemini模型的研究和技术相同。Gemma模型家族主要用于各类文本生成任务,包括问答、文本摘要以及推理等。其小巧的模型尺寸使得它可以在资源有限的环境中运行,如个人笔记本、台式机或云基础设施等,为人们提供了广泛的AI接入和创新的可能性。
性能评估
Ko-Gemma-2-9B-IT通过内部的LogicKor代码进行了评估。在公开评测中,LogicKor代码被认为是GPT-4,而内部评估则被称为GPT-4o。以下是0-shot评估的部分结果:
模型 | 数学 | 推理 | 写作 | 编码 | 理解 | 语法 | 单一任务总计 | 多任务总计 | 总体评分 |
---|---|---|---|---|---|---|---|---|---|
Ko-Gemma-2-9B-IT | 8.71 / 8.00 | 9.14 / 8.00 | 9.43 / 9.29 | 9.00 / 9.43 | 9.57 / 9.86 | 7.14 / 5.00 | 8.83 | 8.26 | 8.55 |
使用指南
安装依赖
为了使用gemma2模型,需要安装 transformers
包,版本应大于等于4.42.3:
pip install transformers==4.42.3 accelerate
使用Pipeline的Python示例代码
以下是一个使用Pipeline生成文本的简短示例:
import transformers
import torch
model_id = "rtzr/ko-gemma-2-9b-it"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
pipeline.model.eval()
instruction = "서울의 유명한 관광 코스를 만들어줄래?"
messages = [
{"role": "user", "content": f"{instruction}"}
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<end_of_turn>")
]
outputs = pipeline(
prompt,
max_new_tokens=2048,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
量化版本示例
利用bitsandbytes
进行精度降低:
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
model_id = "rtzr/ko-gemma-2-9b-it"
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
quantization_config=quantization_config,
low_cpu_mem_usage=True,
)
model.eval()
instruction = "서울의 유명한 관광 코스를 만들어줄래?"
messages = [
{"role": "user", "content": f"{instruction}"}
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<end_of_turn>")
]
outputs = model.generate(
input_ids,
max_new_tokens=2048,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True))
许可证
Gemma 2 使用许可:详见Gemma 许可协议