库名称: transformers
标签:
- gemma2
- instruct
- mamaylm
- insait
许可证: gemma
语言:
- 乌克兰语
- 英语
基础模型:
- google/gemma-2-9b-it
- google/gemma-2-9b
管道标签: 文本生成
INSAIT研究所/MamayLM-Gemma-2-9B-IT-v0.1

INSAIT推出MamayLM-Gemma-2-9B-IT-v0.1,这是基于google/gemma-2-9b和google/gemma-2-9b-it的性能最优乌克兰语模型。
MamayLM-Gemma-2-9B-IT-v0.1可免费使用,并遵循Gemma使用条款分发。
该模型由保加利亚索菲亚大学圣克莱门特奥赫里德斯基分校的INSAIT
团队开发。
模型描述
该模型基于谷歌Gemma 2 9B开源模型构建。
通过数据混合与模型融合技术,在大量预过滤数据集(总计750亿乌克兰语和英语词元)上持续预训练,使模型在保留英语能力的同时,具备卓越的乌克兰文化及语言理解能力。
预训练阶段使用了多样化数据集,包括乌克兰网络爬取数据(FineWeb2)、维基百科等公开数据集、专业乌克兰语数据集,以及热门英语数据集的机器翻译版本。
随后,模型在新构建的乌克兰语指令数据集上进行微调,该数据集通过机器翻译当前最佳英语数据集及乌克兰社区提供的专业本土数据集生成。
更多技术细节请参阅我们的博客文章(英文版、乌克兰语版)。
基准测试与结果


我们在标准英语基准、其乌克兰语翻译版本及自建乌克兰特色基准上评估模型表现:
- Winogrande挑战:测试世界知识与理解
- Hellaswag:测试句子补全能力
- ARC简易/挑战:测试逻辑推理
- TriviaQA:测试常识知识
- GSM-8k:解决高中数学选择题
- MMLU:测试多领域知识
- IFEval:测试指令遵循能力
- ZNO:测试乌克兰高中课程(语言文学/历史/数学/地理)掌握程度
完整测试框架详见https://github.com/insait-institute/lm-evaluation-harness-uk。
图示表明,MamayLM 9B在乌克兰语任务中显著超越更大规模模型,包括阿里巴巴Qwen 2.5 72B和Meta Llama3.1 70B。
同时,模型完美继承了Gemma 2原版的顶尖英语能力。

🤗 Transformers调用指南
首先安装最新版transformers库:
pip install -U 'transformers[torch]'
加载模型:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"INSAIT-Institute/MamayLM-Gemma-2-9B-IT-v0.1",
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
device_map="auto",
)
推荐生成参数
经充分测试的优化生成配置:
from transformers import GenerationConfig
generation_params = GenerationConfig(
max_new_tokens=2048,
temperature=0.1,
top_k=25,
top_p=1,
repetition_penalty=1.1,
eos_token_id=[1,107],
do_sample=True
)
适当提高temperature参数亦可获得良好效果。
指令格式规范
为充分发挥指令微调优势,提示应以<bos>
开头并遵循Gemma 2对话模板。<bos>
应仅作为对话序列的首个词元。
示例:
<bos><start_of_turn>user
Хто такий Козак Мамай?<end_of_turn>
<start_of_turn>model
也可通过apply_chat_template()
方法实现模板化:
tokenizer = AutoTokenizer.from_pretrained(
"INSAIT-Institute/MamayLM-Gemma-2-9B-IT-v0.1",
use_default_system_prompt=False,
)
messages = [
{"role": "user", "content": "Хто такий Козак Мамай?"},
]
input_ids = tokenizer.apply_chat_template(
messages,
return_tensors="pt",
add_generation_prompt=True,
return_dict=True
)
outputs = model.generate(
**input_ids,
generation_config=generation_params
)
print(tokenizer.decode(outputs[0]))
vLLM调用示例
from vllm import LLM, SamplingParams
from vllm.inputs import TokensPrompt
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(
"INSAIT-Institute/MamayLM-Gemma-2-9B-IT-v0.1",
use_default_system_prompt=False,
)
sampling_params = SamplingParams(
max_tokens=2048,
temperature=0.1,
top_k=25,
top_p=1,
repetition_penalty=1.1,
stop_token_ids=[1, 107],
)
llm = LLM(
model="INSAIT-Institute/MamayLM-Gemma-2-9B-IT-v0.1",
dtype="bfloat16",
enforce_eager=True
)
messages = [
{"role": "user", "content": "Хто такий Козак Мамай?"},
]
formatted_prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
input_ids = tokenizer(
formatted_prompt,
add_special_tokens=False
).input_ids
prompt = TokensPrompt(prompt_token_ids=input_ids)
output = llm.generate(
prompt,
sampling_params
)
generated_text = output[0].outputs[0].text
print(generated_text)
GGML/llama.cpp支持
GGUF格式模型及使用指南详见INSAIT-Institute/MamayLM-Gemma-2-9B-IT-v0.1-GGUF。
社区反馈
欢迎通过以下方式提供改进建议:
您的实际使用反馈将助力我们持续优化模型表现。
关键信息