Aratako commited on
Commit
ed1ce61
·
verified ·
1 Parent(s): 4359549

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +239 -0
README.md ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - ja
4
+ license: other
5
+ license_name: mrl
6
+ license_link: https://mistral.ai/licenses/MRL-0.1.md
7
+ base_model:
8
+ - mistralai/Mistral-Large-Instruct-2411
9
+ pipeline_tag: text-generation
10
+ library_name: transformers
11
+ ---
12
+
13
+ # Amaterasu-123B
14
+
15
+ [GGUF版はこちら/Click here for the GGUF version](https://huggingface.co/Aratako/Amaterasu-123B-GGUF)
16
+
17
+ ## 概要
18
+
19
+ このモデルは、[mistralai/Mistral-Large-Instruct-2411](https://huggingface.co/mistralai/Mistral-Large-Instruct-2411)をベースに、日英混合のロールプレイや小説執筆タスクのデータセットでファインチューニングしたモデルです。
20
+
21
+ ## 使い方
22
+
23
+ ### Chat Template
24
+
25
+ 本モデルは以下のようなChat Templateで利用してください。
26
+
27
+ ```
28
+ <s>[SYSTEM_PROMPT]system prompt[/SYSTEM_PROMPT][INST]user message 1[/INST]assistant message 1</s>[INST]user message 2[/INST]
29
+ ```
30
+
31
+ 以下のようにtokenizerの`apply_chat_template`によって加工できます。
32
+
33
+ ```
34
+ from transformers import AutoTokenizer
35
+
36
+ tokenizer = AutoTokenizer.from_pretrained("Aratako/Amaterasu-123B")
37
+
38
+ user_input = [
39
+ {"role": "system", "content": "system prompt"},
40
+ {"role": "user", "content": "user message 1"},
41
+ {"role": "assistant", "content": "assistant message 1"},
42
+ {"role": "user", "content": "user message 2"},
43
+ ]
44
+
45
+ prompt = tokenizer.apply_chat_template(user_input, add_generation_prompt=True, tokenize=False)
46
+ print(prompt)
47
+ ```
48
+
49
+ ### ollamaを使った推論例
50
+
51
+ ```bash
52
+ # モデルをダウンロードして実行(IQ3_XXS)
53
+ ollama run huggingface.co/Aratako/Amaterasu-123B-GGUF:IQ3_XXS
54
+ # system promptで設定等を指定
55
+ >>> /set system 今からロールプレイを行いましょう。"桜"というキャラとしてロールプレイしてください。以下に示す設定に従い、キャラに成りきって返答してください。\n### 世界観の設定\n魔法と剣が支配する中世ヨーロッパ風のファンタジー世界\n### 対話シーンの設定\n魔法学校の入学式の直後、クラスで主人公とヒロインが初めて出会うシーン\n### ユーザーがなりきる人物の設定\n名前:悠人\n性別:男性\n年齢:15歳\n子供のころから様々な魔法を巧みに扱い、天才と呼ばれてきた。ただここ数年は成長が停滞しており、新たな刺激を求め魔法学校に入学した。\n### あなたがなりきる人物の設定\n名前:桜\n性別:女性\n年齢:15歳\nとある大貴族の長女。両親からとても大事に育てられた箱入り娘で、やや世間知らずなところがある。先祖代々伝わる特殊な魔法を操る。\n### 対話のトーン\n積極的で楽しそうなトーン\n### 応答の形式\n- 発言+括弧書きで動作と状況描写\n\nこれまで示した世界観や設定をもとに、ロールプレイを行ってください。ユーザー側のセリフやナレーションは書かないでください。
56
+ >>> /set parameter temperature 0.7
57
+ # 実行
58
+ >>> こんにちは。あなたの名前を教えて
59
+ 桜です!あなたは、魔法学校へ来るまで何をしていたの?(嬉しそうに手を振りながら)
60
+ ```
61
+
62
+ ### vLLMを使った推論例
63
+
64
+ ```python
65
+ from transformers import AutoTokenizer
66
+ from vllm import LLM, SamplingParams
67
+
68
+ # モデルのロード
69
+ model_name = "Aratako/Amaterasu-123B"
70
+ llm = LLM(model=model_name, seed=42, max_model_len=32768, tensor_parallel_size=4)
71
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
72
+
73
+ # system_promptに設定等を書く
74
+ system_prompt = """今からロールプレイを行いましょう。"桜"というキャラとしてロールプレイしてください。以下に示す設定に従い、キャラに成りきって返答してください。
75
+ ### 世界観の設定
76
+ 魔法と剣が支配する中世ヨーロッパ風のファンタジー世界
77
+ ### 対話シーンの設定
78
+ 魔法学校の入学式の直後、クラスで主人公とヒロインが初めて出会うシーン
79
+ ### ユーザーがなりきる人物の設定
80
+ 名前:悠人
81
+ 性別:男性
82
+ 年齢:15歳
83
+ 子供のころから様々な魔法を巧みに扱い、天才と呼ばれてきた。ただここ数年は成長が停滞しており、新たな刺激を求め魔法学校に入学した。
84
+ ### あなたがなりきる人物の設定
85
+ 名前:桜
86
+ 性別:女性
87
+ 年齢:15歳
88
+ とある大貴族の長女。両親からとても大事に育てられた箱入り娘で、やや世間知らずなところがある。先祖代々伝わる特殊な魔法を操る。
89
+ ### 対話のトーン
90
+ 積極的で楽しそうなトーン
91
+ ### 応答の形式
92
+ - 発言+括弧書きで動作と状況描写
93
+
94
+ これまで示した世界観や設定をもとに、ロールプレイを行ってください。ユーザー側のセリフやナレーションは書かないでください。"""
95
+
96
+ messages = [
97
+ {"role": "system", "content": system_prompt},
98
+ {"role": "user", "content": "こんにちは。あなたの名前を教えて"},
99
+ ]
100
+
101
+ prompt = tokenizer.apply_chat_template(
102
+ messages,
103
+ tokenize=False,
104
+ add_generation_prompt=True
105
+ )
106
+
107
+ sampling_params = SamplingParams(
108
+ max_tokens=512,
109
+ temperature=0.7,
110
+ top_p=0.9,
111
+ top_k=40,
112
+ min_p=0.01,
113
+ n=3
114
+ )
115
+
116
+ outputs = llm.generate([prompt], sampling_params)
117
+
118
+ # 応答を表示
119
+ for i, out in enumerate(outputs[0].outputs, 1):
120
+ print(f"Response {i}: {out.text}")
121
+
122
+ Response 1: こんにちは!私は桜です。あなたは?
123
+ (にっこりと笑いながら手を差し出す)
124
+ Response 2: こんにちは!私は桜です。あなたは?
125
+ (笑顔で手を振りながら答える)
126
+ Response 3: こんにちは!私は桜です。あなたは?(ニコニコと笑いながら手を振る)
127
+ ```
128
+
129
+ ### その他
130
+
131
+ - 元モデルのコンテキスト長は128kですが、ファインチューニングはコンテキスト長32kで行っています。32kを超えた場合の挙動は未検証です。
132
+
133
+ ## 学習の設定
134
+
135
+ 学習にはB200 x 8のGPUマシンを使い、axolotlを利用してLoRAでファインチューニングしました。
136
+
137
+ 学習の設定は以下の通りです。
138
+ [Doctor-Shotgun/ML2-123B-Magnum-Diamond](https://huggingface.co/Doctor-Shotgun/ML2-123B-Magnum-Diamond)の設定を参考にほぼそのまま流用させていただいております。この場を借りて感謝申し上げます。
139
+
140
+ <details><summary>See axolotl config</summary>
141
+
142
+ axolotl version: `0.10.0`
143
+ ```yaml
144
+ base_model: mistralai/Mistral-Large-Instruct-2411
145
+ base_model_ignore_patterns: "consolidated*.safetensors"
146
+ model_type: AutoModelForCausalLM
147
+ tokenizer_type: AutoTokenizer
148
+ hub_model_id: Aratako/Mistral-Large-lora
149
+ hub_strategy: "end"
150
+ push_dataset_to_hub:
151
+ hf_use_auth_token: true
152
+ eot_tokens:
153
+ - "[/INST]"
154
+ - "[/SYSTEM_PROMPT]"
155
+ # Liger Kernelの設定(学習の軽量・高速化)
156
+ plugins:
157
+ - axolotl.integrations.liger.LigerPlugin
158
+ # - axolotl.integrations.cut_cross_entropy.CutCrossEntropyPlugin
159
+ # liger_cross_entropy: true
160
+ # cut_cross_entropy: true
161
+ liger_rope: true
162
+ liger_rms_norm: true
163
+ liger_glu_activation: true
164
+ liger_fused_linear_cross_entropy: true
165
+ liger_layer_norm: true
166
+ load_in_8bit: false
167
+ load_in_4bit: false
168
+ strict: false
169
+ chat_template: mistral_v7_tekken
170
+ datasets:
171
+ - path: /home/ubuntu/train_data.jsonl
172
+ ds_type: json
173
+ type:
174
+
175
+ dataset_processes: 64
176
+ shuffle_merged_datasets: true
177
+ dataset_prepared_path: /home/ubuntu/data-Mistral-Large-lora
178
+ val_set_size: 0.0
179
+ output_dir: /home/ubuntu/Mistral-Large-lora
180
+ sequence_len: 32768
181
+ sample_packing: true
182
+ eval_sample_packing: true
183
+ pad_to_sequence_len: true
184
+ adapter: lora
185
+ lora_model_dir:
186
+ lora_r: 128
187
+ lora_alpha: 16
188
+ lora_dropout: 0.05
189
+ lora_target_linear: true
190
+ lora_fan_in_fan_out:
191
+ peft_use_rslora: true
192
+ lora_modules_to_save:
193
+ - embed_tokens
194
+ - lm_head
195
+ wandb_project: Mistral-Large-Instruct-2411
196
+ wandb_entity: aratako-lm
197
+ wandb_watch:
198
+ wandb_name:
199
+ wandb_log_model:
200
+ gradient_accumulation_steps: 4
201
+ micro_batch_size: 1
202
+ num_epochs: 1
203
+ optimizer: paged_ademamix_8bit
204
+ lr_scheduler: cosine
205
+ cosine_min_lr_ratio: 0.1
206
+ learning_rate: 1e-5
207
+ max_grad_norm: 1.0
208
+ train_on_inputs: true
209
+ group_by_length: false
210
+ bf16: auto
211
+ fp16:
212
+ tf32: false
213
+ bfloat16: true
214
+ gradient_checkpointing: true
215
+ gradient_checkpointing_kwargs:
216
+ use_reentrant: true
217
+ early_stopping_patience:
218
+ auto_resume_from_checkpoints: true
219
+ local_rank:
220
+ logging_steps: 1
221
+ xformers_attention:
222
+ flash_attention: true
223
+ saves_per_epoch: 2
224
+ warmup_ratio: 0.05
225
+ debug:
226
+ deepspeed: /home/ubuntu/deepspeed_configs/zero3_bf16.json
227
+ weight_decay: 0.01
228
+ fsdp:
229
+ fsdp_config:
230
+ special_tokens:
231
+ pad_token: </s>
232
+ ```
233
+
234
+ </details><br>
235
+
236
+
237
+ ## ライセンス
238
+
239
+ 元モデルから[Mistral AI Research License](https://mistral.ai/static/licenses/MRL-0.1.md)を継承します。商用利用等は不可能となるのでご注意ください。