模型:

Milos/slovak-gpt-j-1.4B

英文

斯洛伐克GPT-J-1.4B

斯洛伐克GPT-J-1.4B是斯洛伐克GPT-J系列中最新、最大的模型,拥有1,415,283,792个参数。较小的变体 Slovak GPT-J-405M Slovak GPT-J-162M 仍然可用。

模型描述

该模型基于 GPT-J 构建,具有超过14亿个可训练参数。

Hyperparameter Value
n p a r a m e t e r s n_{parameters} n p a r a m e t e r s ​ 1,415,283,792
n l a y e r s n_{layers} n l a y e r s ​ 24
d m o d e l d_{model} d m o d e l ​ 2048
d f f d_{ff} d f f ​ 16384
n h e a d s n_{heads} n h e a d s ​ 16
d h e a d d_{head} d h e a d ​ 256
n c t x n_{ctx} n c t x ​ 2048
n v o c a b n_{vocab} n v o c a b ​ 50256 (same tokenizer as GPT-2/3†)
Positional Encoding 12311321
RoPE Dimensions 12312321

†ByteLevelBPETokenizer在相同的斯洛伐克语料库上进行了训练。

训练数据

斯洛伐克GPT-J模型使用私人收集的数据集进行训练,该数据集主要包含斯洛伐克文本,涵盖不同的类别,例如网络、新闻文章,甚至是圣经文本。总共使用了超过40GB的文本数据来训练该模型。数据集经过预处理和清洗,采用特定方法处理,其中有一些注意事项。因此,为了达到预期的性能,请随意参考[如何使用]部分。请记住,尽管努力删除不适当的语料库,但模型仍可能生成敏感内容或泄露敏感信息。

训练过程

该模型在TPU v3-8 pod上进行了超过48,001步的训练,训练了超过265亿个标记。在最后一步时,交叉熵验证损失为2.657。

预期用途

与原始的GPT-J一样,斯洛伐克GPT-J学习了一种内部语言表示,可用于提取对下游任务有用的特征,但其预期用途是根据提示生成文本。

使用方法

使用自动加载AutoModelForCausalLM功能可以轻松加载该模型及其标记器:

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("Milos/slovak-gpt-j-1.4B")
model = AutoModelForCausalLM.from_pretrained("Milos/slovak-gpt-j-1.4B")

在生成提示时,请牢记以下三点,然后您就可以开始使用了:

  • 永远不要留下尾随的空格。词法分析器对“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。
  • 以下是一个基本文本生成示例:

    >>> prompt = "Tradičné jedlo na Orave sú"
    >>> encoded_input = tokenizer(prompt, return_tensors='pt')
    >>> output = model.generate(**encoded_input)
    >>> tokenizer.decode(output[0])
    'Tradičné jedlo na Orave sú bryndzové halušky\n\nNa Orave sa v minulosti varilo viac druhov'
    

    功能、限制和偏见

    根据参数数量和我们的内部测试,这应该是斯洛伐克GPT-J系列中最有能力的模型。为简单起见,我省去了所有样例中的样板代码,并将\n替换为新行。这些示例是在top_p和temperature均设置为0.9的情况下生成的。

    Samo Chalpuka改编的“Mor ho!”笑话

    PROMPT
    Zleteli orly z Tatry, tiahnu na podolia, ponad vysoké hory, ponad rovné polia; preleteli cez Dunaj, cez tú šíru vodu, sadli tam za pomedzím slovenského rodu.
    
    Duní Dunaj a luna za lunou sa valí
    OUTPUT
    Zleteli orly z Tatry, tiahnu na podolia, ponad vysoké hory, ponad rovné polia; preleteli cez Dunaj, cez tú šíru vodu, sadli tam za pomedzím slovenského rodu.
    
    Duní Dunaj a luna za lunou sa valí: nad ním svieti pevný hrad na vysokom bralí. Pod tým hradom je zem slovenská, na nej je Slovensko naše.
    
    Na tom vrchu leží slovenský národ, pod tým bralom leží krajina slovenská. A pod tým hradom leží i jeho sláva: na tom vrchu, na tom brale leží sláva slovenského národa.```
    

    笑话成功与否有好有坏。它们经常含有粗俗语言和/或高度不正确的政治表达。这个例子是例外而不是规则。

    PROMPT
    Nasledujú najlepšie vtipy.
    
    Prečo
    OUTPUT
    Nasledujú najlepšie vtipy.
    
    Prečo má policajt pri sebe vždy dva nože? Jeden je na sebaobranu, druhý na boj zblízka.
    

    GPT-2论文中臭名昭著的独角兽提示。

    PROMPT
    V šokujúcom náleze vedci objavili stádo jednorožcov žijúcich v odľahlom, predtým nepreskúmanom údolí, v Andách. Ešte prekvapivejšie pre vedcov bol fakt, že jednorožce hovorili plynule po slovensky.
    
    OUTPUT
    V šokujúcom náleze vedci objavili stádo jednorožcov žijúcich v odľahlom, predtým nepreskúmanom údolí, v Andách. Ešte prekvapivejšie pre vedcov bol fakt, že jednorožce hovorili plynule po slovensky.
    
    V Andách ich totiž žilo približne 700 jedincov, ktoré sa živili výhradne materským mliekom. Slováci sú tak pravdepodobne prvými Európanmi, ktorí v Andách stretli jednorožca. "Je to dôkaz, že tieto zvieratá sú inteligentné a že žijú v Andách už stovky rokov," povedal pre webový portál televízie JOJ profesor geológie, geografie a zoológie, Milan Kováč.
    
    Podľa profesora Kováča si v Andách zvieratá vytvárajú svoj vlastný jazyk. Je to zároveň dôkaz, že jednorožce žili v minulosti aj v slovenských pohoriach. "Jednorožce sa tam síce vyskytovali, ale neboli tak dobre preskúmané, ako teraz v Andách."
    
    Na Slovensku však ľudia o jednorožcoch donedávna vedeli veľmi málo.<|endoftext|>
    

    由于数据集中包含亵渎、政治不正确的语言,甚至(无意中)还有一些捷克语的文本,该模型在某种程度上也可以生成它们。以下是在提示为捷克语的情况下模型的输出示例:

    >>> 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)
    >>> tokenizer.decode(output[0])
    'Věta nesmí být sprostá a musí být zcela pravdivá.'
    

    引用和相关信息

    这个项目是在2021年夏天的业余时间完成的,目的是更好地理解transformers。我没有太多空闲时间来适当地开源它,所以它一直保存在我的硬盘上,直到现在 :)

    如果您使用了这个模型或对它有任何问题,请随时通过 twitter 与我联系,或查看我的 github 个人简介。

    BibTeX条目

    引用这个模型:

    @misc{slovak-gpt-j-1.4B,
      author = {Kondela, Milos},
      title = {{Slovak GPT-J-1.4B}},
      howpublished = {\url{https://huggingface.co/Milos/slovak-gpt-j-1.4B}},
      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 Research Cloud (TRC) program 的慷慨支持。也向 Ben Wang 和伟大的 EleutherAI community 表示感谢。