language:
- nl
license: cc-by-nc-4.0
base_model: ChocoLlama/Llama-3-ChocoLlama-8B-base
datasets:
- BramVanroy/ultrachat_200k_dutch
- BramVanroy/stackoverflow-chat-dutch
- BramVanroy/alpaca-cleaned-dutch
- BramVanroy/dolly-15k-dutch
- BramVanroy/no_robots_dutch
- BramVanroy/ultra_feedback_dutch
ChocoLlama
基于Llama-2/3的荷兰语大模型家族
Llama-3-ChocoLlama-8B-instruct:快速开始
我们在此推出ChocoLlama-2-7B-instruct——这是Llama-3-ChocoLlama-8B-base的指令调优版本,通过SFT(监督微调)和DPO(直接偏好优化)在多个荷兰语指令数据集上微调而成。其基础模型Llama-3-ChocoLlama-8B-base是Meta Llama-2-7b的语言适配版本,使用LoRa在32B荷兰语Llama-2 tokens(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": "你是一个人工智能助手,需为用户问题提供有用、详尽且礼貌的回答。"},
{"role": "user", "content": "Jacques Brel、Willem Elsschot和Jan Jambon在咖啡馆聊天,他们会聊些什么?"},
]
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翻译,因此该指令模型不可商用。建议商业应用时基于基础模型使用自有荷兰语数据微调。
模型详情
ChocoLlama是专为荷兰语优化的开源大模型家族,在其权重级别中代表了荷兰语开源模型的先进水平。
我们提供6个变体(含3个基础模型和3个指令模型):
- ChocoLlama-2-7B-base(链接):基于Meta Llama-2-7b,使用LoRa在32B荷兰语tokens上微调
- ChocoLlama-2-7B-instruct(链接):基础模型的指令调优版,采用SFT+DPO流程
- ChocoLlama-2-7B-tokentrans-base(链接):使用荷兰语RoBERTa分词器,通过Remy等的token翻译算法重建词嵌入
- ChocoLlama-2-7B-tokentrans-instruct(链接):上述模型的指令调优版
- Llama-3-ChocoLlama-8B-base(链接):基于Meta Llama-3-8B的荷兰语适配版
- Llama-3-ChocoLlama-instruct(链接):8B基础模型的指令调优版
完整基准测试结果详见论文。
模型描述
使用场景
直接使用
这是针对荷兰语对话场景优化的指令模型,建议配合聊天模板(见示例代码)和系统提示使用。
非适用场景
非荷兰语文本理解/生成:由于训练数据仅含荷兰语,原Llama-2的英语能力可能显著退化。
局限性
虽然数据集经过原始创建者筛选,但我们未额外过滤偏见/有害内容。
训练细节
采用与GEITje-7B-ultra相同的两阶段策略:
- SFT阶段:使用Vanroy提供的荷兰语指令数据集
- DPO阶段:基于荷兰语版UltraFeedback数据
关键超参数(所有模型统一):
- 学习率:5e-07
- 批量大小:64(总训练)/16(总评估)
- 优化器:Adam (beta=0.9,0.999)
- 训练设备:4×NVIDIA A100(80GB)
完整配置参见alignment-handbook。
评估
量化评估
在标准化荷兰语基准测试中的表现(平均分):
模型 |
ARC |
HellaSwag |
MMLU |
TruthfulQA |
平均 |
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-ChocoLlama-instruct在多项指标上超越先前最佳模型。
定性评估
详见论文及评估集ChocoLlama-Bench。
计算设施
所有训练在弗拉芒超算中心的8-16×NVIDIA A100(80GB)集群完成。
引用
若使用本模型,请引用:
@article{meeus2024chocollama,
title={ChocoLlama:荷兰语Llama模型的实践启示},
author={Meeus, Matthieu and Rathé, Anthony and Remy, François and Delobelle, Pieter and Decorte, Jens-Joris and Demeester, Thomas},
journal={arXiv预印本 arXiv:2412.07633},
year={2024}
}