りんなが公開した文章生成モデル「GPT2」試してみた(ソース付き)
# machine_learning
先日株式会社りんなが、学習済みのGPT2のモデルを公開してくれていましたね!
環境
Docker環境で実行しています。
以下のように必要なライブラリをインストールしておきます。
FROM jupyter/scipy-notebook:4d9c9bd9ced0
RUN pip install transformers==4.5.0 sentencepiece==0.1.95 torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
※CPUで実行していますが、かなり重いので可能であればGPU環境で実行することが望ましいです。
実際に文章を生成してみた
モデルを読み込みます。
from transformers import T5Tokenizer, AutoModelForCausalLM
model_name = 'rinna/japanese-gpt2-medium'
tokenizer = T5Tokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
入力分をtoken化します。
input_text = "誰も到達していない人工知能の高みへ、ともに"
input_ids = tokenizer.encode(
input_text,
return_tensors="pt"
)
input_ids
モデルを実行して候補を取得します。
length = 100
temperature = 1.0
k = 0
p = 0.9
repetition_penalty = 1.0
num_return_sequences = 3
output_sequences = model.generate(
input_ids=input_ids,
max_length=length + len(input_text),
temperature=temperature,
top_k=k,
top_p=p,
repetition_penalty=repetition_penalty,
do_sample=True,
num_return_sequences=num_return_sequences,
)
output_sequences
tokenから文章へと変換します。
generated_sequences = []
for generated_sequence_idx, generated_sequence in enumerate(output_sequences):
print(f"=== GENERATED SEQUENCE {generated_sequence_idx + 1} ===")
generated_sequence = generated_sequence.tolist()
# Decode text
text = tokenizer.decode(generated_sequence, clean_up_tokenization_spaces=True)
total_sequence = (
input_text + text[len(tokenizer.decode(input_ids[0], clean_up_tokenization_spaces=True)) :]
)
generated_sequences.append(total_sequence)
するとこんなかんじで出力されるはずです!
エンジニア・研究者、科学者・技術者の集う大学である。また、超研究大国日本を支える大学として世界的にも有名である。 19年3月に発足した初の国立総合大学。学校教育法の改正により、平成25年4月から国立教育政策研究所(東京都教育大学)が運営主体となり、内容や名称を変更し、名称も「文京学院大学」と改める。 全国的にも高い知名度を持つ東京都’
‘誰も到達していない人工知能の高みへ、ともに 進んでいきましょう! 静岡大学のスタッフの皆様は「2ヶ月間で何をやって、何を目指すのか」を皆で議論しながらやってきたとのこと。当シンポジウムでの発表内容では、人工知能の高みには語れない深遠なる世界をぜひ体感してください。 ※「人工知能の未来を考えるシンポジウム」では、学生ならびに高校生の参加はできませんのでご注意ください。 国立情報学研究所がブースを設置して開催する説明会・体験会についてご紹介します。 昨年行われたイベントや参加’
こうやって学習済みのモデルを試せるようにしてくれているのは楽しくていいですね!
実際に業務等で使っていく際には課題が色々ありそうですが、アイデア次第で色々なことができそうな予感が漂ってます。