license: apache-2.0
datasets:
- cerebras/SlimPajama-627B
- bigcode/starcoderdata
- mc4
- allenai/dolma
language:
- fi
- en
Poro 34B 模型介绍
Poro 是一个拥有340亿参数、基于芬兰语、英语和代码训练的仅解码器Transformer模型。其训练数据覆盖1万亿标记,采用Apache 2.0许可证完全开源。
该项目由Silo AI旗下SiloGen、图尔库大学TurkuNLP团队与高性能语言技术组织(HPLT)联合开发,训练在芬兰CSC提供的LUMI超级计算机上完成。
作为持续推动非英语(尤其是芬兰语等低资源语言)开源大模型计划的一部分,Poro通过融合英语和芬兰语数据,性能超越单一芬兰语模型,同时兼具英语与代码处理能力,并能进行基础英芬互译。
Poro 34B仅是系列首款模型,后续版本将支持更多语言,并引入Flash Attention、旋转位置编码和分组查询注意力等特性。
名字含义? Poro是芬兰语"驯鹿"!🦌这种动物不仅是芬兰本土物种,更在芬兰文化中具有重要历史地位。
模型概览
注意: 作为早期研究版本,Poro是基础模型,多数场景需进一步微调。
Poro采用BLOOM架构的生成式预训练Transformer,使用ALiBi位置编码支持推理时的上下文长度外推。
超参数 |
值 |
参数量 |
342亿 |
层数 |
54 |
注意力头数 |
56 |
模型维度 |
7168 |
词表大小 |
128000 |
序列长度 |
2048 |
研究检查点
检查点以分支形式发布,约每1000亿标记更新一次。主分支始终指向最新版本,现有检查点包括:
可通过transformers库加载指定分支:
branch = "200B"
model = transformers.AutoModelForCausalLM.from_pretrained(
"LumiOpen/Poro-34B",
torch_dtype=torch.bfloat16,
revision=branch,
)
训练细节
在LUMI超算上使用512块AMD MI250X GPU(共1024个计算单元)训练,采用3D并行策略(TP=2, PP=4, DP=128),微批次大小为1,梯度累积16步。训练始于2023年9月,基于定制版Megatron-Deepspeed框架。
训练超参数
参数 |
值 |
说明 |
精度 |
bfloat16 |
|
优化器 |
AdamW |
|
学习率 |
1.5e-4 |
100亿标记预热,余弦衰减至2e-5 |
权重衰减 |
0.1 |
|
批次大小 |
2048 |
2048样本×2048标记=419万标记 |
分词器
使用基于英/芬/代码数据训练的128K词表Bloom分词器。
数据集
1万亿标记的混合数据集构成:
数据集 |
说明 |
占比 |
训练轮次 |
标记量 |
SlimPajama |
排除books3数据 |
54.16% |
1x |
5417亿 |
芬兰语数据 |
TurkuNLP芬兰语语料 |
13.05% |
4x |
1315亿 |
Tatoeba |
英芬句子对 |
0.81% |
1x |
80亿 |
Starcoder |
代码数据 |
31.53% |
1.52x |
3154亿 |
古登堡计划 |
取自Dolma数据集 |
0.46% |
1x |
45亿 |
芬兰语数据来源包括:互联网解析库、mC4多语言清洗数据、芬兰维基百科、新闻档案等十余种资源。
评估结果
完整评估数据详见GitHub仓库。
伦理与限制
Poro主要针对英语、芬兰语和代码优化,其他语言能力有限。作为AI系统,其输出可能反映训练数据中的偏见或错误。使用者应审慎评估,确保输出符合伦理要求。
许可
Apache 2.0许可证。
引用
@misc{luukkonen2024poro,
title={Poro 34B and the Blessing of Multilinguality},
author={Risto Luukkonen et al.},
year={2024},
eprint={2404.01856},
archivePrefix={arXiv},
primaryClass={cs.CL}
}