kanhatakeyama
commited on
Commit
•
99221bd
1
Parent(s):
e373f44
Update README.md
Browse files
README.md
CHANGED
@@ -9,22 +9,25 @@ tags:
|
|
9 |
---
|
10 |
|
11 |
# Tanuki-8x8B-dpo-v1.0
|
12 |
-
## (READMEを更新中です)
|
13 |
|
14 |
## モデルについて
|
15 |
-
|
16 |
-
Tanuki-8x8B
|
17 |
-
|
|
|
|
|
18 |
|
19 |
## 量子化モデル
|
20 |
-
|
21 |
-
- [GPTQ 4bit量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-4bit)
|
22 |
-
- [GPTQ 8bit量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-8bit)
|
23 |
-
- [GGUF量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GGUF)*
|
24 |
-
|
25 |
*GGUF版は性能低下が発生している可能性があり、非推奨
|
26 |
|
27 |
## 使い方
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
```python
|
30 |
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
|
@@ -35,7 +38,7 @@ streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
|
|
35 |
|
36 |
messages = [
|
37 |
{"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
|
38 |
-
{"role": "user", "content": "
|
39 |
]
|
40 |
|
41 |
input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
|
@@ -45,25 +48,86 @@ output_ids = model.generate(input_ids,
|
|
45 |
streamer=streamer)
|
46 |
```
|
47 |
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
50 |
```
|
51 |
-
<s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
|
52 |
|
53 |
-
|
54 |
-
AIによって私たちの暮らしはどのように変わりますか?
|
55 |
|
56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
```
|
59 |
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
## ベンチマーク
|
63 |
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
66 |
|
|
|
|
|
67 |
| | Tanuki-8B-dpo-v1.0 | Tanuki-8x8B-dpo-v1.0 |
|
68 |
| ---- | ---- | ---- |
|
69 |
| 平均スコア | 7.24 | 7.96 |
|
@@ -76,10 +140,5 @@ GPT-4による評価 (Nejumi Leaderboard Neo、gpt-4-0613、平均スコア算
|
|
76 |
| stem | 9.35 | 9.40 |
|
77 |
| writing | 9.05 | 8.85 |
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
**人手評価**
|
83 |
-
Chatbot Arena的なシステムを使った人手によるブラインドテストの結果
|
84 |
-
![image/png](https://cdn-uploads.huggingface.co/production/uploads/6348501e50fe0799927c3667/RzPOQfETYD9_AFEjVkwCX.png)
|
85 |
-
|
|
|
9 |
---
|
10 |
|
11 |
# Tanuki-8x8B-dpo-v1.0
|
|
|
12 |
|
13 |
## モデルについて
|
14 |
+
Tanuki-8x8Bは、フルスクラッチで約1.7Tトークン事前学習を行った8x8Bパラメータ(総パラメータ約47B、アクティブパラメータ約13B)の大規模言語モデルです。
|
15 |
+
Tanuki-8x8B-dpo-v1.0は、SFTおよびDPOにより対話用に調整されています。
|
16 |
+
より詳細な情報については[ブログ記事](https://zenn.dev/matsuolab/articles/377f7ae8b1169e)を参照してください。
|
17 |
+
|
18 |
+
[GENIAC 松尾研 LLM開発プロジェクト](https://weblab.t.u-tokyo.ac.jp/geniac_llm/)のもと、一般公募により集まった有志の参加者(企業所属、学生、研究者等)が開発を実施しました。
|
19 |
|
20 |
## 量子化モデル
|
21 |
+
[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)*
|
|
|
|
|
|
|
|
|
22 |
*GGUF版は性能低下が発生している可能性があり、非推奨
|
23 |
|
24 |
## 使い方
|
25 |
+
本モデルの推論にはflash attentionが必須です。以下のようにインストールしてください。
|
26 |
+
```bash
|
27 |
+
pip install --no-build-isolation flash_attn
|
28 |
+
```
|
29 |
+
|
30 |
+
以下はHuggingFace Transformersを使った推論のサンプルコードです。
|
31 |
|
32 |
```python
|
33 |
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
|
|
|
38 |
|
39 |
messages = [
|
40 |
{"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
|
41 |
+
{"role": "user", "content": "たぬきに純粋理性批判は理解できますか?"}
|
42 |
]
|
43 |
|
44 |
input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
|
|
|
48 |
streamer=streamer)
|
49 |
```
|
50 |
|
51 |
+
また、vLLMを使って推論をする場合は独自アーキテクチャへの対応が必要となります。[こちら](https://github.com/team-hatakeyama-phase2/vllm)から改変済みvLLMを以下のようにビルドしてご利用ください。
|
52 |
+
|
53 |
+
```bash
|
54 |
+
git clone https://github.com/team-hatakeyama-phase2/vllm.git
|
55 |
+
cd vllm
|
56 |
+
LD_LIBRARY_PATH="" MAX_JOBS=16 pip install -e .
|
57 |
```
|
|
|
58 |
|
59 |
+
以下はvLLMを使った推論のサンプルコードです。
|
|
|
60 |
|
61 |
+
```python
|
62 |
+
from time import time
|
63 |
+
from vllm import LLM, SamplingParams
|
64 |
+
|
65 |
+
model_name = "weblab-GENIAC/Tanuki-8x8B-dpo-v1.0"
|
66 |
+
# model_name = "team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-AWQ"
|
67 |
+
# model_name = "team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-4bit"
|
68 |
+
# model_name = "team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-GPTQ-8bit"
|
69 |
+
|
70 |
+
# vllm = LLM(model_name, trust_remote_code=True, tensor_parallel_size=1) # 1GPUの場合
|
71 |
+
vllm = LLM(model_name, trust_remote_code=True, tensor_parallel_size=2) # 2GPUを使う場合
|
72 |
+
tokenizer = vllm.get_tokenizer()
|
73 |
|
74 |
+
messages = [
|
75 |
+
{"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
|
76 |
+
{"role": "user", "content": "たぬきに純粋理性批判は理解できますか?"}
|
77 |
+
]
|
78 |
+
|
79 |
+
inputs_text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
|
80 |
+
print(f"inputs_text: {inputs_text}")
|
81 |
+
|
82 |
+
sampling_params = SamplingParams(temperature=0.0, max_tokens=1024, seed=1, repetition_penalty=1.1)
|
83 |
+
start = time()
|
84 |
+
outputs = vllm.generate(inputs_text, sampling_params=sampling_params, use_tqdm=False)
|
85 |
+
end = time()
|
86 |
+
outputs_text = outputs[0].outputs[0].text
|
87 |
+
print(f"outputs_text: {outputs_text}")
|
88 |
+
print(f"Elapsed time: {(end - start):.4f} sec.")
|
89 |
```
|
90 |
|
91 |
+
## プロンプト形式
|
92 |
+
Tanuki-8x8B-dpo-v1.0は日本語版Alpacaのプロンプト形式を利用します。
|
93 |
+
- シングルターン
|
94 |
+
```
|
95 |
+
<s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
|
96 |
+
|
97 |
+
### 指示:
|
98 |
+
たぬきに純粋理性批判は理解できますか?
|
99 |
+
|
100 |
+
### 応答:
|
101 |
+
|
102 |
+
```
|
103 |
+
- マルチターン
|
104 |
+
```
|
105 |
+
<s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
|
106 |
+
|
107 |
+
### 指示:
|
108 |
+
{1ターン目の入力}
|
109 |
+
|
110 |
+
### 応答:
|
111 |
+
{1ターン目の応答}</s>
|
112 |
+
|
113 |
+
### 指示:
|
114 |
+
{2ターン目の入力}
|
115 |
+
|
116 |
+
### 応答:
|
117 |
+
```
|
118 |
+
|
119 |
+
なお、本モデルはデフォルトのシステムプロンプトである「以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。」以外を学習していないため、このシステムプロンプトの使用を推奨します。タスクの詳細はユーザープロンプトに記述してください。
|
120 |
|
121 |
## ベンチマーク
|
122 |
|
123 |
+
**人手評価**
|
124 |
+
Chatbot Arenaを模したシステムを作成し、人手によるブラインドテストを実施しました。
|
125 |
+
(詳細は[こちら](https://zenn.dev/matsuolab/articles/95fa297ef12a14))
|
126 |
+
評価結果(約2000件)を後日全て公開します。
|
127 |
+
![image/png](https://cdn-uploads.huggingface.co/production/uploads/6348501e50fe0799927c3667/RzPOQfETYD9_AFEjVkwCX.png)
|
128 |
|
129 |
+
**Japanese MT-Bench**
|
130 |
+
GPT-4による評価 (gpt-4-0613、平均スコア算出においてスコア-1は除外)
|
131 |
| | Tanuki-8B-dpo-v1.0 | Tanuki-8x8B-dpo-v1.0 |
|
132 |
| ---- | ---- | ---- |
|
133 |
| 平均スコア | 7.24 | 7.96 |
|
|
|
140 |
| stem | 9.35 | 9.40 |
|
141 |
| writing | 9.05 | 8.85 |
|
142 |
|
143 |
+
## 開発メンバー
|
144 |
+
畠山 歓、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
|
|
|
|
|
|
|
|
|
|