背景
2023年10月31日、rinna株式会社がLlama2の日本語継続事前学習モデル「Youri 7B」を公開した。
rinna、Llama 2の日本語継続事前学習モデル「Youri 7B」を公開
目的
性能は高いが主たる学習データが英語のOSSと、追加の日本語の学習の組み合わせは、高い性能の日本語LLMを期待できる。ベンチマークスコアも公開されてnoteやblogで使用感が報告されているが、やはり自分の興味あるタスクでの性能が知りたいので試してみた。
環境
OS: Ubuntu20.04LTS
GPU: RTX A6000x2
miniconda, pipで構築
model: youri-7b-instruction-gptq(4bit量子化モデルも公開されている)
modelについては、公式サイトには下記の記述がある。
「Youri 7B Instruction」:日本語の一問一答に応える能力が高くベンチマークにおいて高いスコアを達成。
「Youri 7B Chat」:複数ターンの対話データを用いて追加学習しているため対話性能が高い。
結果
日本語がこなれていて、かなり良さそうな印象。量子化モデルのサイズは3.9GBでメモリ使用量は3GBとかなりコンパクト。
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。
### 指示:
次の文章について、日本人として回答してください
### 入力:
日本のおすすめの観光地はどこですか。理由とともに説明してください
### 応答:
日本の観光地はたくさんありますが、その中でも京都はおすすめです。京都は日本の古都として知られ、古い建物や寺院が多くあります。そのため、日本の歴史や文化に触れることができます。また、京都には清水寺や金閣寺、伏見稲荷大社など、日本を代表する観光地がたくさんあります。そして、京都には日本の四季を感じることができる場所もあります。例えば、嵐山や嵯峨野な
スクリプト
サンプルコードのプロンプト部分を変えてみた。
import torch
from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM
tokenizer = AutoTokenizer.from_pretrained("rinna/youri-7b-instruction-gptq")
model = AutoGPTQForCausalLM.from_quantized("rinna/youri-7b-instruction-gptq", use_safetensors=True)
instruction = "次の文章について、日本人として回答してください"
input = "日本のおすすめの観光地はどこですか。理由とともに説明してください"
prompt = f"""
以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。
### 指示:
{instruction}
### 入力:
{input}
### 応答:
"""
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
with torch.no_grad():
output_ids = model.generate(
input_ids=token_ids.to(model.device),
max_new_tokens=200,
do_sample=True,
temperature=0.5,
pad_token_id=tokenizer.pad_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
output = tokenizer.decode(output_ids.tolist()[0])
print(output)