模型简介
模型特点
模型能力
使用案例
🚀 Teuken-7B-instruct-commercial-v0.4
Teuken-7B-instruct-commercial-v0.4 是一个经过指令调优的70亿参数多语言大语言模型(LLM),它在所有24种欧洲官方语言的4万亿个标记上进行了预训练,并在 OpenGPT-X 研究项目中以Apache 2.0许可证发布。基础模型 Teuken-7B-base-v0.4 可通过邮件 📧 contact@opengpt-x.de 申请获取。
🚀 快速开始
安装
该模型需要一些可以在Python环境中安装的库:
python -m pip install numpy torch huggingface_hub transformers sentencepiece
使用示例
基础用法
安装完成后,以下是一个如何使用该模型的示例: 由于此模型是一个微调模型,必须使用提供的提示模板。不使用提示模板使用该模型并非预期且不被推荐。提示模板定义如下:
user="Hi!"
lang_code = "DE"
system_messages={
"EN": "A chat between a human and an artificial intelligence assistant."
" The assistant gives helpful and polite answers to the human's questions.",
"DE": "Ein Gespräch zwischen einem Menschen und einem Assistenten mit künstlicher Intelligenz."
" Der Assistent gibt hilfreiche und höfliche Antworten auf die Fragen des Menschen.",
}
prompt = f"System: {system_messages[lang_code]}\nUser: {user}\nAssistant:"
提示模板也直接集成在分词器中,可以按如下方式使用:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_name = "openGPT-X/Teuken-7B-instruct-commercial-v0.4"
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
)
model = model.to(device).eval()
tokenizer = AutoTokenizer.from_pretrained(
model_name,
use_fast=False,
trust_remote_code=True,
)
messages = [{"role": "User", "content": "Wer bist du?"}]
prompt_ids = tokenizer.apply_chat_template(messages, chat_template="DE", tokenize=True, add_generation_prompt=True, return_tensors="pt")
prediction = model.generate(
prompt_ids.to(model.device),
max_length=512,
do_sample=True,
top_k=50,
top_p=0.95,
temperature=0.7,
num_return_sequences=1,
)
prediction_text = tokenizer.decode(prediction[0].tolist())
print(prediction_text)
高级用法
使用vLLM服务器
启动vLLM服务器:
vllm serve openGPT-X/Teuken-7B-instruct-commercial-v0.4 --trust-remote-code
使用vLLM的聊天API,并将聊天模板的语言作为额外参数传递:
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://localhost:8000/v1",
)
completion = client.chat.completions.create(
model="openGPT-X/Teuken-7B-instruct-commercial-v0.4",
messages=[{"role": "User", "content": "Hallo"}],
extra_body={"chat_template":"DE"}
)
print(f"Assistant: {completion}")
聊天模板的默认语言也可以在启动vLLM服务器时设置。为此,创建一个名为 lang
且内容为 DE
的新文件,并按如下方式启动vLLM服务器:
vllm serve openGPT-X/Teuken-7B-instruct-commercial-v0.4 --trust-remote-code --chat-template lang
使用vLLM离线批量推理
from vllm import LLM, SamplingParams
sampling_params = SamplingParams(temperature=0.01, max_tokens=1024, stop=["</s>"])
llm = LLM(model="openGPT-X/Teuken-7B-instruct-commercial-v0.4", trust_remote_code=True, dtype="bfloat16")
outputs = llm.chat(
messages=[{"role": "User", "content": "Hallo"}],
sampling_params=sampling_params,
chat_template="DE"
)
print(f"Prompt: {outputs[0].prompt}")
print(f"Assistant: {outputs[0].outputs[0].text}")
✨ 主要特性
- 多语言支持:支持24种欧洲官方语言,适用于商业和研究用途,在多语言任务中表现更稳定,能更好地反映欧洲价值观。
- 指令调优:经过指令调优,能根据用户指令生成更符合需求的回答。
📦 安装指南
该模型需要一些可以在Python环境中安装的库:
python -m pip install numpy torch huggingface_hub transformers sentencepiece
📚 详细文档
模型描述
- 开发者:Fraunhofer、Forschungszentrum Jülich、TU Dresden、DFKI
- 资助方:德国联邦经济与气候保护部(BMWK),在OpenGPT-X项目框架内
- 模型类型:基于Transformer的仅解码器模型
- 支持语言(NLP):bg、cs、da、de、el、en、es、et、fi、fr、ga、hr、hu、it、lt、lv、mt、nl、pl、pt、ro、sk、sl、sv
- 发布方:OpenGPT-X
使用场景
Teuken-7B-instruct-commercial-v0.4 旨在用于所有24种欧洲官方语言的商业和研究用途。由于该模型专注于覆盖所有24种欧盟语言,与以英语为中心的模型相比,它在这些语言上能产生更稳定的结果,并且在回答中能更好地反映欧洲价值观。因此,它特别适用于多语言任务。
免责声明:有害内容
这个大语言模型(LLM)可能会生成不适当、冒犯性或有害的内容。虽然数据集已经过过滤以尽量减少此类输出,但由于数据的大规模和多样性,模型仍可能产生有偏见或有害的文本。
非预期使用场景
该模型不适合用于数学和编码任务。
偏差、风险和局限性
Teuken-7B-instruct-commercial-v0.4 是Teuken-7B-base-v0.4(可通过邮件 📧 contact@opengpt-x.de 申请获取)的指令调优版本,它并非完全没有偏差和幻觉。
训练细节
预训练数据
Teuken-7B-base-v0.4 在来自公开可用来源的4万亿个标记的数据上进行了预训练。预训练数据截止到2023年9月。更多信息可在我们的预印本 "Data Processing for the OpenGPT-X Model Family" 中找到。
指令调优数据
该模型在一组以英语和德语为重点的指令调优数据集上进行了微调,这些数据集也包含22种欧洲官方语言的指令。数据集组成包含三种类型的数据:多语言数据、英语数据和翻译后的德语数据。
英语数据
- 我们只包含了OpenOrca数据集的一个子样本。
- 为了根据质量选择指令调优示例,我们使用 Starling-RM-7B-alpha(Apache-2.0许可证)计算了所有英语示例的奖励分数。
我们的目标是包含与多语言示例大致相同数量的英语示例:
- 添加所有多轮对话示例。
- 添加整个
code_alpaca
数据集子集。 - 对于其余的数据集子集(
open_orca
、evol_instruct_143k
、evol_instruct_70k
、sharegpt_v3
、ultrachat_200k
),我们添加奖励分数最高的样本,以便每个数据集子集贡献相同数量的高质量示例。
德语数据
由于我们的目标是创建一个以德语和英语为中心的欧洲语言数据集,并且由于大规模德语指令调优数据的稀缺性,我们翻译了上述数据集组成中的英语部分。为此,我们应用了 Alma-13B(MIT许可证)模型。由于代码在翻译中可能会出现问题,我们实现了基于正则表达式的代码检测功能。通过该功能,我们排除代码片段进行翻译,并在翻译后重新插入代码片段。由于 alpaca_code
包含许多我们基于正则表达式的代码检测实现无法检测到的代码片段,我们将这部分数据集纳入了翻译范围。
多语言数据
对于多语言数据,我们包含了 aya_dataset 中的14种欧洲官方语言以及 aya_collection 的 translated_flan_cot
数据集中的21种欧洲官方语言。
数据集和许可证
名称 | 语言 | 许可证 |
---|---|---|
Open-Orca/OpenOrca | 英语 | MIT |
sahil2801/CodeAlpaca-20k | 英语 | CC-BY-4.0 |
WizardLM/WizardLM_evol_instruct_V2_196k | 英语 | MIT |
WizardLM/WizardLM_evol_instruct_70k | 英语 | MIT |
anon8231489123/ShareGPT_Vicuna_unfiltered | 英语 | Apache-2.0 |
HuggingFaceH4/ultrachat_200k | 英语 | MIT |
CohereForAI/aya_dataset | 多语言 | Apache-2.0 |
CohereForAI/aya_collection | 多语言 | Apache-2.0 |
FreedomIntelligence/sharegpt-deutsch | 德语 | Apache-2.0 |
bjoernp/ultrachat_de | 德语 | MIT |
各语言的数据集贡献情况:
总数 | 德语_freedomintelligence_sharegpt | 德语_ultrachat_de | 翻译后的_flan_cot | aya_dataset | 翻译为德语的_ultrachat_200k | 翻译为德语的_sharegpt_v3_unfiltered | 翻译为德语的_evol_instruct_143k | 翻译为德语的_evol_instruct_70k | 翻译为德语的_open_orca | ultrachat_200k | sharegpt_v3_unfiltered | code_alpaca | open_orca | evol_instruct_143k | evol_instruct_70k | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BG | 1909 | 0 | 0 | 1909 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CS | 1885 | 0 | 0 | 1885 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DA | 2001 | 0 | 0 | 1906 | 95 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DE | 77628 | 5818 | 898 | 1896 | 231 | 6940 | 37555 | 8116 | 8065 | 8109 | 0 | 0 | 0 | 0 | 0 | 0 |
ET | 1901 | 0 | 0 | 1901 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
EL | 2472 | 0 | 0 | 1881 | 591 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ES | 3800 | 0 | 0 | 1898 | 1902 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
EN | 80806 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6915 | 37600 | 12013 | 8074 | 8099 | 8105 |
FI | 2598 | 0 | 0 | 1890 | 708 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
FR | 3250 | 0 | 0 | 1890 | 1360 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
HU | 1985 | 0 | 0 | 1892 | 93 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
MT | 1918 | 0 | 0 | 1918 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
IT | 2613 | 0 | 0 | 1910 | 703 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
LT | 2800 | 0 | 0 | 1920 | 880 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
NL | 3549 | 0 | 0 | 1905 | 1644 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PL | 3322 | 0 | 0 | 1909 | 1413 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PT | 3806 | 0 | 0 | 1897 | 1909 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
RO | 1888 | 0 | 0 | 1888 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
GA | 3069 | 0 | 0 | 1880 | 1189 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
SK | 1922 | 0 | 0 | 1922 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
SL | 1894 | 0 | 0 | 1894 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
SV | 3160 | 0 | 0 | 1916 | 1244 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
所有语言的总数为210,176。
训练过程
Teuken-7B-base-v0.4 的指令微调版本。更多关于预训练的信息可在我们的模型预印本 "Teuken-7B-Base & Teuken-7B-Instruct: Towards European LLMs" 中找到。
训练超参数
- 训练模式:bf16混合精度
评估
指令调优模型在21种欧洲语言的多语言基准测试中的结果:
模型 | 平均值 | EU21-ARC | EU21-HeSw | EU21-TQA | EU21-MMLU |
---|---|---|---|---|---|
Meta-Llama-3.1-8B-Instruct | .563 | .563 | .579 | .532 | .576 |
Mistral-7B-Instruct-v0.3 | .527 | .530 | .538 | .548 | .491 |
Salamandra-7B-Instruct | .543 | .595 | .637 | .482 | .459 |
Aya-23-8B | .485 | .475 | .535 | .476 | .455 |
Occiglot-7B-eu5-Instruct | .475 | .484 | .519 | .471 | .428 |
Pharia-1-LLM-7B-C-A | .417 | .396 | .438 | .469 | .366 |
Bloomz-7B1 | .358 | .316 | .354 | .461 | .302 |
Teuken-7B-instruct-commercial-v0.4 | .531 | .569 | .620 | .503 | .430 |
更多关于我们翻译后的基准测试质量的信息可在我们的评估预印本 "Towards Multilingual LLM Evaluation for European Languages" 中找到。更多关于Teuken-7B-instruct-research-v0.4的评估结果可在我们的模型预印本 "Teuken-7B-Base & Teuken-7B-Instruct: Towards European LLMs" 中找到。该模型在21种语言的ARC、GSM8K、HellaSwag、TruthfulQA、Translation和MMLU上进行了评估。结果也可在 欧洲大语言模型排行榜 中查看。
技术细节
模型架构和目标
超参数 | 值 |
---|---|
训练目标 | CLM |
激活函数 | SwiGLU |
序列长度 | 4096 |
位置嵌入 | Rotary |
层数 | 32 |
隐藏层大小 | 4096 |
前馈网络隐藏层大小 | 13440 |
注意力头数量 | 32 |
头维度 | 128 |
分组查询注意力 | 是 |
查询组数量 | 2 |
归一化 | RMSNorm |
学习率 | 3e-4 |
最小学习率 | 3e-5 |
线性层禁用偏置 | 是 |
隐藏层丢弃率 | 0.0 |
注意力丢弃率 | 0.0 |
优化器 | AdamW |
Beta1 | 0.9 |
Beta2 | 0.95 |
数据类型 | bf16 |
重新计算激活值 | 是 |
分布式优化器 | 是 |
计算基础设施
我们在JUWELS Booster上训练我们的模型,它由936个计算节点组成,每个节点配备4个NVIDIA A100 GPU。GPU由AMD EPYC Rome CPU托管。计算节点通过HDR-200 InfiniBand以DragonFly+拓扑结构连接。
硬件
JUWELS Booster计算节点的配置如下:
- CPU:AMD EPYC 7402处理器;2个插槽,每个插槽24个核心,SMT-2(总共:2×24×2 = 96个线程),NPS-4 1配置
- 内存:512 GB DDR4-3200 RAM(其中至少20 GB由系统软件栈占用,包括文件系统);每个插槽256 GB;每个插槽8个内存通道(每个NUMA域2个通道)
- GPU:4 × NVIDIA A100 Tensor Core GPU,每个40 GB;通过NVLink3相互连接
- 网络:4 × Mellanox HDR200 InfiniBand ConnectX 6(每个200 Gbit/s),HCA
- 外设:CPU、GPU和网络适配器通过2个PCIe Gen 4交换机连接,每个设备(CPU插槽:2×16个通道)有16个PCIe通道。PCIe交换机配置为合成模式。
软件
BibTeX引用
如果您在研究中发现我们的模型有用,请考虑引用我们的 预印本:
@misc{ali2024teuken7bbaseteuken7binstructeuropean,
title={Teuken-7B-Base & Teuken-7B-Instruct: Towards European LLMs},
author={Mehdi Ali and Michael Fromm and Klaudia Thellmann and Jan Ebert and Alexander Arno Weber and Richard Rutmann and Charvi Jain and Max Lübbering and Daniel Steinigen and Johannes Leveling and Katrin Klug and Jasper Schulze Buschhoff and Lena Jurkschat and Hammam Abdelwahab and Benny Jörg Stein and Karl-Heinz Sylla and Pavel Denisov and Nicolo' Brandizzi and Qasid Saleem and Anirban Bhowmick and Lennard Helmer and Chelsea John and Pedro Ortiz Suarez and Malte Ostendorff and Alex Jude and Lalith Manjunath and Samuel Weinbach and Carolin Penke and Oleg Filatov and Shima Asaadi and Fabio Barth and Rafet Sifa and Fabian Küch and Andreas Herten and René Jäkel and Georg Rehm and Stefan Kesselheim and Joachim Köhler and Nicolas Flores-Herr},
year={2024},
eprint={2410.03730},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2410.03730},
}
团队信息
数据团队
Anirban Bhowmick(IAIS)、Nicolo Brandizzi(IAIS)、Lennard Helmer(IAIS)、Benny Jörg Stein(IAIS)、Karl-Heinz Sylla(IAIS)、Pavel Denisov(IAIS)、Qasid Saleem(IAIS)、Johannes Leveling(IAIS)、Hammam Abdelwahab(IAIS)、Luzian Hahn(IIS)、Farzad Naderi(IIS)、Md Saiful Islam(IIS)、Alexander Schwirjow(IIS)、Pedro Ortiz Suarez(前DFKI)、Malte Ostendorff(前DFKI)
模型训练团队
核心贡献者
Mehdi Ali(IAIS)、Michael Fromm(IAIS)、Jan Ebert(FZJ)、Chelsea John(FZJ)、Lena Jurkschat(TUD)、Alexander Weber(IAIS)
贡献者
Richard Rutmann(IAIS)、Daniel Steinigen(IAIS)、Lalith Manjunath(TUD)、Carolin Penke(FZJ)
评估团队
核心贡献者
Klaudia Thellmann(TUD)、Alex Jude(IAIS)、Jasper Buschhoff(IAIS)
贡献者
Shima Assadi(IIS)、Fabio Barth(DFKI)
管理团队
Joachim Köhler(IAIS)、Nicolas Flores-Herr(IAIS)、Stefan Kesselheim(FZJ)、Andreas Herten(FZJ)、Georg Rehm(DFKI)、René Jäkel(TUD)、Fabian Küch(IIS)、Nicole Hildebrandt(IAIS)、Ines Wendler(IAIS)
我们相信,合作是克服上述局限性并加强欧洲生成式人工智能领域的关键。因此,团队邀请研究人员、开发者和人工智能爱好者通过各种平台加入并参与。我们创建了一个Discord服务器用于社区合作,为讨论技术细节、交流想法以及与开发者直接互动提供了一个空间。此外,研究出版物和欧洲大语言模型排行榜等资源提供了关于Teuken-7B性能和技术方面的见解。OpenGPT-X团队鼓励随着项目的发展进行持续的参与和合作。
关键链接
- Discord:OpenGPT-X Discord服务器
- 研究论文:OpenGPT-X新闻 研究论文
- 大语言模型排行榜:欧洲大语言模型排行榜 大语言模型排行榜
联系信息
您可以联系以下模型卡片联系人:
许可证
本模型采用Apache 2.0许可证发布。



