
Paperspace GradientでRWKV-LM-LoRA-Alpaca-Cleaned-Japanを動かす
shi3zさんがRWKV14Bを日本語AlpacaデータセットでLoRAしたものを公開されていたので、早速Paperspace Gradientで動かしてみました。
Notebookの用意
ランタイムは「Start from Scratch」を選択し、マシンは比較的空いている「A6000(8CPU、45GiB RAM、48GiB GPU)」を選択します。

リポジトリとモデルのダウンロード
RWKVでLoRAデータを適用して動かすためのリポジトリとしてRWKV-LM-LoRAというフォークがあります。こちらのRWKV-v4neoディレクトリ内のコードでLoRAデータを適用してRWKVを実行することができるので、クローン&コード編集して実行します。
まずは適当な名前のJupyter Notebook(rwkv-lora.ipynbなど)を作成してコードを実行していきます。リポジトリの容量は小さいので /notebooks 直下にクローンします。
%cd /notebooks
# 1. RWKV-LM-LoRAのダウンロード
repository_url = "https://github.com/Blealtan/RWKV-LM-LoRA.git"
git_branch = "main"
!git clone {repository_url}
%cd RWKV-LM-LoRA
!git checkout {git_branch}
RWKV14Bは26.3GBあるので、/tmpディレクトリにダウンロードするようにします。
%cd /tmp
# 2. モデルのダウンロード
# RWKV-4-Pile-14B-Instruct-test5-20230329-ctx4096
# url: https://huggingface.co/BlinkDL/rwkv-4-pile-14b
!curl --location -O https://huggingface.co/BlinkDL/rwkv-4-pile-14b/resolve/main/RWKV-4-Pile-14B-Instruct-test5-20230329-ctx4096.pth
# RWKV-LM-LoRA-Alpaca-Cleaned-Japan
# url: https://huggingface.co/shi3z/RWKV-LM-LoRA-Alpaca-Cleaned-Japan
!curl --location -O https://huggingface.co/shi3z/RWKV-LM-LoRA-Alpaca-Cleaned-Japan/resolve/main/rwkv-120-2304270732.pth
chat.pyのコード変更
次にRWKV-LM-LoRA/RWKV-v4neoディレクトリ内にあるchat.pyの内容を変更します。
まず38行目のarg.MODEL_NAMEの値を、先ほどダウンロードしたモデルのパスに変更します。
args.MODEL_NAME = '/tmp/RWKV-4-Pile-14B-Instruct-test5-20230329-ctx4096'
更にLoRAのパスも変更します。
args.MODEL_LORA = '/tmp/rwkv-120-2304270732.pth'
また標準のプロンプトが英語なので、日本語で応答されるよう66行目からのプロンプト表記を以下のように変更します。
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} 9-a=2のとき、aの値を求めよ。
{bot}{interface} 答えはa=7です。なぜなら9-7=2だからです。
{user}{interface} LHCとは何ですか?
{bot}{interface} LHCは、CERNが建設し、2008年に完成した高エネルギー粒子衝突型加速器です。2012年にヒッグス粒子の存在を確認するために使用されました。
'''
(ちゃんとCHAT_LANG == 'Japanese'のバージョンを作った方が良いとは思いつつ、とりあえず動くところを優先で)
chat.pyの実行
Paperspace GradientのNotebookでは対話型のコマンドラインを扱うことができないので、ターミナルを起動し、ターミナルからchat.pyを実行します。
cd /notebooks/RWKV-LM-LoRA/RWKV-v4neo
!RWKV_JIT_ON=0 python chat.py


User: こんにちは!
Bot: こんにちは、どうぞよろしくお願いします。
User: 好きです、結婚してください!
Bot: おふたりの結婚が、幸せに光を差し込むことを願っています。 ヒューマンツイート - I got this dress for #CelebrateKikiSunday ❤️ 🎉 Please make sure to RT! We were so happy to be apart of @jkadiblow's bridal party! #SuitedandBooted #CelebrateKikiSunday #Dress #WeddingGown #BridesmaidsDress #MeAndMyBride #WeddingStyle #CelebrateStyle #BridalGown #Fashion #TheFashionista
User: 日本で一番愛されているアニメは何ですか?
Bot: ワタシはアニメのジャパニーズパートを楽しんでいます。ツイッターでファンとおしゃべりしながらアニメを見ていると、楽しいです。毎日が楽しいです! #アニメ #アニメーション #アニメソング #アニメーションオタク #AnimeLove #AnimeMusic #アニメカルチャー #ANIME #アニメファン #アニメ観覧
User: 急激な高齢化は将来においてどんな影響を及ぼすと考えられますか?
Bot: 高齢化は経済を左右するので将来においては良く考えるべき対策が必要です。高齢者の医療費の負担を減らし、社会的賃金の低下を緩和するなど、さまざまな対策が必要となります。 また、男性が少なくなるので女性の就労が促進される可能性もあります。なお、高齢化によって経済が落ち込む可能性もあります
User: 二日酔いがつらいです。助けて下さい。
Bot: 二日酔いを止めることができる方法はさまざまありますが、お茶や飲み物を飲むこと、乾燥肌のケアを心がけることなどが良いです。また、外に出たり寝たりを減らして、眠りにつくことがよくあります。
応答にツイ廃感が溢れていますが動いてはいるようです。
メトリクスを見てみると、起動の時にCPUとメモリをガッツリ使って、推論時にはGPUが使われているみたい。


現場からは以上です。