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

text-generation-webui で RinnaのLoRAファインチューニングを試す

    「text-generation-webui」で「Rinna」のLoRAファインチューニングを試したので、まとめました。

    前回

    LoRAファインチューニングを試す

    LoRAファインチューニングの手順は、次のとおりです。

    (1) 前々回と同じ手順で、Rinnaと会話できるように設定。
    今回は、Rinnaのベースモデル (rinna/japanese-gpt-neox-3.6b) を使いました。

    (2) 「Modelタブ」で「load-in-8bit」をチェックして、Rinnaモデルを再読み込み。

    画像

    (3) 「あかねと〜くデータセット」(dataset_plain.txt) をダウンロードして「training/datasets」フォルダに配置。
    今回は、EOSのないプレーンの方を使いました。

    (4) 「Training タブ」で「Name」にLoRAモデル名を指定し、「Override Existing Files」をチェック。
    今回は、LoRAモデル名を「akane」としました。「Override Existing Files」は学習時にLoRAモデルを上書き保存します。

    画像

    (5) 「Training タブ」の下端にある「Raw text file タブ」を選択し、「Text file」に「dataset_plain」(先程配置したデータセット)、「Hard Cut String」に「\n」を指定し、「Start LoRA Training」ボタンを押す。

    画像

    ・Text file : 学習する生のテキストファイル
    ・Hard Cut String : ハードカットする文字列 (デフォルト:\n\n\n)
    ・Overlap Length : チャンクをどの程度オーバーラップするか
    ・Prefer Newline Cut Length : チャンクカットを改行方向にシフトする最大文字数

    ボタン下にプログレスバーが表示されます。完了時には「loras」フォルダにLoRAモデルが出力されます。11分で完了しました。

    ◎ エラー対応
    コンソールに以下のエラーがでた場合、

    Traceback (most recent call last):
         :
      File "C:\oobabooga_windows\text-generation-webui\modules\training.py", line 462, in threaded_run
        trainer.train()
         :
    RuntimeError: unscale_() has already been called on this optimizer since the last update().

    以下の transformers をインストールすることで解決します (情報源)。

    pip install git+https://github.com/huggingface/transformers@de9255de27abfcae4a1f816b904915f0b1e23cd9

    (6) 「Model タブ」で、「LoRA (s) 」にLoRAモデル「akane」を追加し、「Apply LoRAs」ボタンを押す。
    Rinna (japanese-gpt-neox-3.6b) にAkaneのLoRAモデルがアタッチされます。

    画像

    ◎ エラー対応
    コンソールに以下のエラーがでた場合、

    Traceback (most recent call last):
        :
      File "C:\oobabooga_windows\text-generation-webui\modules\LoRA.py", line 81, in add_lora_to_model
        shared.model = PeftModel.from_pretrained(shared.model, Path(f"{shared.args.lora_dir}/{lora_names[0]}"), adapter_name=lora_names[0], **params)
        :
    TypeError: PeftConfig.__init__() got an unexpected keyword argument 'dtype'

    modules/LoRA.py の 80行目 にparams = {} を追加して、dtypeをパラメータを消すことで、ひとまず動くようになりました。

    (7) 「Chat settings タブ」でキャラクターアイコンと名前を設定。
    必須のものではないですが、雰囲気作りです。

    画像

    (8) 「Text generation タブ」で「Mode」に「chat-instruct」を選択し、「Input」でメッセージを入力。

    画像

    次回



     
     

    npaka

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

    あなたへのおすすめ