Closed6
OpenCALMをSFTTrainerでフルファインチューニングしてポジティブコメントを生成する
概要
- OpenCALM-smallモデルをmultilingual-sentimentsの感情データでFine-tuningする
- モデルの生成テキストをポジティブあるいはネガティブなものに変える
- テキストそのものをそのまま与えてLMとして訓練する
- QLoRAではないのでモデルの全パラメータがチューニング対象(小さなモデルでもGPUメモリをかなり使う)
ベースモデル
- 小型のモデル
- 対話に特化したInstructモデルではない
データセット
- ポジティブ、ニュートラル、ネガティブな文章のセット
- 日本語の例文もある
結果
- 「この映画は」の続きの文章を生成させる
- ポジティブな文章データセットでチューニングするとポジティブな感想が生成されるようになった
この映画は、とてもいい映画です。 見ていて癒されます。 特に登場人物のキャラがすごくいいです! 設定も、世界観も、全部好きです。 こういう作品に出会えてよかったです。 ありがとうございました。 今後も楽しみにしています。 ★★★★★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆`
- ネガティブな文章データセットでチューニングするとネガティブな感想が生成されるようになった
この映画は、映画館で観たら、何の役にたっているのか全くわからない。 説明文に「鑑賞後に映像を観る前の感覚」とあるので、これは、上映後の映画の楽しみ方として理解できます。 ちなみに、この作品で主人公が演じたのは、映画館で観るのをやめた、まったくの別人。 映画館で見るのを
訓練コード
# SFTTrainerで学習
from trl import SFTTrainer
from transformers import TrainingArguments
# https://huggingface.co/docs/transformers/ja/model_sharing
training_args = TrainingArguments(
output_dir="open-calm-small-positive",
push_to_hub=True
)
# textのみを与えている
# デフォルトでは次のトークンを生成するCausalLMによる学習モードになるようだ
# https://qiita.com/m__k/items/23ced0db6846e97d41cd
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=train_dataset,
dataset_text_field="text",
max_seq_length=512,
args=training_args,
)
trainer.train()
trainer.push_to_hub()
NEXT
- 元のモデルがいまいちなので映画に関係しない感想が出力されることがあった
- Llama3のような大きなモデルでも試してみたいがフルファインチューニングは無理かもしれない(QLoRAを使う)
このスクラップは5ヶ月前にクローズされました