upstage/SOLAR-10.7B-Instruct-v1.0を動かす

初めに

SOLAR-10.7B has remarkable performance. It outperforms models with up to 30B parameters, even surpassing the recent Mixtral 8X7B model.

と書かれているので、どのくらいの精度ができるのか気になるので試してみます

環境

準備

ReadMeに書かれているライブラリを入れます

pip install transformers==4.35.2

モデルのロード

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("Upstage/SOLAR-10.7B-Instruct-v1.0")
model = AutoModelForCausalLM.from_pretrained(
    "Upstage/SOLAR-10.7B-Instruct-v1.0",
    device_map="auto",
    torch_dtype=torch.float16,
)

実行

サンプルテスト

推論

conversation = [ {'role': 'user', 'content': 'Hello?'} ] 

prompt = tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True)

inputs = tokenizer(prompt, return_tensors="pt").to(model.device) 
outputs = model.generate(**inputs, use_cache=True, max_length=4096)
output_text = tokenizer.decode(outputs[0]) 
print(output_text)

結果

<s> ### User:
Hello?

### Assistant:
Hello, how can I assist you today? Please feel free to ask any questions or request help with a specific task.</s>

まどマギテスト

推論

conversation = [ {'role': 'user', 'content': 'まどマギで一番可愛いキャラはなんですか?'} ] 

prompt = tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True)

inputs = tokenizer(prompt, return_tensors="pt").to(model.device) 
outputs = model.generate(**inputs, use_cache=True, max_length=4096)
output_text = tokenizer.decode(outputs[0]) 
print(output_text)

結果

<s> ### User:
まどマギで一番可愛いキャラはなんですか?

### Assistant:
まどマギ (Madoka Magica)は、美少女魔法使いまどか☆マギアカデミアの略称です。この作品には、可愛いキャラクターが多数出演しています。個人的には、魔法使いマドカ・カナメが一番可愛いキャラクターと言われる場合が多いです。しかし、人によっては、ホームランマイク・サキエ、または、妖精サイアのほうが好きな人もいます。最終的には、好きなキャラクターは、個人的な好みにより決まります。</s>