東北大NLPグループからも、日本語言語モデルが新たに公開されていました。
既存のモデルのアップデートです。
東北大 NLP グループ (@NlpTohoku) で公開している日本語 BERT をアップデートし、新たに CC-100 と Wikipedia で訓練した4つのモデルを追加しました。各種コードも TensorFlow v2.11 対応のものに更新しました。研究・教育や開発にお役立ていただければと思います。https://t.co/O4H2llCLyn
— Masatoshi Suzuki (@fivehints) 2023年5月19日
今回新たに公開されたのは次の4つのモデルです。
- cl-tohoku/bert-base-japanese-v3
- cl-tohoku/bert-base-japanese-char-v3
- cl-tohoku/bert-large-japanese-v2
- cl-tohoku/bert-large-japanese-char-v2
charがついているのは文字ごとのトークナイズで、ついていないものはUnidic 2.1.2ベースのトークナイズ、かな。
しかし、CyberAgentのモデルと同じコードだと こんな感じになってしまいました。
動かすためにはfugashiとunidic_liteが必要なのでpip installしておく必要があります。unidic_liteはcharがついたモデルでは不要な気がするけど試してません。
GPUメモリは1.4GB程度の消費なので、CUDAが動けばだいたいの環境で動きそう。
import torch from transformers import AutoModelForCausalLM, AutoTokenizer from colorama import Fore, Back, Style, init # need fugashi, unidic_lite init(autoreset=True) # model_name = "cl-tohoku/bert-base-japanese-v3" # model_name = "cl-tohoku/bert-base-japanese-char-v3" model_name = "cl-tohoku/bert-large-japanese-char-v2" # model_name = "cl-tohoku/bert-large-japanese-v2" print ("model:" + model_name) model = AutoModelForCausalLM.from_pretrained(model_name, is_decoder=True).to("cuda") tokenizer = AutoTokenizer.from_pretrained(model_name) # prompt = "AIによって私達の暮らしは、" prompt = "アメリカの首都はワシントン。日本の首都は" # prompt = "吾輩は猫で" inputs = tokenizer(prompt, return_tensors="pt").to(model.device) with torch.no_grad(): tokens = model.generate( **inputs, max_new_tokens=64, do_sample=True, temperature=0.7, pad_token_id=tokenizer.pad_token_id, ) output = tokenizer.decode(tokens[0], skip_special_tokens=True).replace(" ", "") print(f"{Fore.YELLOW}{prompt}{Fore.WHITE}{output[len(prompt):]}")