英文

japanese-gpt-neox-3.6b

概览

该存储库提供了一个拥有36亿参数的日语GPT-NeoX模型。

  • 该模型使用基于 EleutherAI/gpt-neox 的代码进行训练。

  • 模型架构

    一个由36层、2816隐藏单元的基于Transformer的语言模型。

  • 预训练

    模型在 Japanese CC-100 Japanese C4 、和 Japanese Wikipedia 上训练了约 3125亿 个标记,以优化传统的语言建模目标。

    最终达到了验证困惑度为 8.68。

  • 模型系列

    Variant Link
    3.6B PPO 1238321
    3.6B SFT-v2 1239321
    3.6B SFT 12310321
    3.6B pretrained 12311321
  • 作者

    Tianyu Zhao Kei Sawada

如何使用该模型

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-neox-3.6b")

if torch.cuda.is_available():
    model = model.to("cuda")

text = "西田幾多郎は、"
token_ids = tokenizer.encode(text, add_special_tokens=False, return_tensors="pt")

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=100,
        min_new_tokens=100,
        do_sample=True,
        temperature=0.8,
        pad_token_id=tokenizer.pad_token_id,
        bos_token_id=tokenizer.bos_token_id,
        eos_token_id=tokenizer.eos_token_id
    )

output = tokenizer.decode(output_ids.tolist()[0])
print(output)
"""西田幾多郎は、この「絶対矛盾的自己同一」を「世界の自己同一」と置きかえ、さらに西田哲学を出発点として「絶対無」を「世界の成立」に変え、世界と自己を一つの統一物とみなす哲学として展開する。この世界と自己は絶対矛盾的自己同一として同一の性質を有し、同じ働きをする。西田哲学においては、この世界と自己は矛盾しあうのではなく、同一の性質をもっている。この世界と自己は同一である。絶対"""

Tokenization

该模型使用了 sentencepiece 为基础的分词器。

  • 分词器的词汇表大小为32,000。
  • 它使用sentencepiece的字节回退功能,将未知的文本片段拆分为UTF-8字节片段,避免生成 <UNK> 标记。
  • sentencepiece的 --add_dummy_prefix 选项已关闭,因此不会自动在前面添加空格。
      print(tokenizer.tokenize("吾輩は猫である"))
      # ['吾', '輩', 'は', '猫', 'である']
      # instead of ['▁', '吾', '輩', 'は', '猫', 'である'] as in rinna/japanese-gpt-1b
    
  • sentencepiece的 --remove_extra_whitespaces 选项已关闭,保留前导、尾随和重复的空格。
      print(tokenizer.tokenize("  吾輩は  猫である   "))
      # ['▁', '▁', '吾', '輩', 'は', '▁', '▁', '猫', 'である', '▁', '▁', '▁']
      # instead of ['▁', '吾', '輩', 'は', '▁猫', 'である'] as in rinna/japanese-gpt-1b
    
  • 不要忘记将 use_fast=False 设置为使上述功能正常运行。
      good_tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b", use_fast=False)
      bad_tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b")
    
      print(good_tokenizer.decode(good_tokenizer.encode("გამარჯობა  吾輩は  猫である   ")))
      # 'გამარჯობა  吾輩は  猫である   </s>'
      print(bad_tokenizer.decode(bad_tokenizer.encode("გამარჯობა  吾輩は  猫である   ")))
      # 'გამარ[UNK]ობა 吾輩は 猫である </s>'
    

许可证

The MIT license