模型简介
模型特点
模型能力
使用案例
🚀 Bielik-7B-Instruct-v0.1
Bielik-7B-Instruct-v0.1 是 Bielik-7B-v0.1 的指令微调版本。该模型是开源科学项目 SpeakLeash 与高性能计算中心 ACK Cyfronet AGH 独特合作的成果。它基于 SpeakLeash 团队精心挑选和处理的波兰语文本语料库进行开发和训练,借助了波兰的大规模计算基础设施,特别是 PLGrid 环境中的 ACK Cyfronet AGH 高性能计算中心。Bielik-7B-Instruct-v0.1 的创建和训练得到了计算资助(编号 PLG/2024/016951),在 Athena 和 Helios 超级计算机上进行,得以利用大规模机器学习过程所需的前沿技术和计算资源。因此,该模型在理解和处理波兰语方面表现出色,能够提供准确的响应,并高精度地执行各种语言任务。
🎥 演示:https://huggingface.co/spaces/speakleash/Bielik-7B-Instruct-v0.1
🗣️ 聊天竞技场*:https://arena.speakleash.org.pl/
* 聊天竞技场是一个用于测试和比较不同人工智能语言模型的平台,用户可以评估它们的性能和质量。
✨ 主要特性
- 波兰语处理能力强:基于波兰语文本语料库训练,能精准理解和处理波兰语。
- 多数据集训练:使用了波兰语和英语的指令数据集进行训练。
- 采用改进策略:运用加权标记级别损失、自适应学习率和掩码用户指令等策略提升性能。
- 多种版本支持:提供量化版本和适用于 Apple Silicon 的 MLX 版本。
📚 详细文档
模型
SpeakLeash 团队正在开发自己的波兰语指令集,并由注释人员不断扩展和完善。其中一部分经过人工验证和修正的指令已用于训练。此外,由于高质量的波兰语指令有限,还使用了公开可用的英语指令集 - OpenHermes-2.5 和 orca-math-word-problems-200k,这些指令占训练所用指令的一半。由于指令质量参差不齐,导致模型性能有所下降。为了在利用这些数据集的同时解决这个问题,引入了以下改进措施:
- 加权标记级别损失:受 离线强化学习 和 C-RLFT 启发的策略。
- 自适应学习率:受 学习率与批量大小关系研究 启发。
- 掩码用户指令
Bielik-7B-Instruct-v0.1 使用了由 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 版本:
我们了解到有些人希望探索更小的模型,或者没有资源运行完整模型。因此,我们准备了 Bielik-7B-Instruct-v0.1 模型的量化版本。同时,我们也考虑到了 Apple Silicon 用户。
量化版本(适用于非 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] Jakie mamy pory roku? [/INST]"
completion = "W Polsce mamy 4 pory roku: wiosna, lato, jesień i zima.</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": "Odpowiadaj krótko, precyzyjnie i wyłącznie w języku polskim."},
{"role": "user", "content": "Jakie mamy pory roku w Polsce?"},
{"role": "assistant", "content": "W Polsce mamy 4 pory roku: wiosna, lato, jesień i zima."},
{"role": "user", "content": "Która jest najcieplejsza?"}
]
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 = "Odpowiadaj krótko, precyzyjnie i wyłącznie w języku polskim."
history = [
("Jakie mamy pory roku w Polsce?", "W Polsce mamy 4 pory roku: wiosna, lato, jesień i zima.")
]
message = "Która jest najcieplejsza?"
prompt = chat_template(message, history, system_prompt)
评估
模型在 Open PL LLM 排行榜 上进行了 5-shot 评估。该基准测试评估了模型在自然语言处理任务(如情感分析、分类、文本分类)中的表现,但未测试聊天技能。以下是评估指标:
- 平均得分:所有任务的平均得分,以基线得分进行归一化。
- RAG 重排序:RAG 中常用的重排序任务。
- RAG 阅读器(生成器):RAG 中常用的开放书籍问答任务。
- 困惑度(越低越好):作为额外指标,与其他得分无关,不应用于模型比较。
截至 2024 年 4 月 3 日,以下表格展示了根据 Open PL LLM 排行榜在 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-v1.0(10.7B) | 46.07 | 76.93 | 82.86 | 789.58 |
7B 参数预训练和持续预训练模型: | ||||
OPI-PG/Qra-7b | 11.13 | 54.40 | 75.25 | 203.36 |
meta-llama/Llama-2-7b-hf | 12.73 | 54.02 | 77.92 | 850.45 |
internlm/internlm2-base-7b | 20.68 | 52.39 | 69.85 | 3110.92 |
Bielik-7B-v0.1 | 29.38 | 62.13 | 88.39 | 123.31 |
mistralai/Mistral-7B-v0.1 | 30.67 | 60.35 | 85.39 | 857.32 |
internlm/internlm2-7b | 33.03 | 69.39 | 73.63 | 5498.23 |
alpindale/Mistral-7B-v0.2-hf | 33.05 | 60.23 | 85.21 | 932.60 |
speakleash/mistral-apt3-7B/spi-e0_hf(实验性) | 35.50 | 62.14 | 87.48 | 132.78 |
SpeakLeash 模型在 RAG 阅读器任务中取得了优异的成绩。与 Mistral-7B-v0.1 相比,我们成功将平均得分提高了近 9 个百分点。在我们对聊天技能的主观评估中,SpeakLeash 模型的表现优于其他平均得分较高的模型。
上述表格中的结果是在未使用指令模型的指令模板的情况下获得的,而是将它们视为基础模型。这种方法可能会影响结果,因为指令模型是针对特定指令进行优化的。
局限性和偏差
Bielik-7B-Instruct-v0.1 是一个快速演示,表明基础模型可以轻松进行微调以实现令人信服和有前景的性能。它没有任何审核机制。我们期待与社区合作,使模型遵守规则,以便在需要审核输出的环境中部署。
Bielik-7B-Instruct-v0.1 可能会产生事实错误的输出,不应依赖它来生成事实准确的数据。Bielik-7B-Instruct-v0.1 在各种公共数据集上进行了训练。尽管在清理训练数据方面付出了巨大努力,但该模型仍有可能生成淫秽、虚假、有偏见或其他冒犯性的输出。
许可证
由于法律情况不明确,我们决定以 CC BY NC 4.0 许可证发布该模型 - 允许非商业使用。只要符合许可证条件,该模型可用于科学研究和个人使用。
引用
请使用以下格式引用此模型:
@misc{Bielik7Bv01,
title = {Introducing Bielik-7B-Instruct-v0.1: Instruct Polish Language Model},
author = {Ociepa, Krzysztof and Flis, Łukasz and Wróbel, Krzysztof and Kondracki, Sebastian and {SpeakLeash Team} and {Cyfronet Team}},
year = {2024},
url = {https://huggingface.co/speakleash/Bielik-7B-Instruct-v0.1},
note = {Accessed: 2024-04-01}, % 更改此日期
urldate = {2024-04-01} % 更改此日期
}
@misc{ociepa2024bielik7bv01polish,
title={Bielik 7B v0.1: A Polish Language Model -- Development, Insights, and Evaluation},
author={Krzysztof Ociepa and Łukasz Flis and Krzysztof Wróbel and Adrian Gwoździej and Remigiusz Kinas},
year={2024},
eprint={2410.18565},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2410.18565},
}
模型训练负责人
- Krzysztof OciepaSpeakLeash - 团队领导、概念设计、数据准备、流程优化和训练监督。
- Łukasz FlisCyfronet AGH - 协调和监督训练。
- Krzysztof WróbelSpeakLeash - 基准测试。
- Sebastian KondrackiSpeakLeash - 指令协调和准备。
- Maria FilipkowskaSpeakLeash - 指令准备。
- Paweł KiszczakSpeakLeash - 指令准备。
- Adrian GwoździejSpeakLeash - 数据质量和指令清理。
- Igor CiuciuraSpeakLeash - 指令清理。
- Jacek ChwiłaSpeakLeash - 指令清理。
- Remigiusz KinasSpeakLeash - 提供量化模型。
- Szymon BaczyńskiSpeakLeash - 提供量化模型。
如果没有整个 SpeakLeash 团队的奉献和努力,这个模型就无法创建,他们的贡献是不可估量的。由于许多人的辛勤工作,才有可能收集大量的波兰语内容,并建立了开源科学项目 SpeakLeash 与高性能计算中心 ACK Cyfronet AGH 之间的合作。为开源科学 SpeakLeash 项目做出贡献的个人包括: Grzegorz Urbanowicz、 Paweł Cyrta、 Jan Maria Kowalski、 Karol Jezierski、 Kamil Nonckiewicz、 Izabela Babis、 Nina Babis、 Waldemar Boszko 以及许多其他优秀的人工智能研究人员和爱好者。
ACK Cyfronet AGH 团队的成员提供了宝贵的支持和专业知识: Szymon Mazurek。
联系我们
如果您有任何问题或建议,请使用讨论标签。如果您想直接联系我们,请加入我们的 Discord SpeakLeash。



