🚀 INSAIT-Institute/BgGPT-Gemma-2-27B-IT-v1.0
INSAIT推出了BgGPT-Gemma-2-27B-IT-v1.0,这是一款基于google/gemma-2-27b和google/gemma-2-27b-it的先进保加利亚语模型。该模型可免费使用,并遵循Gemma使用条款进行分发。此模型由保加利亚索非亚的索非亚大学圣克莱门特奥赫里德斯基分校的INSAIT
创建。

✨ 主要特性
- 基于Google的Gemma 2 27B开放模型构建。
- 通过Branch-and-Merge策略在约1000亿个标记(其中850亿为保加利亚语标记)上进行持续预训练,在保留英语性能的同时,获得了出色的保加利亚文化和语言能力。
- 在新构建的保加利亚语指令数据集上进行指令微调,该数据集基于真实世界的对话创建。
📦 安装指南
首先安装最新版本的transformers库:
pip install -U 'transformers[torch]'
💻 使用示例
基础用法
在transformers中加载模型:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"INSAIT-Institute/BgGPT-Gemma-2-27B-IT-v1.0",
torch_dtype=torch.bfloat16,
attn_implementation="eager",
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
)
原则上,提高温度也应该能取得足够好的效果。
指令格式
为了利用指令微调,你的提示应以序列开始标记 <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/BgGPT-Gemma-2-27B-IT-v1.0",
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
使用vLLM的示例用法:
from vllm import LLM, SamplingParams
from vllm.inputs import TokensPrompt
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(
"INSAIT-Institute/BgGPT-Gemma-2-27B-IT-v1.0",
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/BgGPT-Gemma-2-27B-IT-v1.0",
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/BgGPT-Gemma-2-27B-IT-v1.0-GGUF获取。
📚 详细文档
模型描述
该模型基于Google的Gemma 2 27B开放模型构建。它使用INSAIT在EMNLP’24上提出的Branch-and-Merge策略,在约1000亿个标记(其中850亿为保加利亚语标记)上进行持续预训练,使模型在保留英语性能的同时,获得了出色的保加利亚文化和语言能力。在预训练阶段,我们使用了各种数据集,包括保加利亚网络爬取数据、免费可用的数据集(如维基百科)、INSAIT研究所获取的一系列专业保加利亚语数据集,以及流行英语数据集的机器翻译。然后,该模型在一个新构建的保加利亚语指令数据集上进行指令微调,该数据集基于真实世界的对话创建。更多信息请查看我们的博客文章。
基准测试和结果

我们在一组标准英语基准测试、它们的保加利亚语翻译版本以及我们收集的保加利亚特定基准测试上对模型进行了评估:
- Winogrande挑战:测试世界知识和理解能力。
- Hellaswag:测试句子完成能力。
- ARC Easy/Challenge:测试逻辑推理能力。
- TriviaQA:测试常识知识。
- GSM-8k:解决高中数学选择题。
- Exams:解决自然科学和社会科学的高中问题。
- MON:包含4至12年级各学科的考试。
这些基准测试用于测试模型的逻辑推理、数学、知识、语言理解等技能,相关测试可在https://github.com/insait-institute/lm-evaluation-harness-bg 获取。上图显示了BgGPT 9B和BgGPT 27B与其他大型开放模型的性能对比。结果表明,9B和27B模型在保加利亚语方面都具有出色的能力,能够超越更大的模型,包括阿里巴巴的Qwen 2.5 72B和Meta的Llama3.1 70B。此外,BgGPT 9B和BgGPT 27B都显著优于基于Mistral-7B的上一版本BgGPT(BgGPT-7B-Instruct-v0.2,图中以灰色显示)。最后,我们的模型保留了从原始Google Gemma 2模型继承的出色英语性能。
聊天偏好

除了基准评估外,我们还在约100个不同主题的数千个真实世界保加利亚语对话中对BgGPT 27B模型的聊天性能进行了评估。结果表明,我们的模型在保加利亚语聊天性能方面显著超越了商业模型的较小变体,如Anthropic的Claude Haiku和OpenAI的GPT-4o-mini,并且根据GPT-4o本身的评估,与最佳商业模型(如Anthropic的Claude Sonnet和OpenAI的GPT-4o)相当。
🔧 技术细节
重要提示
⚠️ 重要提示
基于Gemma 2的模型(如BgGPT-Gemma-2-27B-IT-v1.0)不支持闪存注意力。使用它会导致性能下降。
📄 许可证
BgGPT根据Gemma使用条款进行分发。
🤝 社区反馈
我们欢迎社区提供反馈,以帮助改进BgGPT。如果您有建议、遇到任何问题或有改进的想法,请通过以下方式与我们联系:
- 通过Hugging Face的社区讨论功能分享您使用模型的经验。
- 发送邮件至bggpt@insait.ai与我们联系。
您的实际使用经验和见解对于我们优化模型在各种用例中的性能和行为非常有价值。
📋 总结