QEUR23_PHI2SFT8: 閑話休題~LLM学習(Finetuning)で検証データを追加する
~ いやぁ、しかし・・・。今回はゆるいねえ・・・。 ~
QEU:FOUNDER(設定年齢65歳) : “じゃあ、つぎは検証データ(_eval)のデータセットを準備したのでつかってみましょう。”
(Evaluationデータ)
D先生(設定年齢65歳) : “ちなみに、いままでは学習用データセット(_train)のみでプログラムを動かしていました。でも、考えてみれば、いままでのやり方がおかしかったわけで・・・。”
(Trainデータ)
QEU:FOUNDER(設定年齢65歳) : “それでも、インターネットで調べてみると、ほとんど皆が普通にtrainのみでSFT学習していますよ。ちなみに、今回の場合には、以下のプログラムの一部分のみがかわります。”
trainer = SFTTrainer(
model=model,
train_dataset=dataset_train,
eval_dataset=dataset_eval,
peft_config=peft_config,
max_seq_length= 2048,
tokenizer=tokenizer,
args=training_arguments,
formatting_func=formatting_prompts_func,
packing= False,
)
trainer.train()
QEU:FOUNDER : “今回もMITモデルです。我々の今回のプロジェクトは「ぜ~んぶ」ね・・・。”
(重要:MITライセンスへのリンク:これからは、ず~っと使うよ)
D先生 : “evalデータセットを使うと何が良くなるのか、HFの解説をいてもようわからんのよ・・・。・・・で、この学習結果はどうなりました?”
QEU:FOUNDER : “感覚的には、前回とほとんど変わっていません。おそらく、学習したデータが少しだけ増えただけのメリットでしょうね。”
D先生(設定年齢65歳) : “まあ、あまり期待せずに結果をみてみましょう。”
QEU:FOUNDER : “そういってもらえるとありがたい。まずは、我々のいうところの「推論方式A」をやってみましょう。”
# ---
pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=300)
result = pipe(prompt)
print(result[0]['generated_text'])
# ---
# プロンプトを生成する(推論タイプB)
def generate_text(query):
inputs = tokenizer(query,
return_tensors="pt",
return_attention_mask=False).to('cuda')
outputs = model.generate(**inputs, max_length=200)
text = tokenizer.batch_decode(outputs)[0]
return text
generated_text = generate_text(prompt)
print(generated_text)
(推論B)
QEU:FOUNDER : “ひとこと。「前回とほとんど変わらん」とも言えますね。じゃあ、他の質問をしてみましょう。ここでは、最終目標は「A国の首都を質問すること」がポイントです。そのときに、LLMはE語のモデル脳を使っているはずなので・・・。その前にJ国の首都を質問した場合を見てみるとこうなります(↓)。”
(推論のAタイプ)
(推論のBタイプ)
D先生 : “初めて「まともな答え」がでた・・・。たまたまとはいえ、これは感動です。”
QEU:FOUNDER(設定年齢65歳) : “じゃあ、A国の首都の場合は?”
(推論のAタイプ)
(推論のBタイプ)
D先生 : “あれ?またもや、C国語が出ている?前回で分かっていたとはいえ、Phi2のLLMモデルって言語(J-C)をより分ける能力がないんですね。”
QEU:FOUNDER : “そりゃそうでしょ?LLMモデルって、「機械学習で生成したトークン」だけをみているんだから・・・。次に、今までやっていなかった翻訳をやってみましょう。EからJです。翻訳って、あきらかに言語を意識しますからね。”
(推論のAタイプ)
(推論のBタイプ)
D先生 : “このLLMは、J語を出力するのは苦手ですね。しかも、Reasoningが間違っています。”
QEU:FOUNDER : “そう・・・、そのReasoningがポイントです。Reasoningを見ると、LLMモデルが何を考えているのかがわかるんです。つづいて、JからEの場合をやってみましょう。”
(推論のAタイプ)
(推論のBタイプ)
D先生 : “Reasoningを見てみるとLLMが誤解をしています。ただし、正しい答えを出している例もあります。”
QEU:FOUNDER : “D先生・・・。Reasoning(推論プロンプト)って、大事でしょう?”
D先生 : “Reasoningをうまく使うと、出力が安定化する期待が持てます。”
QEU:FOUNDER : “J語とC語を分離する必要もあるんです。道は長いなあ・・・。やりたいことがありすぎて、体がついていっていません。今回は、ゆる~いプロジェクトです。次に進めましょう。”
>寄付のお願い(click here)<
QEU:FOUNDER : “次はさらにデータセットを改善しましょう。道は遠いね・・・。”
~ まとめ ~
QEU:FOUNDER : “とうとう、C国が本気を出してきました。これ(↓)か・・・。”
C部長 : “A国のT社もガクブルでしょう・・・。突然T社の値下げとか、A社の撤退の意味が見えてきますね。”
QEU:FOUNDER : “ついでに言うと、こんなもの(↓)も見えました。C部長って、あの世代なの?”
C部長(設定は50台前半です) : “そうですが、何か・・・?”
QEU:FOUNDER : “今、君の会社の外ではこうなっているそうですよ。”
C部長 : “(ガクガク・・・、ブルブル・・・。)”
QEU:FOUNDER : “今日は、これぐらいにしましょう。C先生、気をつけて帰ってね・・・(笑)。”
コメント
コメントを投稿