File size: 7,163 Bytes
06442c1 f4832c3 99221bd f4832c3 99221bd f4832c3 e1c9884 99221bd f4832c3 99221bd f4832c3 99221bd f4832c3 99221bd f4832c3 99221bd f4832c3 99221bd f4832c3 99221bd f4832c3 99221bd 16db186 99221bd f4832c3 99221bd f4832c3 99221bd 4a18628 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
---
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により対話用に調整されています。
より詳細な情報については[ブログ記事](https://zenn.dev/matsuolab/articles/377f7ae8b1169e)を参照してください。
[GENIAC 松尾研 LLM開発プロジェクト](https://weblab.t.u-tokyo.ac.jp/geniac_llm/)のもと、一般公募により集まった有志の参加者(企業所属、学生、研究者等)が開発を実施しました。
## 量子化モデル
[AWQ 4bit量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-AWQ) [GPTQ 4bit量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-4bit) [GPTQ 8bit量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-8bit) [GGUF量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GGUF)*
*GGUF版は性能低下が発生している可能性があり、非推奨
## 使い方
[こちらの記事](https://zenn.dev/matsuolab/articles/a3b42ddbf5d121)にTanuki-8x8Bおよびその量子化モデルの各種推論方法についてまとめていますので、ご確認ください。
以下に一部の推論方法を解説します。
本モデルの推論にはflash attentionが必須です。以下のようにインストールしてください。
```bash
pip install --no-build-isolation flash_attn
```
以下はHuggingFace Transformersを使った推論のサンプルコードです。
```python
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を使って推論をする場合は独自アーキテクチャへの対応が必要となります。[こちら](https://github.com/team-hatakeyama-phase2/vllm)から改変済みvLLMを以下のようにビルドしてご利用ください。
```bash
git clone https://github.com/team-hatakeyama-phase2/vllm.git
cd vllm
LD_LIBRARY_PATH="" MAX_JOBS=16 pip install -e .
```
以下はvLLMを使った推論のサンプルコードです。
```python
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を模したシステムを作成し、人手によるブラインドテストを実施しました。
(詳細は[こちら](https://zenn.dev/matsuolab/articles/95fa297ef12a14))
[全評価データ(約2000件)](https://huggingface.co/datasets/team-hatakeyama-phase2/LLMChat)を公開しています。
![image/png](https://cdn-uploads.huggingface.co/production/uploads/6348501e50fe0799927c3667/RzPOQfETYD9_AFEjVkwCX.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 |
## 開発メンバー
畠山 歓 [リーダー]、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) |