license: cc-by-nc-4.0
language:
- 波兰语
library_name: transformers
tags:
- 微调模型
inference:
parameters:
temperature: 0.6
widget:
- messages:
- role: user
content: 波兰国徽上有什么图案?
Bielik-7B-Instruct-v0.1
Bielik-7B-Instruct-v0.1是基于Bielik-7B-v0.1进行指令微调的版本。该模型是开源科研项目SpeakLeash与高性能计算中心ACK Cyfronet AGH独特合作的成果。模型在SpeakLeash团队精选处理的波兰语文本语料库上训练完成,并充分利用了波兰PLGrid环境中的大规模计算基础设施,特别是ACK Cyfronet AGH的HPC中心资源。模型训练得到了PLG/2024/016951号计算资助项目的支持,在Athena和Helios超级计算机上完成,这些尖端技术资源对大规模机器学习过程至关重要。最终模型展现出卓越的波兰语理解和处理能力,能精准完成各类语言任务。
我们还提供了量化版本及MLX格式的模型
🎥 演示: https://huggingface.co/spaces/speakleash/Bielik-7B-Instruct-v0.1
🗣️ 聊天竞技场*: https://arena.speakleash.org.pl/
*聊天竞技场是用于测试比较不同AI语言模型的平台,用户可评估其性能表现。
模型架构
SpeakLeash团队正在构建波兰语指令集,由标注人员持续扩展优化。训练使用了部分经过人工核验修正的指令。由于高质量波兰语指令数据有限,训练中还采用了公开英文指令集——OpenHermes-2.5和orca-math-word-problems-200k,占训练指令的半数。针对数据质量不均导致模型性能下降的问题,我们引入以下改进:
模型采用Krzysztof Ociepa开发的开源框架ALLaMo训练,该框架能高效训练类LLaMA和Mistral架构的语言模型。
模型规格:
- 开发团队: SpeakLeash
- 语言: 波兰语
- 模型类型: 因果解码器架构
- 基础模型: Bielik-7B-v0.1
- 许可协议: CC BY NC 4.0 (非商业用途)
- 模型标识: speakleash:e38140bea0d48f1218540800bbc67e89
训练过程
训练超参数:
超参数 |
数值 |
上下文长度 |
4096 |
微批次大小 |
1 |
批次大小 |
最高4194304 |
学习率(余弦自适应) |
7e-6 -> 6e-7 |
预热迭代次数 |
50 |
总迭代次数 |
55440 |
优化器 |
AdamW |
β1, β2 |
0.9, 0.95 |
Adam_eps |
1e−8 |
权重衰减 |
0.05 |
梯度裁剪 |
1.0 |
精度 |
bfloat16(混合) |
量化与MLX版本:
为满足不同硬件需求,我们提供了多种量化版本:
量化版本(适用于非GPU/低配GPU):
- https://huggingface.co/speakleash/Bielik-7B-Instruct-v0.1-GGUF
- https://huggingface.co/speakleash/Bielik-7B-Instruct-v0.1-GPTQ
- https://huggingface.co/speakleash/Bielik-7B-Instruct-v0.1-AWQ
- https://huggingface.co/speakleash/Bielik-7B-Instruct-v0.1-EXL2
- https://huggingface.co/speakleash/Bielik-7B-Instruct-v0.1-3bit-HQQ
Apple Silicon专用:
- https://huggingface.co/speakleash/Bielik-7B-Instruct-v0.1-MLX
指令格式
使用指令微调功能时,提示词需用[INST]
和[/INST]
标记包裹。首条指令应以句首标记开头,生成内容将以句尾标记结束。
示例:
prompt = "<s>[INST] 波兰有哪些季节? [/INST]"
completion = "波兰有四个季节:春季、夏季、秋季和冬季。</s>"
可通过apply_chat_template()
方法应用聊天模板:
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model_name = "speakleash/Bielik-7B-Instruct-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)
messages = [
{"role": "system", "content": "请用波兰语简洁准确地回答。"},
{"role": "user", "content": "波兰有哪些季节?"},
{"role": "assistant", "content": "波兰有四个季节:春季、夏季、秋季和冬季。"},
{"role": "user", "content": "哪个季节最温暖?"}
]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt")
model_inputs = input_ids.to(device)
model.to(device)
generated_ids = model.generate(model_inputs, max_new_tokens=1000, do_sample=True)
decoded = tokenizer.batch_decode(generated_ids)
print(decoded[0])
若无法使用tokenizer.apply_chat_template
,可用以下代码生成正确提示:
def chat_template(message, history, system_prompt):
prompt_builder = ["<s>[INST] "]
if system_prompt:
prompt_builder.append(f"<<SYS>>\n{system_prompt}\n<</SYS>>\n\n")
for human, assistant in history:
prompt_builder.append(f"{human} [/INST] {assistant}</s>[INST] ")
prompt_builder.append(f"{message} [/INST]")
return ''.join(prompt_builder)
system_prompt = "请用波兰语简洁准确地回答。"
history = [
("波兰有哪些季节?", "波兰有四个季节:春季、夏季、秋季和冬季。")
]
message = "哪个季节最温暖?"
prompt = chat_template(message, history, system_prompt)
性能评估
模型在Open PL LLM Leaderboard采用5-shot设置评估。该基准测试评估模型在情感分析、分类等NLP任务中的表现,但不测试对话能力。主要指标包括:
- 平均分 - 所有任务得分的基线标准化平均值
- 重排序 - RAG常用重排序任务
- 阅读器(生成器) - RAG常用开卷问答任务
- 困惑度(越低越好) - 补充指标,与其他分数无相关性
截至2024年4月3日,预训练及持续预训练模型在Open PL LLM Leaderboard的5-shot评估结果如下:
|
平均分 |
RAG重排序 |
RAG阅读器 |
困惑度 |
7B参数模型: |
|
|
|
|
基线(多数类) |
0.00 |
53.36 |
- |
- |
Voicelab/trurl-2-7b |
18.85 |
60.67 |
77.19 |
1098.88 |
meta-llama/Llama-2-7b-chat-hf |
21.04 |
54.65 |
72.93 |
4018.74 |
mistralai/Mistral-7B-Instruct-v0.1 |
26.42 |
56.35 |
73.68 |
6909.94 |
szymonrucinski/Curie-7B-v1 |
26.72 |
55.58 |
85.19 |
389.17 |
HuggingFaceH4/zephyr-7b-beta |
33.15 |
71.65 |
71.27 |
3613.14 |
HuggingFaceH4/zephyr-7b-alpha |
33.97 |
71.47 |
73.35 |
4464.45 |
internlm/internlm2-chat-7b-sft |
36.97 |
73.22 |
69.96 |
4269.63 |
internlm/internlm2-chat-7b |
37.64 |
72.29 |
71.17 |
3892.50 |
Bielik-7B-Instruct-v0.1 |
39.28 |
61.89 |
86.00 |
277.92 |
mistralai/Mistral-7B-Instruct-v0.2 |
40.29 |
72.58 |
79.39 |
2088.08 |
teknium/OpenHermes-2.5-Mistral-7B |
42.64 |
70.63 |
80.25 |
1463.00 |
openchat/openchat-3.5-1210 |
44.17 |
71.76 |
82.15 |
1923.83 |
speakleash/mistral_7B-v2/spkl-all_sft_v2/e1_base/spkl-all_2e6-e1_70c70cc6 (实验性) |
45.44 |
71.27 |
91.50 |
279.24 |
Nexusflow/Starling-LM-7B-beta |
45.69 |
74.58 |
81.22 |
1161.54 |
openchat/openchat-3.5-0106 |
47.32 |
74.71 |
83.60 |
1106.56 |
berkeley-nest/Starling-LM-7B-alpha |
47.46 |
75.73 |
82.86 |
1438.04 |
|
|
|
|
|
不同规模模型: |
|
|
|
|
Azurro/APT3-1B-Instruct-v1 (1B) |
-13.80 |
52.11 |
12.23 |
739.09 |
Voicelab/trurl-2-13b-academic (13B) |
29.45 |
68.19 |
79.88 |
733.91 |
upstage/SOLAR-10.7B-Instruct |
|
|
|
|