模型简介
模型特点
模型能力
使用案例
🚀 GEITje 7B ultra
GEITje 7B ultra 是一个面向荷兰语的对话模型,通过人工智能反馈进行对齐优化。它以合成数据为基础进行训练,能在一定程度上处理系统消息,为荷兰语对话场景提供支持。
🚀 快速开始
GEITje 7B ultra 是 BramVanroy/GEITje-7B-ultra-sft 的微调版本,在大约 5600 万个标记的合成 DPO 数据集上进行训练,该数据集使用 gpt - 4 - turbo 和 Rijgersberg/GEITje-7B-chat 为荷兰语生成。
⚠️ 重要提示
虽然该模型已与具有强大内容过滤功能的 gpt - 4 - turbo 输出对齐,但仍可能生成错误、误导性甚至冒犯性的内容,请自行承担使用风险。
由于该模型是基于使用 OpenAI/Azure 服务创建的合成数据进行训练的,因此不能用于商业目的。
💡 使用建议
若您正在寻找快速的 GGUF 版本,可以在 此处 找到它以及如何使用
ollama
的方法。
✨ 主要特性
- 基于 Mistral 架构,专为荷兰语设计的对话模型。
- 通过 DPO 方法与 AI 反馈对齐,优化对话性能。
- 支持系统消息,能在一定程度上处理复杂对话场景。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
💻 使用示例
基础用法
from transformers import pipeline, Conversation
# load_in_8bit: 低精度但节省大量 GPU 内存
# device_map=auto: 在多个 GPU 上加载模型
chatbot = pipeline("conversational", model="BramVanroy/GEITje-7B-ultra", model_kwargs={"load_in_8bit": True}, device_map="auto")
start_messages = [
{"role": "system", "content": "Je bent een grappige chatbot die Bert heet. Je maakt vaak mopjes."},
{"role": "user", "content": "Hallo, ik ben Bram. Ik wil vanavond graag een film kijken. Heb je enkele suggesties?"}
]
conversation = Conversation(start_messages)
conversation = chatbot(conversation)
response = conversation.messages[-1]["content"]
print(response)
高级用法
from transformers import pipeline, Conversation
# load_in_8bit: 低精度但节省大量内存
# device_map=auto: 在多个 GPU 上加载模型
# attn_implementation: 使用 flash 注意力(如果设备支持,否则移除该参数)
chatbot = pipeline("conversational", model="BramVanroy/GEITje-7B-ultra", model_kwargs={"load_in_8bit": True, "attn_implementation": "flash_attention_2"}, device_map="auto")
while (system_message := input("System message ('q' to quit): ")) != "q":
start_messages = [
{"role": "system", "content": system_message},
]
conversation = Conversation(start_messages)
while (user_input := input("User ('r' to reset): ")) != "r":
conversation.add_user_input(user_input)
conversation = chatbot(conversation)
response = conversation.messages[-1]["content"]
print("Assistant:", response)
📚 详细文档
模型描述
这是一个最终基于 Mistral 的荷兰语指令/聊天模型,通过 DPO 与 AI 反馈对齐。它是 BramVanroy/GEITje-7B-ultra-sft 的 DPO 延续版本,而后者又基于 Rijgersberg/GEITje-7B,并在荷兰语数据上进一步预训练。在 基准测试 中,它平均优于所有原始 GEITje 模型(但优势微弱)。不过,这些基准测试应谨慎看待(请参阅该页面基准测试下方的免责声明)。最佳评估方式是亲自尝试这些模型。
预期用途与限制
尽管该模型已与 gpt - 4 - turbo 输出对齐,但仍可能生成错误、误导性甚至冒犯性的内容,请自行承担使用风险。由于该模型是基于使用 OpenAI/Azure 服务创建的合成数据进行训练的,因此不能用于商业目的。
训练和评估数据
训练数据由基于 UltraFeedback binarized 创建的合成数据集组成,使用 gpt - 4 - turbo 和 geitje - chat 生成。将从原始数据集翻译而来的给定提示提供给两个模型,然后它们各自生成答案。接着,gpt - 4 - turbo 生成的答案总是被选为最佳答案,DPO 将对此进行优化。虽然这并不完全公平,但由于预算限制,无法让 gpt - 4 对两个回复进行评分。此外,在测试中发现,尽管 GEITje chat 是一个令人印象深刻的模型,但仍落后于 gpt - 4 - turbo。
数据集总共包含 56,137,090 个标记(提示 + 拒绝 + 选择的组合),测试集包含 6,178,969 个标记(占比 11.00%)。
训练过程
训练使用了优秀的 对齐手册,并使用自定义的 slurm 脚本以与集群兼容。模型进行了全量训练,未使用 LoRA 或其他适配器。
模型在两个节点(每个节点有四个 80GB 的 A100 GPU)上以 bfloat16 精度和 flash 注意力 2 进行了约 11 小时的训练。感谢 佛兰芒超级计算机 提供的计算资源。
对于对话使用,模型依赖于 Zephyr 聊天模板,该模板与系统消息兼容。*-sft 数据的一小部分包含系统消息,因此假设模型至少能在一定程度上处理系统消息。
在早期迭代中发现,使用对齐手册的默认参数(beta = 0.01)会导致较差的结果(随机标记的幻觉)。经过调查,发现如此低的 beta 值在该数据集上效果不佳,因为它给模型留出了过多偏离其初始基础模型的空间。经过 超参数搜索 和对结果指标的手动分析,选择了当前的模型,其 beta 值为 0.1。
训练超参数
训练过程中使用了以下超参数:
属性 | 详情 |
---|---|
学习率 | 5e - 07 |
训练批次大小 | 4 |
评估批次大小 | 4 |
随机种子 | 42 |
分布式类型 | 多 GPU |
设备数量 | 8 |
梯度累积步数 | 4 |
总训练批次大小 | 128 |
总评估批次大小 | 32 |
优化器 | Adam(beta1 = 0.9,beta2 = 0.999,epsilon = 1e - 08) |
学习率调度器类型 | 余弦 |
学习率调度器预热比例 | 0.1 |
训练轮数 | 1.0 |
训练结果
训练损失 | 轮数 | 步数 | 验证损失 | 奖励/选择 | 奖励/拒绝 | 奖励/准确率 | 奖励/差距 | 对数概率/拒绝 | 对数概率/选择 | 对数几率/拒绝 | 对数几率/选择 |
---|---|---|---|---|---|---|---|---|---|---|---|
0.03 | 0.22 | 100 | 0.0260 | -0.9740 | -9.8635 | 0.9913 | 8.8895 | -524.8940 | -508.1891 | -3.0753 | -3.0315 |
0.0184 | 0.44 | 200 | 0.0164 | -1.7162 | -12.4772 | 0.9926 | 10.7610 | -551.0317 | -515.6115 | -3.0349 | -2.9873 |
0.0121 | 0.66 | 300 | 0.0142 | -2.0575 | -13.6818 | 0.9938 | 11.6244 | -563.0778 | -519.0242 | -3.0325 | -2.9835 |
0.0198 | 0.88 | 400 | 0.0139 | -2.1431 | -13.8857 | 0.9950 | 11.7426 | -565.1163 | -519.8801 | -3.0293 | -2.9801 |
框架版本
- Transformers 4.36.2
- Pytorch 2.1.2 + cu121
- Datasets 2.14.6
- Tokenizers 0.15.0
英文开放大语言模型排行榜评估结果
英文开放大语言模型排行榜的评估结果。如需荷兰语的特定结果,请查看 ScandEval。详细结果可在 此处 查看。
指标 | 值 |
---|---|
平均值 | 10.91 |
IFEval(零样本) | 37.23 |
BBH(3 样本) | 12.88 |
MATH 等级 5(4 样本) | 0.91 |
GPQA(零样本) | 1.68 |
MuSR(零样本) | 1.52 |
MMLU - PRO(5 样本) | 11.24 |
🔧 技术细节
训练使用了 对齐手册,并结合自定义 slurm 脚本。模型以 bfloat16 精度和 flash 注意力 2 在特定集群上进行训练。通过超参数搜索确定了最佳的 beta 值为 0.1,以优化模型性能。
📄 许可证
本模型采用 CC - BY - NC - 4.0 许可证。
引用
如果您使用 GEITje 7B Ultra (SFT) 或其任何派生版本或量化版本,请引用以下论文:
@misc{vanroy2024geitje7bultraconversational,
title={GEITje 7B Ultra: A Conversational Model for Dutch},
author={Bram Vanroy},
year={2024},
eprint={2412.04092},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2412.04092},
}



