Apertus:瑞士首个开源大模型,多语言支持,合规训练,高效性能

发布于 2025-9-15 07:58
浏览
0收藏

在人工智能领域,开源大模型的出现为全球开发者和研究人员带来了新的机遇。瑞士近日正式推出了其首个完全开源的大语言模型——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小兵

已于2025-9-15 07:58:08修改
收藏
回复
举报
回复
相关推荐