« ^ »
所要時間: 約 1分

最近は大規模言語モデルをいろいろと試してみている。今回は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

分散する https://www.s.u-tokyo.ac.jp/ja/press/2022/7702/