日本語ファインチューニングされたLlama-3-8Bを MLX & Gradioで試してみる
Llama-3が発表されてすぐにPhi-3が登場してきて賑やかしい日々です。
そんななかLlama-3-8Bに対して日本語をファインチューニングしたモデルが登場しています。
現時点では以下の二つです。
llama-3のeosの設定が最初わかりませんでしたが、以下のmlxのコードで上手く行きました。(最後のスクリプト全体も掲載します)
model, tokenizer = load(モデル名, tokenizer_config={"eos_token":"<|eot_id|>"})
さて、それぞれのモデルに対して、同じ質問を同じ流れで聞いた回答を並べて提示します。Tempertureはいずれも0.8、生成tokenは512を指定します。
あなたは誰?
人生の意味を論じて
メタファーやアナロジーを用いて説明して
猫の視点で、猫の生きる意味を猫の語りで語って
ここまでの感じだと、lightblueのモデルの方が長ありそうです。
さて、この記事を書くためにHuggingfaceのリンクを確認したら、hazishienさんのファインチューニングした新しい以下のモデルが8時間前に出ていました。
試していないので、よかったら試してみてください。
最後に、上の生成のために動かしたプロンプトは下記です。loadのところで、model_1 あるいは model_2 を指定してください。
import gradio as gr
import time
from mlx_lm import load, generate
model_1 = "haqishen/Llama-3-8B-Japanese-Instruct"
model_2 = "lightblue/suzume-llama-3-8B-japanese"
model, tokenizer = load(model_2, tokenizer_config={"eos_token":"<|eot_id|>"})
def predict(message, history, token, temp_value):
prompt = []
for human, assistant in history:
prompt.append({'role': 'user', 'content': human})
prompt.append({'role': 'assistant', 'content': assistant})
prompt.append({'role': 'user', 'content': message})
inputs = tokenizer.apply_chat_template(prompt,
tokenize=False,
add_generation_prompt=True)
full_prompt = inputs
#print (f"入力される最終プロンプトはこんな感じ:\n{full_prompt}")
response = generate(model, tokenizer, prompt=full_prompt, temp = temp_value, max_tokens = token, verbose=False)
#return response.strip()
for i in range(len(response)):
time.sleep(0.05)
yield response[: i+1]
demo = gr.ChatInterface(predict,
title="llama-3-8Bの日本語ファインチューニングモデル",
description="",
additional_inputs=[
gr.Slider(100, 1024, value=512, label="Tokens"),
gr.Slider(0, 1, value=0.8, label="Temperture")
]
)
if __name__ == "__main__":
demo.launch()
#Llama -3 #大規模言語モデル #Huggingface #mlx #gradio #Macbookpro #ローカルLLM
いいなと思ったら応援しよう!
この記事を最後までご覧いただき、ありがとうございます!もしも私の活動を応援していただけるなら、大変嬉しく思います。