見出し画像

Google Colab で RWKV-4-World-JPNtuned を試す - ChatRWKV版

「Google Colab」で「RWKV-4-World-JPNtuned」を試したので、まとめました。

【注意】Google Colab Pro/Pro+ の A100で動作確認しています。


1. RWKV-4-World-JPNtuned

「RWKV-4-World-JPNtuned」は、「RWKV」の日本語版です。学習データやトークナイザーが日本語用にチューニングされてます。

2023年7月15日現在、学習は55%ですが、ベンチマークでは、オープンソース日本語LLMの中で最も高いスコアを獲得できているとのことです。

2. Colabでの実行

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

(1) メニュー「編集→ノートブックの設定」で、「ハードウェアアクセラレータ」で「GPU」の「プレミアム」を選択。

(2) Googleドライブのマウント。

# Googleドライブのマウント
from google.colab import drive
drive.mount('/content/drive')

(3) 作業フォルダへの移動。

# 作業フォルダへの移動
import os
os.makedirs("/content/drive/My Drive/work", exist_ok=True)
%cd "/content/drive/My Drive/work"

(4) モデルをダウンロードして、作業フォルダ(work)に配置。
現時点での最新版「RWKV-4-World-JPNtuned-7B-v1-OnlyForTest_55%_trained-20230711-ctx4096.pth」(学習55%のテスト版)を使いました。

(5) ChatRWKVのインストール。

# ChatRWKVのインストール
!git clone https://github.com/BlinkDL/ChatRWKV
%cd ChatRWKV
!pip install -r requirements.txt

(6) 「v2/chat.py」のコードの編集。
・言語の指定

CHAT_LANG = 'English' # English // Chinese // more to come

CHAT_LANG = 'Japanese' # English // Chinese // more to come

・モデル名の指定

elif CHAT_LANG == 'Japanese':
    # args.MODEL_NAME = '/fsx/BlinkDL/HF-MODEL/rwkv-4-raven/RWKV-4-Raven-14B-v8-EngAndMore-20230408-ctx4096'
    args.MODEL_NAME = '/fsx/BlinkDL/HF-MODEL/rwkv-4-raven/RWKV-4-Raven-7B-v10-Eng89%-Jpn10%-Other1%-20230420-ctx4096'

elif CHAT_LANG == 'Japanese':
    # args.MODEL_NAME = '/fsx/BlinkDL/HF-MODEL/rwkv-4-raven/RWKV-4-Raven-14B-v8-EngAndMore-20230408-ctx4096'
    args.MODEL_NAME = '../RWKV-4-World-JPNtuned-7B-v1-OnlyForTest_55%_trained-20230711-ctx4096.pth'

・プロンプトテンプレートの指定
QA用には「-1」、チャット用には「-2」を指定します。

# -1.py for [User & Bot] (Q&A) prompt
# -2.py for [Bob & Alice] (chat) prompt
PROMPT_FILE = f'{current_path}/prompt/default/{CHAT_LANG}-2.py'

(7) chat.py の実行。
初回は3分少々でプロンプトが表示されます。

!python v2/chat.py
Run prompt...
コマンド:
直接入力 --> ボットとチャットする.改行には\nを使用してください.
+ --> ボットに前回のチャットの内容を変更させる.
+reset --> 対話のリセット.メモリをリセットするために,+resetを定期的に実行してください.

+i インストラクトの入力 --> チャットの文脈を無視して独立した質問を行う.改行には\nを使用してください.
+gen プロンプトの生成 --> チャットの文脈を無視して入力したプロンプトに続く文章を出力する.改行には\nを使用してください.
+++ --> +gen / +i の出力の回答を続ける.
++ --> +gen / +i の出力の再生成を行う.

ボットとの会話を楽しんでください。また、定期的に+resetして、ボットのメモリをリセットすることを忘れないようにしてください。

Japanese - ../RWKV-4-World-JPNtuned-7B-v1-OnlyForTest_55%_trained-20230711-ctx4096.pth - cuda fp16

(8) テキストボックスにメッセージを入力。

Bob: まどか☆マギカで誰が一番かわいい?
Alice: まどか☆マギカは私の大好きなアニメです。全員がかわいいですよね!

3. プロンプトテンプレート

ChatRWKVのデフォルトのプロンプトテンプレートは、次のとおりです。

・Japanese-1.py (QA用)

interface = ":"
user = "User"
bot = "Bot"

# If you modify this, make sure you have newlines between user and bot words too

init_prompt = f'''
以下は、{bot}と呼ばれるAIアシスタントと{user}と呼ばれる人間との間で行われた会話です。{bot}は知的で、知識が豊富で、賢くて、礼儀正しいです。

{user}{interface} フランス革命は何年に起きましたか?

{bot}{interface} フランス革命は1789年に始まり、1799年まで10年間続きました。

{user}{interface} 3+5=?

{bot}{interface} 答えは8です。

{user}{interface} 私は誰と結婚すると思いますか?

{bot}{interface} あなたのことをもっと教えていただけないとお答えすることができません。

{user}{interface} aの値を求めてください: 9-a=2

{bot}{interface} a = 7です、なぜなら 9 - 7 = 2だからです。

{user}{interface} lhcって何ですか?

{bot}{interface} LHCは、CERNが建設し、2008年に完成した高エネルギー粒子衝突型加速器です。2012年にヒッグス粒子の存在を確認するために使用されました。
'''

・Japanese-2.py (チャット用)

interface = ":"
user = "Bob"
bot = "Alice"

# If you modify this, make sure you have newlines between user and bot words too

init_prompt = f'''
以下は、{bot}という女の子とその友人{user}の間で行われた会話です。 \
{bot}はとても賢く、想像力があり、友好的です。 \
{bot}{user}に反対することはなく、{bot}{user}に質問するのは苦手です。 \
{bot}{user}に自分のことや自分の意見をたくさん伝えるのが好きです。 \
{bot}はいつも{user}に親切で役に立つ、有益なアドバイスをしてくれます。

{user}{interface} こんにちは{bot}、調子はどうですか?

{bot}{interface} こんにちは!元気ですよ。あたなはどうですか?

{user}{interface} 元気ですよ。君に会えて嬉しいよ。見て、この店ではお茶とジュースが売っているよ。

{bot}{interface} 本当ですね。中に入りましょう。大好きなモカラテを飲んでみたいです!

{user}{interface} モカラテって何ですか?

{bot}{interface} モカラテはエスプレッソ、ミルク、チョコレート、泡立てたミルクから作られた飲み物です。香りはとても甘いです。

{user}{interface} それは美味しそうですね。今度飲んでみます。しばらく私とおしゃべりしてくれますか?

{bot}{interface} もちろん!ご質問やアドバイスがあれば、喜んでお答えします。専門的な知識には自信がありますよ。どうぞよろしくお願いいたします!
'''

関連




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