kanhatakeyama's picture
Update README.md
99221bd verified
|
raw
history blame
6.85 kB
metadata
license: apache-2.0
language:
  - ja
  - en
library_name: transformers
tags:
  - japanese

Tanuki-8x8B-dpo-v1.0

モデルについて

Tanuki-8x8Bは、フルスクラッチで約1.7Tトークン事前学習を行った8x8Bパラメータ(総パラメータ約47B、アクティブパラメータ約13B)の大規模言語モデルです。
Tanuki-8x8B-dpo-v1.0は、SFTおよびDPOにより対話用に調整されています。
より詳細な情報についてはブログ記事を参照してください。

GENIAC 松尾研 LLM開発プロジェクトのもと、一般公募により集まった有志の参加者(企業所属、学生、研究者等)が開発を実施しました。

量子化モデル

AWQ 4bit量子化 GPTQ 4bit量子化 GPTQ 8bit量子化 GGUF量子化*
*GGUF版は性能低下が発生している可能性があり、非推奨

使い方

本モデルの推論にはflash attentionが必須です。以下のようにインストールしてください。

pip install --no-build-isolation flash_attn

以下はHuggingFace Transformersを使った推論のサンプルコードです。

from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

model = AutoModelForCausalLM.from_pretrained("weblab-GENIAC/Tanuki-8x8B-dpo-v1.0", device_map="auto", torch_dtype="auto", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("weblab-GENIAC/Tanuki-8x8B-dpo-v1.0")
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)

messages = [
    {"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
    {"role": "user", "content": "たぬきに純粋理性批判は理解できますか?"}
]

input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
output_ids = model.generate(input_ids,
                            max_new_tokens=1024,
                            temperature=0.5,
                            streamer=streamer)

また、vLLMを使って推論をする場合は独自アーキテクチャへの対応が必要となります。こちらから改変済みvLLMを以下のようにビルドしてご利用ください。

git clone https://github.com/team-hatakeyama-phase2/vllm.git
cd vllm
LD_LIBRARY_PATH="" MAX_JOBS=16 pip install -e .

以下はvLLMを使った推論のサンプルコードです。

from time import time
from vllm import LLM, SamplingParams

model_name = "weblab-GENIAC/Tanuki-8x8B-dpo-v1.0"
# model_name = "team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-AWQ"
# model_name = "team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-4bit"
# model_name = "team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-8bit"

# vllm = LLM(model_name, trust_remote_code=True, tensor_parallel_size=1)  # 1GPUの場合
vllm = LLM(model_name, trust_remote_code=True, tensor_parallel_size=2)  # 2GPUを使う場合
tokenizer = vllm.get_tokenizer()

messages = [
    {"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
    {"role": "user", "content": "たぬきに純粋理性批判は理解できますか?"}
]

inputs_text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
print(f"inputs_text: {inputs_text}")

sampling_params = SamplingParams(temperature=0.0, max_tokens=1024, seed=1, repetition_penalty=1.1)
start = time()
outputs = vllm.generate(inputs_text, sampling_params=sampling_params, use_tqdm=False)
end = time()
outputs_text = outputs[0].outputs[0].text
print(f"outputs_text: {outputs_text}")
print(f"Elapsed time: {(end - start):.4f} sec.")

プロンプト形式

Tanuki-8x8B-dpo-v1.0は日本語版Alpacaのプロンプト形式を利用します。

  • シングルターン
    <s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
    
    ### 指示:
    たぬきに純粋理性批判は理解できますか?
    
    ### 応答:
    
  • マルチターン
    <s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
    
    ### 指示:
    {1ターン目の入力}
    
    ### 応答:
    {1ターン目の応答}</s>
    
    ### 指示:
    {2ターン目の入力}
    
    ### 応答:
    

なお、本モデルはデフォルトのシステムプロンプトである「以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。」以外を学習していないため、このシステムプロンプトの使用を推奨します。タスクの詳細はユーザープロンプトに記述してください。

ベンチマーク

人手評価
Chatbot Arenaを模したシステムを作成し、人手によるブラインドテストを実施しました。 (詳細はこちら) 評価結果(約2000件)を後日全て公開します。 image/png

Japanese MT-Bench
GPT-4による評価 (gpt-4-0613、平均スコア算出においてスコア-1は除外)

Tanuki-8B-dpo-v1.0 Tanuki-8x8B-dpo-v1.0
平均スコア 7.24 7.96
coding 5.4 6.75
extraction 6.65 6.90
humanities 9.1 9.3
math 3.9 5.75
reasoning 5.75 7.35
roleplay 8.75 8.95
stem 9.35 9.40
writing 9.05 8.85

開発メンバー

畠山 歓、Rumi Nakagawa、takagi、Toshio Nishida、Hideaki Hayashi、p1atdev、Daichi Kohmoto、Nishijima、Chattso-GPT、西井康隆、Jie Zeng、加藤純、堀江吏将、Kazutaka Nishimae、Jinsei Shiraishi、川村 正春、山口 裕輝、Nishi、Esty、Minami Someya、林寛太 (Kanta Hayashi)、菊池満帆、岩田 兼太朗、、江國翔太、佐野敏幸、K. Nishizawa、Susumu Ota、Issei Fujimoto、永原恒治、hiroaki shioya、masaki okamura、y_morinaga、川村 正春、熊田匡仁、Mさん、asaoka_tadashi、Yuki Namiuchi、片上 舜、河越 淳、Issei Fujimoto、Yukie Kawano、Chihiro HIGUCHI、Ryota Mitsuhashi、Chihiro Arata、Atsushi Saito、Kunihiro Watanabe