🚀 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與我們聯繫。
您的實際使用經驗和見解對於我們優化模型在各種用例中的性能和行為非常有價值。
📋 總結