kanhatakeyama commited on
Commit
99221bd
1 Parent(s): e373f44

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +85 -26
README.md CHANGED
@@ -9,22 +9,25 @@ tags:
9
  ---
10
 
11
  # Tanuki-8x8B-dpo-v1.0
12
- ## (READMEを更新中です)
13
 
14
  ## モデルについて
15
-
16
- Tanuki-8x8Bは、フルスクラッチでトークン事前学習された8x8Bパラメータ(総パラメータ約47B、アクティブパラメータ約13B)の大規模言語モデルです。
17
- Tanuki-8x8B-dpo-v1.0は、Tanuki-8x8BにSFTおよびDPOを適用し作成された対話用モデルです。
 
 
18
 
19
  ## 量子化モデル
20
- - [AWQ 4bit量子化](https://huggingface.co/team-hatakeyama-phase2/Tanuki-8x8B-dpo-v1.0-AWQ)
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": "AIによって私たちの暮らしはどのように変わりますか?"}
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
- Tanuki-8x8B-dpo-v1.0は日本語版Alpacaのプロンプトフォーマットを利用します。
 
 
 
 
50
  ```
51
- <s>以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
52
 
53
- ### 指示:
54
- AIによって私たちの暮らしはどのように変わりますか?
55
 
56
- ### 応答:
 
 
 
 
 
 
 
 
 
 
 
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  ```
59
 
60
- なお、本モデルはデフォルトのシステムプロンプトである`以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。`以外を学習していないため、このシステムプロンプトの使用を推奨します。タスクの詳細はユーザープロンプトに記述してください。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  ## ベンチマーク
63
 
64
- **Japanese MT-Bench**
65
- GPT-4による評価 (Nejumi Leaderboard Neo、gpt-4-0613、平均スコア算出においてスコア-1は除外)
 
 
 
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
- GPT-4oによる評価 (Nejumi Leaderboard 3)
80
- ![image/png](https://cdn-uploads.huggingface.co/production/uploads/6348501e50fe0799927c3667/TMl4VIoTyUzzdbj5PdVEi.png)
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