QEUR23_PHI2SFT22: llama3モデルベースのたたき台LLMエンジンを作る
~ 序盤終了! ~
QEU:FOUNDER(設定年齢65歳) : “さて、今回でマイルストーンに入るかね・・・。Creative系でのReasoningを作り上げたので、もう一度LLMモデルをSFT学習させましょう。この処置でCreative系のレスポンスを改善できるか・・・。”
D先生(設定年齢65歳) : “学習データセットの全体として、どの程度のReasoningがGroqで改造されたんですか?”
QEU:FOUNDER(設定年齢65歳) : “全体の3分の1もないです。それでも、相当Reasoningが改善されます。例によって、Unslothで学習します。リソースは、以下のように少なくなりました。”
D先生(設定年齢65歳) : “いま使っているGPUは15Gのメモリを持っているんでしょ?なんか、もったいないですよね。ポテンシャルを使いきれていない感じで・・・。”
QEU:FOUNDER(設定年齢65歳) : “今のコンテクスト長さの設定の値が2048になっているので、もうちょっと値を大きくしてもいいかもしれないね。まあ、それは次回のお楽しみにしましょう。例によって、推論の検証から・・・。ついでに、推論のプログラムの事例を紹介します。このプログラムのコピペで動くかどうかは、わかりません。自分で改造して、なんとかしてください。”
# ----
max_seq_length = 2048 # Choose any! We auto support RoPE Scaling internally!
dtype = None # None for auto detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+
load_in_4bit = True # Use 4bit quantization to reduce memory usage. Can be False.
import torch
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth_lora_model", # YOUR MODEL YOU USED FOR TRAINING
max_seq_length = max_seq_length,
dtype = dtype,
load_in_4bit = load_in_4bit,
)
FastLanguageModel.for_inference(model) # Enable native 2x faster inference
# -----
# 推論を行う
# ---
# システムメッセージの一覧
# ---
sys_message_AIassistant = "You are an AI assistant who is good at providing answers in multiple languages. 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. You will answer appropri-ately by referring information called '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.\". "
# ---
# AI assistant
# ---
# プロンプト変換用の関数(Individual: For Reasoning)
def create_prompts_func(examples, sys_message):
# ---
instruction = examples[0]
input_text = examples[1]
# ---
if len(input_text) >= 2:
text = f'''
<|system|>{sys_message}\n<|instruction|>{instruction}\n<|context|>{input_text}\n<|reasoning|>
'''
else:
text = f'''
<|system|>{sys_message}\n<|instruction|>{instruction}\n<|reasoning|>
'''
return text
# ---
# プロンプトを生成する(推論タイプA)
instruction = "Please answer the following Japanese instruction into English sentences."
input_text = "マイクロソフト社の本社はどこにありますか?"
# ---
# システムメッセージの選択
sys_message = sys_message_AIassistant
#sys_message = sys_message_translator
#sys_message = sys_message_creator
#sys_message = sys_message_logician
# ---
examples = [instruction, input_text]
prompt = create_prompts_func(examples, sys_message)
#print(prompt)
# ---
# プロンプトを生成する(推論タイプB)
# ---
def generate_text(query):
inputs = tokenizer(query,
return_tensors="pt",
return_attention_mask=True).to('cuda')
outputs = model.generate(**inputs, max_new_tokens = 400, use_cache = True)
text = tokenizer.batch_decode(outputs)[0]
return text
# ---
# (推論タイプB)
FastLanguageModel.for_inference(model) # Enable native 2x faster inference
generated_text = generate_text(prompt)
print("--- Unsloth - llama3(8b) ---")
print(generated_text)
QEU:FOUNDER(設定年齢65歳) : “まずは、ふつうの推論からいきましょう。”
D先生: “まあ、前回と同じです。8bモデルはこんなもんかと・・・。ついでに言うと、翻訳の実力も同じレベルですよね。スキップしてください。”
QEU:FOUNDER : “もしもし・・・。C語については、少しだけ言いたいことはあります。C語とJ語は、「書き言葉(漢字)」では近いので、意外とうまく変換されているようです。長期的には、C語の適用も視野に入ってくるのではと思っています。”
D先生: “ほう・・・、ちょっと意外な方向性ですね。では、いよいよCreativeコンテンツの生成をやってみましょう。”
QEU:FOUNDER : “やってみました。ちょっとびっくりするほどの出来だよ。”
QEU:FOUNDER : “なによりも、Reasoningの出来におどろかない!?”
D先生: “すごいですね。じゃあ、J語インプットではどうですか?”
QEU:FOUNDER : “残念!Reasoningがイケているが、J語応答がいまいち。これは、地アタマの問題です。”
D先生: “まあ、いままでの経緯を総括すると、今回のモデルはL3でのマイルストーンになりますね。序盤終了!”
QEU:FOUNDER : “まだ、「Question to Question」を試していないがね・・・。”
D先生 : “それは、BONSAIプロジェクトの中盤のお楽しみです。”
QEU:FOUNDER : “もし、ご興味があればこのモデルで遊んでみてください。あと、是非、カンパ(↓)をお願いします。”
>寄付のお願い(click here for buy me a cup of coffee)<
D先生: “皆さま、いっぱいの温かい「Buy me a cup of coffee」をいただけませんでしょうか。”
~ まとめ ~
・・・ 前回のつづきです ・・・
QEU:FOUNDER : “小生はリベラルさんたち(↑)の発想を必ずしも全面的に賛成しているわけじゃないんです。経済面は特にね・・・。”
C部長 : “へえ・・・。FOUNDERも変わったもんだ・・・。”
QEU:FOUNDER : “あのときは、J国って、もうすこしマシな状態だと思っていたのでアレでもうまく行くと思っていました。実は、あのときには、(J国のシステムは)すでに大炎上の状態だったんですね。小生の浅い見識に、深く反省をしております。さて、この世の中、先見性のある人はいるんですよね。もうちょっと、(あの方に)早めに出会えばよかった。”
C部長 : “そんなにすごい人って、いましたっけ?”
QEU:FOUNDER : “「通俗道徳という言葉(term)」を初めて教えてくれた人です。これを理解すると、すごく多くの謎が解けます。さらに、あのセンセに通じるんだよ。”
C部長 : “選挙(政治)と経済が深層で通じていることを教えてくれた、あの人・・・。”
QEU:FOUNDER : “すごいと思うわ。あの人は・・・。おっと、2人ともね・・・。とくに、このセリフ(↓)にはしびれたわ・・・。”
C部長 : “ストーリー・テラーという人がいますが、「ロジック・テラー」を得意にしている人もいるんですね。”
QEU:FOUNDER : “これを理解した前提でこの大先生(↑)をみると、よくわかる!”
C部長 : “たしかに、よくわかる!!”
- 古いおっさん(@QCサークル講話);「従業員の皆さんにはテレビを見てください。皆が同じように考えてください。」
- 古いオッサン(@車中、N社検査不正について): 「“検査不正”っていうのはなァ、(組織外に不正を)漏らしたヤツが悪いんだよ・・・」
- 古いオッサン(海外工場のあいさつにて、なんと201X年のセリフじゃ!):「私の使命はこの会社で終身雇用制を実現することにある・・・。」
QEU:FOUNDER : “そして、このセリフ(↑)もわかる!”
C部長 : “なにがわかるんですか?”
QEU:FOUNDER : “「あ~あ・・・、やっちゃった・・・。」って・・・。”
コメント
コメントを投稿