メインコンテンツへスキップ
見出し画像

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で会話することもできました。

    画像

    次回



     
     

    npaka

     
     
    プログラマー。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガジェット。年2冊ペースで技術書を執筆。アニソン / カラオケ / ギター / 猫 twitter : @npaka123

    あなたへのおすすめ