🚀 斯洛伐克GPT - J - 162M
斯洛伐克GPT - J - 162M是斯洛伐克GPT - J系列发布的首个模型,也是首个主要基于斯洛伐克语料库训练的公开可用的Transformer模型。自首次发布以来,另外两个模型也已公开,分别是斯洛伐克GPT - J - 405M和最大的斯洛伐克GPT - J - 1.4B。
✨ 主要特性
模型描述
该模型基于GPT - J构建,拥有超过1.62亿个可训练参数。
属性 |
详情 |
模型类型 |
基于GPT - J的Transformer模型 |
训练数据 |
主要为斯洛伐克语文本,涵盖网络、新闻文章、圣经文本等不同类别,总量超过40GB |
可训练参数数量 |
162,454,608 |
层数 |
12 |
模型维度 |
768 |
前馈层维度 |
16384 |
头数 |
16 |
头维度 |
256 |
上下文长度 |
2048 |
词表大小 |
50256(与GPT - 2/3使用相同的分词器) |
位置编码 |
旋转位置嵌入(RoPE) |
RoPE维度 |
64 |
注意:ByteLevelBPETokenizer是在相同的斯洛伐克语料库上训练的。
训练数据
斯洛伐克GPT - J - 162M是在一个私人收集的数据集上训练的,该数据集主要由斯洛伐克语文本组成,涵盖不同类别,如网络、新闻文章甚至圣经文本。总共使用了超过40GB的文本数据来训练这个模型。
该数据集经过了特定的预处理和清理,虽然涉及的改动较小,但仍有一些需要注意的地方。为了达到预期的性能,请参考“如何使用”部分。请记住,尽管努力去除了语料库中的不当部分,但模型仍可能生成敏感内容或泄露敏感信息。
训练过程
该模型在TPU v3 - 8 pod上经过69,001步,对近370亿个标记进行了训练。最后一步的交叉熵验证损失为3.065。
预期用途
与原始的GPT - J一样,斯洛伐克GPT - J学习语言的内部表示,可用于提取对下游任务有用的特征。不过,其主要用途是根据提示进行文本生成。
📦 安装指南
此模型可使用AutoModelForCausalLM
功能轻松加载:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Milos/slovak-gpt-j-162M")
model = AutoModelForCausalLM.from_pretrained("Milos/slovak-gpt-j-162M")
💻 使用示例
基础用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Milos/slovak-gpt-j-162M")
model = AutoModelForCausalLM.from_pretrained("Milos/slovak-gpt-j-162M")
prompt = "Moje najobľubenejšie mesto na severe Slovenska je"
encoded_input = tokenizer(prompt, return_tensors='pt')
output = model.generate(**encoded_input)
print(tokenizer.decode(output[0]))
使用提示
在生成提示时,请记住以下三点:
- 不要留有尾随空格。分词器对“Mám rád slovenčinu”(
slovenčinu
后无空格)和“Mám rád slovenčinu ”(slovenčinu
后有尾随空格)的编码方式不同,即[12805, 2872, 46878]
不等于 [12805, 2872, 46878, 221]
。
- 始终使用标准的美式英语双引号,即
""
而不是 „“
。
- 如果需要换行,请输入
\n\n
而不是单个 \n
。
能力、局限性和偏差
首先,由于该模型相对较小,总共只有1.62亿个参数,其能力非常有限。因此,该模型的主要用途是用于学习和娱乐!
由于数据集包含脏话、政治不正确的语言,甚至(无意地)包含一些捷克语文本,模型在一定程度上也可能生成这些内容。以下是当提示为捷克语时模型输出的示例:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Milos/slovak-gpt-j-162M")
model = AutoModelForCausalLM.from_pretrained("Milos/slovak-gpt-j-162M")
prompt = "Věta nesmí být sprostá a musí být zcela"
encoded_input = tokenizer(prompt, return_tensors='pt')
output = model.generate(**encoded_input, max_length=16)
print(tokenizer.decode(output[0]))
📚 详细文档
引用和相关信息
这是2021年夏天的一个兼职项目,目的是更好地理解Transformer。由于当时没有太多空闲时间将其正确开源,所以这些内容一直放在我的硬盘上,直到现在。根据该模型的受欢迎程度和关注度,我可能会发布能力更强的斯洛伐克GPT - J模型的更大版本。
如果您使用了这个模型或有任何相关问题,请随时通过Twitter联系我,或查看我的GitHub资料。
BibTeX引用
若要引用此模型:
@misc{slovak-gpt-j-162m,
author = {Kondela, Milos},
title = {{Slovak GPT-J-162M}},
howpublished = {\url{https://huggingface.co/Milos/slovak-gpt-j-162M}},
year = 2022,
month = February
}
若要引用训练此模型的代码库:
@misc{mesh-transformer-jax,
author = {Wang, Ben},
title = {{Mesh-Transformer-JAX: Model-Parallel Implementation of Transformer Language Model with JAX}},
howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},
year = 2021,
month = May
}
致谢
本项目得到了TPU研究云(TRC)计划的慷慨支持。同时也要感谢Ben Wang和出色的EleutherAI社区。
📄 许可证
本项目采用GPL - 3.0许可证。