Closed6

OpenCALMをSFTTrainerでフルファインチューニングしてポジティブコメントを生成する

Koichiro MoriKoichiro Mori

https://note.com/npaka/n/n104d79e6e7d2

概要

  • OpenCALM-smallモデルをmultilingual-sentimentsの感情データでFine-tuningする
  • モデルの生成テキストをポジティブあるいはネガティブなものに変える
  • テキストそのものをそのまま与えてLMとして訓練する
  • QLoRAではないのでモデルの全パラメータがチューニング対象(小さなモデルでもGPUメモリをかなり使う)
Koichiro MoriKoichiro Mori

結果

  • 「この映画は」の続きの文章を生成させる
  • ポジティブな文章データセットでチューニングするとポジティブな感想が生成されるようになった

この映画は、とてもいい映画です。 見ていて癒されます。 特に登場人物のキャラがすごくいいです! 設定も、世界観も、全部好きです。 こういう作品に出会えてよかったです。 ありがとうございました。 今後も楽しみにしています。 ★★★★★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆`

  • ネガティブな文章データセットでチューニングするとネガティブな感想が生成されるようになった

この映画は、映画館で観たら、何の役にたっているのか全くわからない。 説明文に「鑑賞後に映像を観る前の感覚」とあるので、これは、上映後の映画の楽しみ方として理解できます。 ちなみに、この作品で主人公が演じたのは、映画館で観るのをやめた、まったくの別人。 映画館で見るのを

Koichiro MoriKoichiro Mori

訓練コード

https://colab.research.google.com/drive/1I-cpxv8TFnrq3WO2NU7SfTkMkO9FMK1Z?usp=sharing

# 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()
Koichiro MoriKoichiro Mori

NEXT

  • 元のモデルがいまいちなので映画に関係しない感想が出力されることがあった
  • Llama3のような大きなモデルでも試してみたいがフルファインチューニングは無理かもしれない(QLoRAを使う)
このスクラップは5ヶ月前にクローズされました