🚀 EuroLLM - 9B模型卡片
EuroLLM - 9B是一个强大的多语言大语言模型,旨在理解和生成多种欧洲语言及其他相关语言的文本。该模型由多个知名机构联合开发,获得欧盟资助,具有广泛的应用前景。你还可以查看其指令微调版本:EuroLLM - 9B - Instruct。
🚀 快速开始
运行模型
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "utter-project/EuroLLM-9B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
text = "English: My name is EuroLLM. Portuguese:"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
✨ 主要特性
- 多语言支持:支持保加利亚语、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、德语、希腊语、匈牙利语、爱尔兰语、意大利语、拉脱维亚语、立陶宛语、马耳他语、波兰语、葡萄牙语、罗马尼亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、瑞典语、阿拉伯语、加泰罗尼亚语、中文、加利西亚语、印地语、日语、韩语、挪威语、俄语、土耳其语和乌克兰语等多种语言。
- 先进架构:采用标准的密集Transformer架构,使用分组查询注意力(GQA)、预层归一化、RMSNorm、SwiGLU激活函数和旋转位置嵌入(RoPE)等技术,提高了推理速度和下游任务性能。
📦 安装指南
文档未提及具体安装步骤,可参考transformers
库的官方安装文档进行安装。
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "utter-project/EuroLLM-9B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
text = "English: My name is EuroLLM. Portuguese:"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
📚 详细文档
模型详情
EuroLLM项目旨在创建一套能够理解和生成所有欧盟语言以及一些其他相关语言文本的大语言模型。EuroLLM - 9B是一个具有90亿参数的模型,在4万亿个标记上进行训练,这些标记分布在考虑的语言和多个数据源中,包括网络数据、平行数据(英语 - 其他语言和其他语言 - 英语)和高质量数据集。EuroLLM - 9B - Instruct在EuroBlocks上进行了进一步的指令微调,EuroBlocks是一个专注于通用指令遵循和机器翻译的指令微调数据集。
模型描述
EuroLLM使用标准的密集Transformer架构:
- 分组查询注意力(GQA):使用8个键值头,在保持下游性能的同时提高了推理速度。
- 预层归一化:采用RMSNorm,提高了训练稳定性并加快了计算速度。
- SwiGLU激活函数:在下游任务中取得了良好的效果。
- 旋转位置嵌入(RoPE):在每一层都使用,允许扩展上下文长度并取得了良好的性能。
训练信息
在预训练过程中,使用了Marenostrum 5超级计算机的400个Nvidia H100 GPU,以2800个序列的恒定批量大小(约1200万个标记)训练模型,使用Adam优化器和BF16精度。以下是模型超参数的总结:
属性 |
详情 |
序列长度 |
4,096 |
层数 |
42 |
嵌入大小 |
4,096 |
FFN隐藏大小 |
12,288 |
头数 |
32 |
KV头数(GQA) |
8 |
激活函数 |
SwiGLU |
位置编码 |
RoPE (\Theta = 10,000) |
层归一化 |
RMSNorm |
绑定嵌入 |
否 |
嵌入参数 |
0.524B |
LM头参数 |
0.524B |
非嵌入参数 |
8.105B |
总参数 |
9.154B |
结果
欧盟语言
表1:开放权重的大语言模型在多语言基准测试中的比较。博尔达计数对应于模型的平均排名(见 (Colombo et al., 2022))。对于Arc - challenge、Hellaswag和MMLU,我们使用Okapi数据集(Lai et al., 2023),其中包括11种语言。对于MMLU - Pro和MUSR,我们使用Tower(Alves et al., 2024)将英语版本翻译成6种欧盟语言。
* 由于没有预训练模型的公开版本,我们使用后训练版本进行评估。
表1的结果显示,EuroLLM - 9B在多语言任务上的性能优于其他欧洲开发的模型(博尔达计数为1.0),并且与非欧洲模型具有很强的竞争力,取得了与Gemma - 2 - 9B相当的结果,在大多数基准测试中超过了其他模型。
英语
表2:开放权重的大语言模型在英语通用基准测试中的比较。
* 由于没有预训练模型的公开版本,我们使用后训练版本进行评估。
表2的结果表明,EuroLLM在英语任务上表现出色,超过了大多数欧洲开发的模型,与Mistral - 7B的性能相当(获得相同的博尔达计数)。
🔧 技术细节
架构选择
- 分组查询注意力(GQA):通过减少键值头的数量,在不显著损失性能的情况下提高了推理速度。
- 预层归一化和RMSNorm:提高了训练的稳定性和计算效率。
- SwiGLU激活函数:在非线性变换中表现良好,有助于模型学习更复杂的模式。
- 旋转位置嵌入(RoPE):允许模型处理更长的上下文,同时保持良好的性能。
训练设置
- 硬件资源:使用400个Nvidia H100 GPU进行预训练。
- 批量大小:恒定批量大小为2800个序列,约1200万个标记。
- 优化器:使用Adam优化器。
- 精度:采用BF16精度。
📄 许可证
本模型采用Apache License 2.0许可证。
重要提示
⚠️ 重要提示
EuroLLM - 9B未针对人类偏好进行对齐,因此模型可能会生成有问题的输出(例如,幻觉、有害内容或虚假陈述)。
💡 使用建议
在使用模型时,建议对生成的内容进行审核和验证,以确保其准确性和安全性。