模型简介
模型特点
模型能力
使用案例
🚀 巧可驼鹿(ChocoLlama)
巧可驼鹿(ChocoLlama)是一系列基于Llama-2/3的荷兰语语言模型家族,为荷兰语自然语言处理提供了强大的支持,推动了荷兰语大语言模型在其权重类别中的技术发展。
🚀 快速开始
我们在此介绍 巧可驼鹿2-7B指令模型(ChocoLlama-2-7B-instruct),它是基于巧可驼鹿3-8B基础模型(Llama-3-ChocoLlama-8B-base)进行指令微调的版本。该模型在一系列荷兰语指令微调数据集上进行了微调,采用了监督微调(SFT)和直接偏好优化(DPO)技术。其基础模型 巧可驼鹿3-8B基础模型 是Meta的Llama-2-7b的语言适配版本,使用LoRA在320亿个荷兰语Llama-2标记(104GB)上进行了微调。
使用以下代码开始使用该模型:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained('ChocoLlama/Llama-3-ChocoLlama-8B-instruct')
model = AutoModelForCausalLM.from_pretrained('ChocoLlama/Llama-3-ChocoLlama-8B-instruct', device_map="auto")
messages = [
{"role": "system", "content": "Je bent een artificiële intelligentie-assistent en geeft behulpzame, gedetailleerde en beleefde antwoorden op de vragen van de gebruiker."},
{"role": "user", "content": "Jacques brel, Willem Elsschot en Jan Jambon zitten op café. Waar zouden ze over babbelen?"},
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
new_terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=512,
eos_token_id=new_terminators,
do_sample=True,
temperature=0.8,
top_p=0.95,
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
请注意,用于指令微调的数据集是使用GPT-3.5/4进行翻译的,这意味着这个经过指令微调的模型不能用于商业目的。因此,对于任何商业应用,我们建议在您自己的荷兰语数据上对基础模型进行微调。
✨ 主要特性
- 语言适配:基于Meta的Llama-2/3模型,针对荷兰语进行了专门的语言适配和微调,能够更好地处理荷兰语任务。
- 多种变体:提供了6种不同的模型变体,包括基础模型和指令微调模型,满足不同场景的需求。
- 先进的微调技术:采用监督微调(SFT)和直接偏好优化(DPO)技术,提高了模型的性能和响应质量。
📚 详细文档
模型详情
巧可驼鹿(ChocoLlama)是一系列专门为荷兰语适配的开源大语言模型家族,在其权重类别中推动了荷兰语开源大语言模型的技术发展。
我们提供了6种变体(其中3种基础模型和3种指令微调模型):
- 巧可驼鹿2-7B基础模型(ChocoLlama-2-7B-base) (链接):Meta的Llama-2-7b的语言适配版本,使用LoRA在320亿个荷兰语Llama-2标记(104GB)上进行了微调。
- 巧可驼鹿2-7B指令模型(ChocoLlama-2-7B-instruct) (链接):基于巧可驼鹿2-7B基础模型的指令微调版本,在一系列荷兰语指令微调数据集上进行了微调,采用了监督微调(SFT)和直接偏好优化(DPO)技术。
- 巧可驼鹿2-7B标记转换基础模型(ChocoLlama-2-7B-tokentrans-base) (链接):Meta的Llama-2-7b的语言适配版本,使用基于荷兰语RoBERTa的标记器。该模型的标记嵌入使用 Remy等人 提出的标记翻译算法进行了重新初始化。随后,该模型在与巧可驼鹿2-7B基础模型相同的荷兰语数据集上使用LoRA进行了微调。
- 巧可驼鹿2-7B标记转换指令模型(ChocoLlama-2-7B-tokentrans-instruct) (链接):基于巧可驼鹿2-7B标记转换基础模型的指令微调版本,在与巧可驼鹿2-7B指令模型相同的数据集上进行了微调,采用了监督微调(SFT)和直接偏好优化(DPO)技术。
- 巧可驼鹿3-8B基础模型(Llama-3-ChocoLlama-8B-base) (链接):Meta的Llama-8-8B的语言适配版本,在与巧可驼鹿2-7B基础模型相同的荷兰语数据集上使用LoRA进行了微调。
- 巧可驼鹿3-8B指令模型(Llama-3-ChocoLlama-instruct) (链接):基于巧可驼鹿3-8B基础模型的指令微调版本,在与巧可驼鹿2-7B指令模型相同的数据集上进行了微调,采用了监督微调(SFT)和直接偏好优化(DPO)技术。
有关所有模型的基准测试结果,包括与它们的基础模型和其他荷兰语大语言模型的比较,请参考我们的论文 此处。
模型描述
属性 | 详情 |
---|---|
开发者 | Matthieu Meeus、Anthony Rathé |
资助方 | 佛兰芒超级计算机中心(Vlaams Supercomputer Centrum),通过约40,000个GPU小时(NVIDIA A100-80GB)的资助 |
支持语言 | 荷兰语 |
许可证 | cc-by-nc-4.0 |
微调基础模型 | 巧可驼鹿3-8B指令模型 |
模型来源
使用场景
直接使用
这是一个经过指令微调(SFT + DPO)的荷兰语模型,针对对话场景中的荷兰语生成进行了优化。为了获得最佳性能,建议仅使用正确的聊天模板(见上述Python代码),并可以结合系统提示使用。
非适用场景
需要理解或生成除荷兰语以外语言文本的用例:该模型微调所使用的数据集不包含除荷兰语以外的语言数据,因此我们预计该模型对于英语(Llama-2最初训练的语言)会出现严重的灾难性遗忘。
偏差、风险和局限性
我们在数据集中仅包含了广泛使用且高质量的数据,其中一些数据已经由原始创建者进行了过滤。然而,我们没有针对有偏差或其他有害内容对该数据集进行明确的额外过滤。
训练详情
我们采用了与将GEITje-7B对齐到 GEITje-7B-ultra 相同的策略。首先,我们进行了监督微调(SFT),利用了 Vanroy 提供的数据:
- BramVanroy/ultrachat_200k_dutch
- BramVanroy/no_robots_dutch
- BramVanroy/stackoverflow-chat-dutch
- BramVanroy/alpaca-cleaned-dutch
- BramVanroy/dolly-15k-dutch
接下来,我们对所有预训练模型的SFT版本应用了直接偏好优化(DPO),现在使用了用于训练Zephyr-7B-β的数据的荷兰语版本 BramVanroy/ultra_feedback_dutch。
在SFT和DPO阶段,我们更新了所有模型权重,并对所有模型应用了与GEITje-7B-ultra相同的超参数集:
- 学习率:5e-07
- 训练批次大小:4
- 评估批次大小:4
- 随机种子:42
- 分布式类型:多GPU
- 设备数量:4
- 梯度累积步数:4
- 总训练批次大小:64
- 总评估批次大小:16
- 优化器:Adam(β1=0.9,β2=0.999,ε=1e-08)
- 学习率调度器类型:余弦
- 学习率调度器热身比例:0.1
- 训练轮数:1
此外,我们利用了公开可用的 对齐手册,并在两个阶段都使用了4个NVIDIA A100(80 GB)GPU。
评估
定量评估
我们在几个行业标准的荷兰语基准测试上对我们的模型进行了评估,这些基准测试是从其原始版本翻译而来的。结果如下表所示,同时还列出了其他几个著名的荷兰语模型的结果。
模型 | ARC | HellaSwag | MMLU | TruthfulQA | 平均 |
---|---|---|---|---|---|
巧可驼鹿3-8B指令模型(Llama-3-ChocoLlama-instruct) | 0.48 | 0.66 | 0.49 | 0.49 | 0.53 |
llama-3-8B-rebatch | 0.44 | 0.64 | 0.46 | 0.48 | 0.51 |
llama-3-8B-instruct | 0.47 | 0.59 | 0.47 | 0.52 | 0.51 |
llama-3-8B | 0.44 | 0.64 | 0.47 | 0.45 | 0.5 |
Reynaerde-7B-Chat | 0.44 | 0.62 | 0.39 | 0.52 | 0.49 |
巧可驼鹿3-8B基础模型(Llama-3-ChocoLlama-base) | 0.45 | 0.64 | 0.44 | 0.44 | 0.49 |
zephyr-7b-beta | 0.43 | 0.58 | 0.43 | 0.53 | 0.49 |
geitje-7b-ultra | 0.40 | 0.66 | 0.36 | 0.49 | 0.48 |
巧可驼鹿2-7B标记转换指令模型(ChocoLlama-2-7B-tokentrans-instruct) | 0.45 | 0.62 | 0.34 | 0.42 | 0.46 |
mistral-7b-v0.1 | 0.43 | 0.58 | 0.37 | 0.45 | 0.46 |
巧可驼鹿2-7B标记转换基础模型(ChocoLlama-2-7B-tokentrans-base) | 0.42 | 0.61 | 0.32 | 0.43 | 0.45 |
巧可驼鹿2-7B指令模型(ChocoLlama-2-7B-instruct) | 0.36 | 0.57 | 0.33 | 0.45 | 0.43 |
巧可驼鹿2-7B基础模型(ChocoLlama-2-7B-base) | 0.35 | 0.56 | 0.31 | 0.43 | 0.41 |
llama-2-7b-chat-hf | 0.36 | 0.49 | 0.33 | 0.44 | 0.41 |
llama-2-7b-hf | 0.36 | 0.51 | 0.32 | 0.41 | 0.40 |
平均而言,巧可驼鹿3-8B指令模型在这些基准测试中超过了之前的最优模型。
定性评估
在我们的论文中,我们还对所有模型进行了额外的定性评估,我们通过经验发现这种评估更可靠。有关详细信息,请参考论文和我们的基准测试 巧可驼鹿基准(ChocoLlama-Bench)。
计算基础设施
所有巧可驼鹿模型都在 佛兰芒超级计算机中心(VSC) 提供的计算集群上进行了训练。我们使用了8到16个具有80 GB显存的NVIDIA A100 GPU。
引用
如果您认为本项目对您的工作有帮助,请引用我们的论文:
@article{meeus2024chocollama,
title={ChocoLlama: Lessons Learned From Teaching Llamas Dutch},
author={Meeus, Matthieu and Rath{\'e}, Anthony and Remy, Fran{\c{c}}ois and Delobelle, Pieter and Decorte, Jens-Joris and Demeester, Thomas},
journal={arXiv preprint arXiv:2412.07633},
year={2024}
}
📄 许可证
本项目采用 cc-by-nc-4.0 许可证。



