
Apertus:瑞士首个开源大模型,多语言支持,合规训练,高效性能
在人工智能领域,开源大模型的出现为全球开发者和研究人员带来了新的机遇。瑞士近日正式推出了其首个完全开源的大语言模型——Apertus。这一模型由瑞士联邦理工学院(EPFL)、苏黎世联邦理工学院(ETH Zurich)和瑞士国家超级计算中心(CSCS)联合研发,旨在推动透明、开放且合规的AI发展。。
一、项目概述
Apertus 是瑞士首个大规模开放的大型语言模型(LLM),具有多语言处理能力,覆盖了超过1000种语言,其中40% 的数据来自非英语语言。这一特点不仅增强了对多元文化的包容性,也让 Apertus 能更好地服务于瑞士国内的特殊语言需求,如瑞士德语和罗曼什语等。Apertus 提供两个版本:80亿参数(适合个人与轻量应用)和700亿参数(面向更复杂场景)。
二、核心功能
(一)多语言支持
Apertus 的训练数据中40%为非英语内容,涵盖了瑞士德语、罗曼什语等此前在大型语言模型中代表性不足的语言。这使得 Apertus 在构建跨语言沟通、文化交流应用方面拥有巨大潜力。
(二)完全开放与透明
Apertus 开放其模型权重、训练数据集、文档,甚至中间检查点的访问权限。源代码和所有培训材料均根据允许商业使用的宽松开源许可证发布。这种透明度使得研究人员和监管机构可以审核数据源,验证其是否符合数据保护法,并检查模型的训练方式。
(三)数据合规性
Apertus 的开发明确遵守瑞士数据保护和版权法,并纳入了追溯退出机制,以尊重数据源的偏好。该模型仅使用公开数据,并经过过滤以排除个人信息,并尊重内容来源的退出信号。
(四)高效性能
Apertus 采用了解码器-only的Transformer架构,并引入了创新性的xIELU激活函数和AdEMAMix优化器。这使得模型在保持高性能的同时降低了计算复杂度,为实际应用提供了更好的效率保障。
三、技术揭秘
(一)模型架构
Apertus 采用了高效的密集解码器Transformer设计,70B版本拥有80层与64个注意力头,8B版本则为32层与32个注意力头。通过xIELU激活函数、RMSNorm归一化、RoPE位置编码和分组查询注意力机制,Apertus 在处理长文本序列和提升效率方面表现卓越。
(二)预训练目标
Apertus 运用Goldfish目标函数,通过对部分标记进行随机掩盖,有效防止模型死记硬背,同时保留了其在下游任务中的优异表现。
(三)预训练数据
预训练数据的规模超过15万亿标记,覆盖1800多种语言。数据来源广泛,包括高质量的网络爬取、代码和数学数据等。通过多重过滤机制,确保数据的合规性和多样性。
(四)训练过程
训练过程采用了AdEMAMix优化器和WSD学习率调度,确保了训练的稳定性和高效性。通过逐步扩展上下文长度,Apertus 能够处理长达65,536个标记的文本序列。
(五)后训练
后训练阶段,Apertus 经历了指令微调和对齐训练,并借助QRPO算法优化模型行为,使其生成的内容更加安全、有用且符合人类价值观。
四、应用场景
(一)多语言对话系统
Apertus 的多语言能力使其能够为用户提供更加自然和准确的对话体验,无论用户使用何种语言进行交流。
(二)代码生成与辅助
Apertus 可以帮助开发者快速生成代码,提供代码补全和优化建议,提高开发效率。
(三)教育与学习辅助
在教育领域,Apertus 可以作为学习辅助工具,为学生提供个性化的学习建议和解答。
(四)内容创作
Apertus 可以帮助创作者生成文本内容,如新闻报道、故事创作等,提高内容创作的效率和质量。
(五)翻译服务
Apertus 的多语言能力使其能够提供高质量的翻译服务,帮助用户跨越语言障碍。
五、快速使用
(一)环境准备
确保你的环境中安装了最新版本的transformers库,可以通过以下命令进行安装或更新:
pip install -U transformers
(二)加载模型
以下是加载并使用Apertus-8B-Instruct-2509模型的代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
# 指定模型名称
model_name = "swiss-ai/Apertus-8B-Instruct-2509"
device = "cuda" # 用于GPU加速,如果使用CPU则改为"cpu"
# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to(device)
# 准备输入提示
prompt = "Give me a brief explanation of gravity in simple terms."
messages_think = [
{"role": "user", "content": prompt}
]
# 使用apply_chat_template方法处理输入
text = tokenizer.apply_chat_template(
messages_think,
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer([text], return_tensors="pt", add_special_tokens=False).to(model.device)
# 生成输出
generated_ids = model.generate(**model_inputs, max_new_tokens=32768)
# 解码输出
output_ids = generated_ids[0][len(model_inputs.input_ids[0]) :]
print(tokenizer.decode(output_ids, skip_special_tokens=True))
六、结语
Apertus 以其强大的多语言能力、完全开放的特性以及对数据合规性的严格遵守,为全球用户和开发者提供了一个极具潜力的开源大模型解决方案。无论是在个人应用、教育、科研还是商业领域,Apertus 都展现出了广阔的应用前景。
项目官网:https://www.swiss-ai.org/apertus
Hugging Face:https://huggingface.co/swiss-ai/Apertus-8B-Instruct-2509
技术报告:https://github.com/swiss-ai/apertus-tech-report/blob/main/Apertus_Tech_Report.pdf
本文转载自小兵的AI视界,作者:AGI小兵
