🚀 Tanuki-8x8B-dpo-v1.0
Tanuki-8x8B-dpo-v1.0は、大規模言語モデルであり、事前学習とSFT、DPOによる調整を行っています。このモデルは有志の参加者によって開発され、量子化モデルも提供されています。以下に、モデルの詳細や使い方、ベンチマーク結果などを紹介します。
🚀 クイックスタート
Tanuki-8x8B-dpo-v1.0をすぐに使い始めるには、以下の手順に従ってください。まず、flash attentionをインストールし、その後推論用のコードを実行します。
インストール
本モデルの推論には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"
vllm = LLM(model_name, trust_remote_code=True, tensor_parallel_size=2)
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は約1.7Tトークンで事前学習を行っています。
- 対話用調整:SFTおよびDPOにより対話用に調整されています。
- 量子化モデル提供:AWQ、GPTQ、GGUFの量子化モデルが利用可能です。
📦 インストール
本モデルの推論にはflash attentionが必須です。以下のコマンドでインストールしてください。
pip install --no-build-isolation flash_attn
vLLMを使って推論をする場合は、改変済みvLLMをビルドする必要があります。
git clone https://github.com/team-hatakeyama-phase2/vllm.git
cd vllm
LD_LIBRARY_PATH="" MAX_JOBS=16 pip install -e .
💻 使用例
基本的な使用法
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を使った推論のサンプルコードです。
from time import time
from vllm import LLM, SamplingParams
model_name = "weblab-GENIAC/Tanuki-8x8B-dpo-v1.0"
vllm = LLM(model_name, trust_remote_code=True, tensor_parallel_size=2)
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のプロンプト形式を利用します。
なお、本モデルはデフォルトのシステムプロンプトである「以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。」以外を学習していないため、このシステムプロンプトの使用を推奨します。タスクの詳細はユーザープロンプトに記述してください。
ベンチマーク
人手評価
Chatbot Arenaを模したシステムを作成し、人手によるブラインドテストを実施しました。
(詳細はこちら)
全評価データ(約2000件)を公開しています。

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 |
🔧 技術詳細
Tanuki-8x8Bは、フルスクラッチで約1.7Tトークン事前学習を行った8x8Bパラメータ(総パラメータ約47B、アクティブパラメータ約13B)の大規模言語モデルです。Tanuki-8x8B-dpo-v1.0は、SFTおよびDPOにより対話用に調整されています。
📄 ライセンス
本モデルはApache-2.0ライセンスのもとで提供されています。
開発メンバー
畠山 歓 [リーダー]、asaoka_tadashi、Atsushi Saito、Chattso-GPT、Chihiro Arata、Chihiro HIGUCHI、Daichi Kohmoto、Esty、Hideaki Hayashi、hiroaki shioya、Issei Fujimoto、Jie Zeng、Jinsei Shiraishi、K. Nishizawa、Kazutaka Nishimae、Kunihiro Watanabe、masaki okamura、Minami Someya、Mさん、Nishi、Nishijima、p1atdev、Rumi Nakagawa、Ryota Mitsuhashi、Susumu Ota、takagi、Toshio Nishida、y_morinaga、Yuki Namiuchi、Yukie Kawano、永原恒治、加藤純、河越 淳、岩田 兼太朗、菊池満帆、熊田匡仁、江國翔太、佐野敏幸、山口 裕輝、西井康隆、川村 正春、片上 舜、堀江吏将、林寛太 (Kanta Hayashi)