🚀 Yugo55A-GPT 4bit
Yugo55A-GPT 是由 datatab 开发的一款 4bit 模型,在塞尔维亚语大语言模型评估中展现出了优秀的性能。它通过 mergekit 对多个预训练语言模型进行合并,为文本生成等任务提供了强大的支持。
✨ 主要特性
- 多模型融合:融合了多个优秀的预训练语言模型,如 datatab/Yugo55-GPT-v4、mlabonne/AlphaMonarch-7B 等,综合各模型的优势。
- 高性能表现:在塞尔维亚语大语言模型评估的多个指标上取得了优异的成绩。
- 易于使用:提供了详细的使用示例,方便用户快速上手。
📦 安装指南
!pip -q install git+https://github.com/huggingface/transformers # need to install from github
!pip install -q datasets loralib sentencepiece
!pip -q install bitsandbytes accelerate
💻 使用示例
基础用法
from IPython.display import HTML, display
def set_css():
display(HTML('''
<style>
pre {
white-space: pre-wrap;
}
</style>
'''))
get_ipython().events.register('pre_run_cell', set_css)
import torch
import transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"datatab/Yugo55A-GPT", torch_dtype="auto"
)
tokenizer = AutoTokenizer.from_pretrained(
"datatab/Yugo55A-GPT", torch_dtype="auto"
)
高级用法
from typing import Optional
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
def generate(
user_content: str, system_content: Optional[str] = ""
) -> str:
system_content = "Ispod je uputstvo koje opisuje zadatak, upareno sa unosom koji pruža dodatni kontekst. Napišite odgovor koji na odgovarajući način kompletira zahtev."
messages = [
{
"role": "system",
"content": system_content,
},
{"role": "user", "content": user_content},
]
tokenized_chat = tokenizer.apply_chat_template(
messages, tokenize=True, add_generation_prompt=True, return_tensors="pt"
).to("cuda")
text_streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
output = model.generate(
tokenized_chat,
streamer=text_streamer,
max_new_tokens=2048,
temperature=0.1,
repetition_penalty=1.11,
top_p=0.92,
top_k=1000,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
do_sample=True,
)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
以下是一些具体的调用示例:
generate("Nabroj mi sve planete suncevog sistemai reci mi koja je najveca planeta")
generate("Koja je razlika između lame, vikune i alpake?")
generate("Napišite kratku e-poruku Semu Altmanu dajući razloge za GPT-4 otvorenog koda")
🏆 评估结果
结果通过 Aleksa Gordić 发布的塞尔维亚语大语言模型评估获得:serbian-llm-eval。由于硬件资源限制,评估是在模型的 4 位版本上进行的。
MODEL |
ARC-E |
ARC-C |
Hellaswag |
BoolQ |
Winogrande |
OpenbookQA |
PiQA |
Yugo55-GPT-v4-4bit |
51.41 |
36.00 |
57.51 |
80.92 |
65.75 |
34.70 |
70.54 |
Yugo55A-GPT |
51.52 |
37.78 |
57.52 |
84.40 |
65.43 |
35.60 |
69.43 |
🔗 合并详情
合并方法
这是使用 mergekit 创建的预训练语言模型的合并。该模型使用 linear 合并方法进行合并。
合并的模型
以下模型被包含在合并中:
🧩 配置
以下 YAML 配置用于生成此模型:
models:
- model: datatab/Yugo55-GPT-v4
parameters:
weight: 1.0
- model: datatab/Yugo55-GPT-DPO-v1-chkp-300
parameters:
weight: 1.0
- model: mlabonne/AlphaMonarch-7B
parameters:
weight: 0.5
- model: NousResearch/Nous-Hermes-2-Mistral-7B-DPO
parameters:
weight: 0.5
merge_method: linear
dtype: float16
📄 许可证
本项目采用 MIT 许可证。