見出し画像

text-generation-webui で Rinna・OpenCALM・RWKV を試す

「text-generation-webui」で「Rinna」「OpenCALM」「RWKV」を試したので、まとめました。

・Windows 11

1. text-generation-webui

text-generation-webui」は、大規模言語モデルを実行するためのWeb UIです。テキスト生成の「AUTOMATIC1111」になることを目標としています。

特徴は、次のとおりです。

・3つのインターフェイスモード (default, notebook, chat)
・モデルバックエンド (transformers, llama.cpp, AutoGPTQ, GPTQ-for-LLaMa, ExLlama, RWKV, FlexGen)
・ドロップダウンメニューによるモデル切り替え
・LoRA (ロード・アンロード・学習)
・プロンプトテンプレート (Alpaca, Vicuna, Open Assistant, Dolly, Koala, ChatGLM, MOSS, RWKV-Raven, Galactica, StableLM, WizardLM, Baize, Ziya, Chinese-Vicuna, MPT, INCITE, Wizard Mega, KoAlpaca, Vigogne, Bactrian, h2o, OpenBuddy)
・マルチモーダル (LLaVA, MiniGPT-4)
・bitsandbytes (8/4-bit量子化)
・CPU モード
(Transformerモデル)
・DeepSpeed ZeRO-3
・拡張機能
・カスタムチャットキャラクター
・テキストストリーミング
・Markdown出力
(GALACTICAなど)
・HTML出力
(GPT-4chan用)
・WebSocketストリーミング用エンドポイントを含むAPI

2. インストール

インストール手順は、次のとおりです。

(1) サイトから「oobabooga-windows.zip」をダウンロードして解凍し、C:¥直下に配置。
「ファイル名が長すぎます。」のエラーに遭遇したため、解凍後の「oobabooga-windowsフォルダ」をC:¥直下に置いてます。

(2) oobabooga-windowsフォルダ内の「start_windows.bat」の実行。
初回起動時は、MiniCondaおよびPythonのパッケージのインストールを行うため時間がかかります。インストール種別を聞かれたら、A (NVIDIA) を指定します。NVIDIAのGPUがない場合は D (CPUモード) で良さそうです。

A) NVIDIA
B) AMD
C) Apple M Series
D) None (I want to run in CPU mode)
Input> A

text-generation-webui」フォルダが生成されます。

(3) URLが表示されたらブラウザで開く。

Running on local URL:  http://127.0.0.1:7860

モデルがないため、まだ会話できませんが、UIを確認できます。

・Text generation タブ : テキスト生成
 ・chat : チャットUI
 ・chat-instruct : チャットUI + Instructionテンプレート使用
 ・instruct : Instructテンプレート使用
・Chat settings タブ : チャット設定
 ・チャットUIのキャラクターの設定
 ・Instructionテンプレートの設定
 ・チャット履歴の設定
・Parameters タブ : generate()のパラメータ設定
・Model タブ : モデルの設定
・Training タブ : LoRAの学習
・Inference mode タブ : 推論モード

3. RWKVとの会話

RWKVとの会話手順は、次のとおりです。

(1) コマンドプロンプトで「text-generation-webui/models」に移動し、モデルをgitでダウンロード。
このフォルダにHuggingFaceのモデルを配置します。今回は、「rwkv-raven-3b」をダウンロードします。

$ git lfs install
$ git clone https://huggingface.co/RWKV/rwkv-raven-3b

(2) 「Modelタブ」の「Model」で「rwkv-raven-3b」を選択。
表示されてないときは、更新ボタンを推します。

(3) 「Chat Settingsタブ」の「Instruction template」で「RWKV-Raven」が選択されていることを確認。

(4) 「Text generationタブ」で「Mode」で「Instruct」を選択して、「Input」にメッセージを入力。

4. OpenCALMとの会話

OpenCALMとの会話手順は、次のとおりです。

(1) コマンドプロンプトで「text-generation-webui/models」に移動し、gitでモデルをダウンロード
今回は、「open-calm-3b」をダウンロードします。

$ git lfs install
$ git clone https://huggingface.co/cyberagent/open-calm-3b

(2) 「Modelタブ」の「Model」で「open-calm-3b」を選択。
表示されてないときは、更新ボタンを推します。

(3) 「Chat Settingsタブ」の「Instruction template」で「RWKV-Raven」を選択。
「OpenCALM-3B」はベースモデルのため、ベースモデルも通用しそうな「RWKV-Raven」の「Alice/Bob」にしました。

(4) 「Text generationタブ」で「Mode」で「Instruct」を選択して、「Input」にメッセージを入力。

5. Rinnaとの会話

Rinnaとの会話手順は、次のとおりです。

(1) コードの修正し、「start_windows.bat」を再起動。
Rinnaはそのままでは動かなかったのでコードを修正します。

・mudules/models.py 105行目
models.pyのload_tokenizer()で、Rinna (japanese-gpt-neox-3.6b…) では、「use_fast=False」を使用するように変更します。

    elif model_name.startswith("japanese-gpt-neox-3.6b"):
        path_to_model = Path(f"{shared.args.model_dir}/{model_name}/")
        if path_to_model.exists():
            tokenizer = AutoTokenizer.from_pretrained(path_to_model,trust_remote_code=shared.args.trust_remote_code, use_fast=False)

・modules/text_generation.py 213行目
text_generation.pyのencode()で、Rinna (japanese-gpt-neox-3.6b…) では、「add_special_tokens=False」を指定するように変更します。

    input_ids = encode(question, add_bos_token=state['add_bos_token'], truncation_length=get_max_prompt_length(state))

    add_special_tokens = not shared.model_name.startswith("japanese-gpt-neox-3.6b")
    input_ids = encode(question, add_bos_token=state['add_bos_token'], truncation_length=get_max_prompt_length(state), add_special_tokens=add_special_tokens)

(2) コマンドプロンプトで「text-generation-webui/models」に移動し、gitでモデルをダウンロード
今回は、「japanese-gpt-neox-3.6b-instruction-ppo」をダウンロードします。

$ git lfs install
$ git clone https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-ppo

(3) 「Modelタブ」の「Model」で「 japanese-gpt-neox-3.6b-instruction-ppo」を選択。
表示されてないときは、更新ボタンを推します。

(4) 「Chat Settingsタブ」の「Instruction template」で以下のように設定し、保存ボタンで「Rinna」の名前で保存。

User string
ユーザー:

Bot string
システム:

Context


Turn template
<|user|> <|user-message|><NL><|bot|> <|bot-message|><NL>

(5) 「Text generationタブ」で「Mode」で「Instruct」を選択して、「Input」にメッセージを入力。


「Chat settings タブ」でチャットUIのキャラクターを設定することで、チャット風のUIで会話することもできました。

次回



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