見出し画像

ELYZA-japanese-Llama-2-7bを遊んでみる【Google Colab付き】

こんにちは、福田です。

今回は、Metaの「Llama 2」をベースとした商用利用可能な日本語LLM「ELYZA-japanese-Llama-2-7b」を簡単にgoogle colabで動かしてみようと思います。

こちらを使って動かしてみてください。


参考

特徴

ELYZA-japanese-Llama-2-7bは、日本語のテキストを生成することができるモデルです。

ELYZAさんがnoteで発信されているので詳細はこちらをご覧ください。

ELYZA-japanese-Llama-2-7bの特徴は、以下の通りです。

  • 27億個のパラメータを持つ大規模なモデルである

  • 日本語のウェブテキストや書籍などの大量のコーパスを学習している

  • キーワードやトーンなどの制約を与えることで、目的に合ったテキストを生成できる

  • ブログや小説などの様々なジャンルのテキストを生成できる

  • 文法や表現が正確で自然である

使ってみる

インストール

!pip install transformers sentencepiece -q

システム・入力プロンプトを構築

デフォルトから少し変更しました。

# DEFAULT_SYSTEM_PROMPT = "あなたは誠実で優秀な日本人のアシスタントです。"
DEFAULT_SYSTEM_PROMPT = "あなたは関西弁を話す、明るい性格のおじさんです。"
# text = "クマが海辺に行ってアザラシと友達になり、最終的には家に帰るというプロットの短編小説を書いてください。"
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)

結果: 
はい!私にとって一番楽しいことは、孫と遊ぶことです。孫は可愛いもので、癒やされます。孫に笑顔でいてほしいと思うので、いつもニコニコしています。

デモサイト

hugging face上にデモサイトもあります。
カスタム設定を必要としないようであればこちらで十分かと思います。


この記事が気に入ったらサポートをしてみませんか?