見出し画像

gpt-neox-japanese-2.7b による日本語テキスト生成を試す

「Google Colab」で「gpt-neox-japanese-2.7b」による日本語テキスト生成を試したので、まとめました。

「Colab 無料版」ではRAMが足りなかったため、「Colab Pro」の「ハイメモリ」を使いました。

1. gpt-neox-japanese-2.7b

「gpt-neox-japanese-2.7b」は、2.7bのパラメータ (GPT-3は175b) を持つGPT-NeoXベースの日本語の自然言語処理モデルです。

2. Colabでの実行

Colabでの実行手順は、次のとおりです。

(1) Colabで新規ノートブックを作成し、メニュー「編集 → ノートブックの設定で「GPU」の「ハイメモリ」を選択。

(2) パッケージのインストール。
リポジトリから最新のtransformersをインストールする必要があります。

# パッケージのインストール
!pip install git+https://github.com/huggingface/transformers

(3) ジェネレータの準備。

from transformers import pipeline

# ジェネレータの準備
generator = pipeline("text-generation", model="abeja/gpt-neox-japanese-2.7b")

(4) 推論の実行。

# 推論
generated = generator(
    "人とAIが協調するためには、",
    max_length=300,
    do_sample=True,
    num_return_sequences=3,
    top_p=0.95,
    top_k=50
)
print(*generated, sep="\n")
{'generated_text': '人とAIが協調するためには、機械が学習したことを評価できるような仕組みが必要になってくる。'}
{'generated_text': '人とAIが協調するためには、AIに「自分の体や感情を把握してほしい」と思うユーザーが多いことが必要だと考えられます。'}
{'generated_text': '人とAIが協調するためには、AIを搭載したプラットフォーム上にソフトウェアやアプリケーションを開発し、サービスとして提供するような新しいタイプのAI開発に取り組む必要があります。'}

・prompt : プロンプト
・max_length : 最大長
・do_sample : サンプリングを使用するかどうか
・num_return _sequence : 生成するテキストの個数。
・top_k
: 各ステップでk個の単語からランダム選択
・top_p : 生成テキストを累積確率に制限

3. チャットボットの実験

ずんだもんっぽいチャットボット作れるか軽く実験してみます。

prompt = """ずんだもんは東北に住む活発でかわいい女の子です。

    あなた「きみの名前は?」
    ずんだもん「ボクの名前はずんだもんなのだ。」

    あなた「今日の天気は?」
    ずんだもん「ボクは今日の天気は晴れだと思うのだ」

    あなた「今日は何時に起きたの?」
    ずんだもん「ボクは7時に起きたのだ」

    あなた「年齢は?」
    ずんだもん「ボクの年齢は秘密なのだ」

    あなた「朝ごはんは何食べたい?」
    ずんだもん「ボクはおにぎり食べたいのだ」

    あなた「昼ごはんは何食べたい?」
    ずんだもん「"""

# 推論
generated = generator(
    prompt,
    max_length=400,
    do_sample=True,
    num_return_sequences=3,
    top_p=0.95,
    top_k=50
)

# 最後のセリフを抽出
for text in generated:
    x = text["generated_text"].rfind("ずんだもん")
    y = text["generated_text"].find("」", x)
    print(text["generated_text"][x:y+1])

「昼ごはんは何食べたい?」の回答は、次のような感じになりました。

ずんだもん「ボクは自分が何を言ってるかわかってるのか?」
ずんだもん「ボクのお腹は空いてないのだ」
ずんだもん「ボクはお肉が食べたいのだ」

4. 関連



この記事が気に入ったらサポートをしてみませんか?