🚀 Viking 13B
Viking 13B是一个拥有130亿参数的仅解码器变压器模型,它在芬兰语、英语、瑞典语、丹麦语、挪威语、冰岛语和代码数据上进行了预训练。目前,该模型正在2万亿个标记上进行训练(截至本次发布时,已训练1.3万亿个标记)。Viking 13B是一个完全开源的模型,遵循Apache 2.0许可证。
Viking由图尔库大学的TurkuNLP小组、Silo AI旗下的SiloGen以及高性能语言技术(HPLT)合作创建。训练工作在LUMI超级计算机上进行,该计算机由芬兰科学信息技术中心CSC慷慨提供计算资源。
本项目是为非英语语言(尤其是像芬兰语这样的低资源语言)创建开源大语言模型的持续努力的一部分。该模型能够流利使用芬兰语、英语和斯堪的纳维亚语言,并能在这些语言之间进行基本翻译。此外,它还能够理解和生成代码。
✨ 主要特性
- 支持多种语言:能够处理芬兰语、英语、瑞典语、丹麦语、挪威语、冰岛语和代码。
- 开源模型:完全开源,遵循Apache 2.0许可证。
- 多参数选择:有7B、13B和33B三种参数规模可供选择。
📚 详细文档
模型家族
Viking是LumiOpen发布的第二组模型,有3种参数规模可供选择:
模型概述
注意:这是一个基础模型,对于大多数用例,需要进一步微调。
Viking是一个生成式预训练变压器模型,采用类似LLaMA的GPT架构,并使用旋转位置嵌入和闪存注意力机制。
属性 |
详情 |
模型类型 |
生成式预训练变压器模型,采用类似LLaMA的GPT架构 |
参数数量 |
140亿 |
层数 |
40 |
头数 |
40 |
模型维度 |
5120 |
词表大小 |
131072 |
序列长度 |
4096 |
训练
Viking 13B在LUMI超级计算机上进行训练,使用了512个AMD MI250X GPU。每个MI250X GPU有两个图形复合芯片(GCD),训练时的全局大小为1024。训练过程中使用了激活检查点、微批量大小为1、梯度累积为16,以及TP=2、PP=4、DP=128的3D并行策略。
训练于2023年9月开始,使用了Megatron-Deepspeed框架的自定义分支。
训练超参数
超参数 |
值 |
注释 |
精度 |
bfloat16 |
|
优化器 |
AdamW |
|
学习率 |
3e-4 |
100亿标记热身,余弦衰减至3e-5 |
权重衰减 |
1e-1 |
|
批量大小 |
1024 |
1024个样本 x 4096个标记 = 4194304个标记 |
分词器
Viking使用了一个自定义的128K Bloom分词器,该分词器在与模型训练相同的英语、芬兰语、瑞典语、丹麦语、挪威语、冰岛语和代码数据集上进行了训练。
数据集
Viking正在一个包含2万亿个标记的混合数据集上进行训练,该数据集包含英语、芬兰语、瑞典语、丹麦语、挪威语、冰岛语和代码。
关于确切数据集的更多详细信息将很快公布。
评估结果
完整的评估结果将随最终模型一起公布。
训练检查点
训练检查点以分支的形式在仓库中提供。大约每1000亿个标记会发布一次检查点。主分支将始终指向最新的检查点。以下是可用的检查点:
你可以使用transformers库从分支加载检查点,示例代码如下:
branch = "1700B"
model = transformers.AutoModelForCausalLM.from_pretrained(
"LumiOpen/Viking-13B",
torch_dtype=torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16,
revision=branch,
)
伦理考虑和局限性
Viking 13B是一个部分训练模型的发布版本,使用任何输出时都应格外小心。
Viking是一个先进的语言模型,主要针对英语、芬兰语、瑞典语、挪威语、丹麦语、冰岛语和代码进行了优化,对其他语言没有有意义的熟练度。与大多数人工智能驱动的系统一样,Viking是其训练的大量数据的产物,这些数据可能反映了更广泛网络的不完美、偏见和特性。Viking有时可能会产生被认为不准确、有偏见或有争议的输出。使用和开发Viking的用户和开发者应谨慎行事,并考虑进行额外的评估和定制,以确保模型的响应符合他们的特定需求和道德标准。
许可证
Viking遵循Apache 2.0许可证发布。