QEUR23_PHI2SFT14: Reasoningの予備学習を始めましょう
~ まさに、これはBONSAIですね。 ~
・・・ 前回のつづきになります ・・・
QEU:FOUNDER : “まずは、データセット中のReasoningの一部に少しだけ手を入れてみましょう。以下のようなReasoningの学習データを作成しました。”
D先生(設定年齢65歳) : “えっ?こんなプロンプトの構造にするんですか?いままでのプロンプトの構造と全然ちがうじゃないですか?”
QEU:FOUNDER(設定年齢65歳) : “いや・・・。我々の大先生であるArtificialThinker(↑)がそのようにやっているので、それをさしあたり踏襲しているだけですよ。あと、このようにプロンプトの差異への対応については、AIの「主人公」を切換えていくしかないですね。”
---
sys_message_AIassistant = "You are an AI assistant who is good at providing answers in multiple languages. Even if your users ask questions in Japanese or Chinese, you will translate them into Eng-lish to answer. You will answer appropriately by referring information called Reasoning."
sys_message_AIassistant = "あなたは、複数の言語で回答を提供するのが得意な AI アシスタントです。 ユーザーがJ語やC語で質問しても、それをE語に翻訳して回答します。 あなたは、Reasoningという参考情報を読みながら適切に回答します。"
---
sys_message_translator = "You are translator who is fluent in multiple languages.You will answer appropriately by referring information called Reasoning."
sys_message_translator = "あなたは、複数の言語を流暢に使いこなす通訳です。 あなたは、Reasoningという参考情報を読みながら適切に回答します。"¶
---
sys_message_creator = "You are creator who create amazing content with your free ideas. You at-tract readers with your beautiful writing such as novel or advertisement. Even if users ask questions in Japanese or Chinese, you will translate their instructions into English to answer properly. You will answer appropriately by referring information called Reasoning."
sys_message_creator = "あなたは、自由な発想で今までにないコンテンツを生成することができるクリエーターです。あなたは、小説や広告など、美しい文章で読者を未了します。ユーザーがJ語やC語で質問しても、それをE語に翻訳して回答します。 あなたは、Reasoningという参考情報を読みながら適切に回答します。"
---
sys_message_logician = "You are an excellent logician and are instructing users on \"thinking proce-dures for providing better quality reasoning to user-provided questions.\". "
sys_message_logician = "あなたは優秀な論理学者で、「ユーザーが提供した質問に対してより質の高い推論を提供するための思考手順」をユーザーに指導しています。"
---
D先生(設定年齢65歳) : “なるほど、システムプロンプトを切り替えていくわけですね。このやりかたが(結果として)うまく行くかどうかはさておき、対策の考え方としては、このようにするしかないですね。”
QEU:FOUNDER(設定年齢65歳) : “じゃあ、プログラムをドン!今回、大きく変わった部分だけですよ。”
# ------
# 基本プロンプトは以下の通り(reasoning is all you need.)
#<|system|>sys_message\n<|prompt|>prompt\n<|reasoning|>reasoning\n<|response|>response<|endoftext|>
# ------
# プロンプト変換用の関数(AIassistant)
def format-ting_for_AIassistant(text_begining,text_medium,reasoning,transformed_input,response,language):
# ---
#"category": open_qa,closed_qa,classification,creative,translation,reasoning,brainstorm,q_to_q_
#"language": English,Japanese,Chinese
#"field": "technology,culture,math,other,travel,economy,language,history,nature,creative",
#"flag": AI assistant, creator, logician, translator
# ---
if language == "English":
text_all = f'''
{text_begining}<|reasoning|>{reasoning}\n{text_medium}<|response|>{response}<|endoftext|>
'''
else:
text_all = f'''
{text_begining}<|reasoning|>{reasoning}\n{text_medium}<|transformed_input|>{transformed_input}\n<|response|>{response}<|endoftext|>
'''
return text_all
# ------
# プロンプト変換用の関数(creator)
def format-ting_for_creator(text_begining,text_medium,reasoning,transformed_input,response,language):
# ---
if language == "English":
text_all = f'''
{text_begining}<|reasoning|>{reasoning}\n{text_medium}<|response|>{response}<|endoftext|>
'''
else:
text_all = f'''
{text_begining}<|reasoning|>{reasoning}\n{text_medium}<|transformed_input|>{transformed_input}\n<|response|>{response}<|endoftext|>
'''
return text_all
# ------
# プロンプト変換用の関数(translator)
def formatting_for_translator(text_begining,text_medium,reasoning,response):
# ---
text_all = f'''
{text_begining}<|reasoning|>{reasoning}\n{text_medium}<|response|>{response}<|endoftext|>
'''
return text_all
# ------
# プロンプト変換用の関数(logician)
def formatting_for_logician(text_begining,text_medium,reasoning):
# ---
text_all = f'''
{text_begining}{text_medium}<|reasoning|>{reasoning}<|endoftext|>
'''
return text_all
# ------
# 基本プロンプトは以下の通り(reasoning is all you need.)
#<|system|>sys_message\n<|prompt|>prompt\n<|reasoning|>reasoning\n<|response|>response<|endoftext|>
# ------
# プロンプト変換用の関数(Batch: For Reasoning)
def formatting_prompts_func(examples):
# ---
sys_message_AIassistant = "You are an AI assistant who is good at providing answers in multiple languages. Even if your users ask questions in Japanese or Chinese, you will translate them into Eng-lish to answer. You will answer appropriately by referring information called Reasoning."
sys_message_translator = "You are translator who is fluent in multiple languages.You will answer appropriately by referring information called Reasoning."
sys_message_creator = "You are creator who create amazing content with your free ideas. You at-tract readers with your beautiful writing such as novel or advertisement. Even if users ask questions in Japanese or Chinese, you will translate their instructions into English to answer properly. You will answer appropriately by referring information called Reasoning."
sys_message_logician = "You are an excellent logician and are instructing users on \"thinking pro-cedures for providing better quality reasoning to user-provided questions.\". "
# ---
output_text = []
for i in range(len(examples["instruction"])):
# ---
instruction = examples["instruction"][i]
input_text = examples["input"][i]
# ---
category = examples["category"][i]
language = examples["language"][i]
field = examples["field"][i]
flag = examples["flag"][i]
#"category": open_qa,closed_qa,classification,creative,translation,reasoning,brainstorm,q_to_q_
#"language": English,Japanese,Chinese
#"field": "technology,culture,math,other,travel,economy,language,history,nature,creative",
#"flag": AI assistant, creator, logician, translator
# ---
reasoning = examples["reasoning"][i]
# ---
transformed_input = examples["transformed_input"][i]
response = examples["output"][i]
# ---
# システムメッセージを選択する
if flag == "logician":
sys_message = sys_message_logician
elif flag == "creator":
sys_message = sys_message_creator
elif flag == "translator":
sys_message = sys_message_translator
else:
sys_message = sys_message_AIassistant
# ---
# プロンプトの初めの部分を作成する
if len(input_text) >= 2:
text_begining = f'''
<|system|>{sys_message}\n<|instruction|>{instruction}\n<|context|>{input_text}\n
'''
text_medium = f'''
<|category|>{category}\n<|field|>{field}\n<|flag|>{flag}\n<|language|>{language}\n
'''
else:
text_begining = f'''
<|system|>{sys_message}\n<|instruction|>{instruction}\n
'''
text_medium = f'''
<|category|>{category}\n<|field|>{field}\n<|flag|>{flag}\n<|language|>{language}\n
'''
# ---
# システムメッセージを選択する
if flag == "logician":
text = formatting_for_logician(text_begining,text_medium,reasoning)
elif flag == "creator":
text = format-ting_for_creator(text_begining,text_medium,reasoning,transformed_input,response,language)
elif flag == "translator":
text = formatting_for_translator(text_begining,text_medium,reasoning,response)
else:
text = format-ting_for_AIassistant(text_begining,text_medium,reasoning,transformed_input,response,language)
# ---
output_text.append(text)
return output_text
D先生(設定年齢65歳) : “いやいや・・・。これは、「主人公」に応じてプロンプトの構造が全然かわったんですね。あと、前回は翻訳機能が退化しましたが、今回は対策を打っていますね(笑)。”
QEU:FOUNDER : “E語のプロンプトには、中間翻訳はいらないですからね。いやいや、ArtificialThinkerってE語のみのAIだけど、我々のモデルは対応すべき言語がはるかに複雑なんですよ。さて、例によってMITライセンスについて、ちょっとだけ宣伝をしておきます。今回は、全部の公開された内容がMITライセンスになります。なにしろ、肝心のPHI-2モデルがMITなので・・・。PHI-2は、いいモデルですよ。ホントに・・・。”
(重要:MITライセンスへのリンク:これからは、ず~っと使うよ)
QEU:FOUNDER(設定年齢65歳) : “じゃあ、学習結果をみてみましょう。学習損失なんだけど、またもや驚くよ。ホラ・・・。”
D先生(設定年齢65歳) : “またもやの「大勝利」ですね。じゃあ、推論(inference)の結果もかなりよくなるんでしょうね。”
QEU:FOUNDER : “うん・・・。これでopen_qa類の推論も大勝利ですね。”
D先生(設定年齢65歳) : “なにか、他になんか「変な技」を使ったんでしょう・・・(笑)?”
QEU:FOUNDER : “実は学習データのReasoningの文もかなりいじりました。ただし、ここらへんは今後も変わっていくので、今回は紹介しません。Reasoningには別に最適の答えはないですからね。自分なりに、好きなことを書けばいいだけですよ。それで、肝心のReasoningの推論の件ですが・・・。”
D先生 : “あれ?ダメダメですか?”
QEU:FOUNDER : “まあ、これはしようがないですよ。Reasoning出力の初回だし・・・。素直に、ほかと同様に、「Responseとして出力」したほうがよかったですね。もともと、J語を入力文とする場合には、そうせざる得ないし・・・。”
D先生 : “我々は、G社のようにエレガントな仕組みを考えられませんからね。バタバタするのはやむを得ないですね。”
QEU:FOUNDER : “じゃあ、引き続きReasoningの生成をレベルアップしましょう。つきましては、カンパのご検討をください。”
>寄付のお願い(click here)<
D先生: “E語でいうと「Buy me a cup of coffee」です。”
~ まとめ ~
・・・ 前回のつづきです ・・・
QEU:FOUNDER : “あの当時のIT製品の魅力って、コレ(↓)とおなじです。”
C部長 : “あの時代の、ちょっと前あたりから、「単に便利になるモノというものは、魅力が薄れちゃった」んですよね。”
QEU:FOUNDER : “・・・というのか、必要な(便利になる)モノは1980年代に一通りそろっちゃったんです。そこで、さらに購入が必要なモノは「自らを変えることができる」ものなんです。今回のQEUプロジェクトは、そこら辺を目指すことになるんでしょうね。それが、QEUシステムにおける価値(Value)の正体です。”
(モノの価値とは)
- (生活が、仕事が)便利になる
- 自分を変えることができる
- モノがあると快適、楽しい
- 条件付け(広告、ハラスメント)
C部長 : “あら?ここでも、例によってハラスメントが出ますか・・・(笑)。そういえば、FOUNDER・・・。今回のBONSAIプロジェクトって、やっていて面白いですか?”
QEU:FOUNDER : “学習作業って、すんごく面白いよ。まさにBONSAIの感覚です。自分がAIに対してやったことに対して、AIから答えがビンビン来ます。はっきりいって、今回のBONSAIプロダクトにない価値は、先ほどの項目のうち「条件付け」だけですよ。”
C部長 : “なんです?「条件付け」って?”
QEU:FOUNDER : “通俗道徳で攻める。「え~っつ?まだやってないの?だっさ~い!」という感じで・・・。”
C部長 : “やれやれ・・・。”
コメント
コメントを投稿