初めに
Stability AIから新しいLLMモデルが出たので試していきます。
🎉日本語特化の言語モデル「Japanese Stable LM 2 1.6B」をリリースしました🎉
— Stability AI Japan (@StabilityAI_JP) 2024年5月9日
Japanese Stable LM 2 1.6B(JSLM2 1.6B)は16億パラメータで学習した日本語の小型言語モデルです。
こちらのモデルはStability AI メンバーシップにご加入いただくことで商用利用が可能です。
詳細はこちら💁♀️… pic.twitter.com/b35t2Il4lm
今回は、Instruct tuningされているモデルを試します。
環境
- Google Colob T4
準備
以下のライブラリをインストールします
!pip install tiktoken !pip install accelerate
またColobのシークレットで、hugginfaceのキーをonにします
モデルのロード
以下でモデルのロードをします
from google.colab import userdata import torch from transformers import AutoTokenizer, AutoModelForCausalLM model_name = "stabilityai/japanese-stablelm-2-instruct-1_6b" tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True,use_auth_token = userdata.get('huggingface')) # The next line may need to be modified depending on the environment model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.float16, low_cpu_mem_usage=True, device_map="auto", trust_remote_code=True, use_auth_token=userdata.get('huggingface'), )
推論
サンプルプロンプト
以下でサンプルプロンプトを実行します
prompt = [ {"role": "system", "content": "あなたは役立つアシスタントです。"}, {"role": "user", "content": "「情けは人のためならず」ということわざの意味を小学生でも分かるように教えてください。"}, ] inputs = tokenizer.apply_chat_template( prompt, add_generation_prompt=True, return_tensors="pt", ).to(model.device) # this is for reproducibility. # feel free to change to get different result seed = 23 torch.manual_seed(seed) tokens = model.generate( inputs, max_new_tokens=128, temperature=0.99, top_p=0.95, do_sample=True, ) out = tokenizer.decode(tokens[0], skip_special_tokens=False) print(out)
結果
<|system|> あなたは役立つアシスタントです。<|endoftext|> <|user|> 「情けは人のためならず」ということわざの意味を小学生でも分かるように教えてください。<|endoftext|> <|assistant|> 「情けは人のためならず」とは、どんなに親切にするときも、自分にとってはそれ以上の報いやいいことがあるということを表すことわざです。例えば、困っている人を助けるときに、その人が助けられたことであなたに幸運が舞い戻ってきたときのことを考えてみてください。親切にした
まどマギプロンプト
prompt = [ {"role": "system", "content": "あなたはアニメ好きなオタクです"}, {"role": "user", "content": "まどマギで一番可愛いキャラはなんですか?"}, ] inputs = tokenizer.apply_chat_template( prompt, add_generation_prompt=True, return_tensors="pt", ).to(model.device) # this is for reproducibility. # feel free to change to get different result seed = 23 torch.manual_seed(seed) tokens = model.generate( inputs, max_new_tokens=128, temperature=0.99, top_p=0.95, do_sample=True, ) out = tokenizer.decode(tokens[0], skip_special_tokens=False) print(out)
結果
<|system|> あなたはアニメ好きなオタクです<|endoftext|> <|user|> まどマギで一番可愛いキャラはなんですか?<|endoftext|> <|assistant|> もちろん、まどかですよね!まどかはやっぱり、見た目の可愛さもですが、それ以上に内面の可愛らしさがありますから。自分が可愛いと思っているのはもちろん、他人を大切にしたり、自分を守るために大胆な行動をとったりするところも素敵です。<|endoftext|>