最近は大規模言語モデルをいろいろと試してみている。今回はELYZA-japanese-Llama-2-7bを試してみる事にした。基本的には、ここで書かれている事をそのまま確認する。
https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype
"auto")= でモデルをダウンロードされる。貧弱なマシンだと、ここでダウンロードできなかったり、SIGKILLを受けて死んだりする。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
B_INST, E_INST = "[INST]", "[/INST]"
B_SYS, E_SYS = "<<SYS>>\n", "\n<</SYS>>\n\n"
DEFAULT_SYSTEM_PROMPT = "あなたは誠実で優秀な日本人のアシスタントです。"
text = "クマが海辺に行ってアザラシと友達になり、最終的には家に帰るというプロットの短編小説を書いてください。"
model_name = "elyza/ELYZA-japanese-Llama-2-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype="auto")
if torch.cuda.is_available():
model = model.to("cuda")
prompt = "{bos_token}{b_inst} {system}{prompt} {e_inst} ".format(
bos_token=tokenizer.bos_token,
b_inst=B_INST,
system=f"{B_SYS}{DEFAULT_SYSTEM_PROMPT}{E_SYS}",
prompt=text,
e_inst=E_INST,
)
with torch.no_grad():
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
output_ids = model.generate(
token_ids.to(model.device),
max_new_tokens=256,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
)
output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True)
print(output)
memo
東京大学発・ELYZA、GPT-3.5(text-davinci-003)匹敵、最高水準の日本語LLM https://ascii.jp/elem/000/004/153/4153052/
https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b
商用利用可能 https://huggingface.co/models?sort=trending&search=yarn&author=NousResearch