takerun commited on
Commit
6f66f32
·
verified ·
1 Parent(s): a9501da

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +0 -77
README.md CHANGED
@@ -80,27 +80,6 @@ from trl import SFTTrainer
80
  HF_TOKEN = "your token"
81
 
82
  # モデルを読み込み。
83
- # llm-jp-3 1.8B, 3.7B, 13Bのsnapshotをダウンロード済みでmodelsディレクトリに格納してあります。
84
- # base_model_idの値はomnicampusの環境におけるモデルのパスを表しており、それ以外の環境で実行する場合は変更の必要があります。
85
- # その他のモデルは取得に承諾が必要なため、各自でダウンロードお願いします。
86
- base_model_id = "models/models--llm-jp--llm-jp-3-13b/snapshots/cd3823f4c1fcbb0ad2e2af46036ab1b0ca13192a" #Fine-Tuningするベースモデル
87
- # omnicampus以外の環境をご利用の方は以下をご利用ください。
88
- # base_model_id = "llm-jp/llm-jp-3-13b"
89
- new_model_id = "llm-jp-3-13b-finetune" #Fine-Tuningしたモデルにつけたい名前
90
-
91
- """
92
- bnb_config: 量子化の設定
93
-
94
- - load_in_4bit:
95
- - 4bit量子化形式でモデルをロード
96
-
97
- - bnb_4bit_quant_type:
98
- - 量子化の形式を指定
99
-
100
- - bnb_4bit_compute_dtype:
101
- - 量子化された重みを用いて計算する際のデータ型
102
-
103
- """
104
 
105
  bnb_config = BitsAndBytesConfig(
106
  load_in_4bit=True,
@@ -108,26 +87,6 @@ bnb_config = BitsAndBytesConfig(
108
  bnb_4bit_compute_dtype=torch.bfloat16,
109
  )
110
 
111
- """
112
- model: モデル
113
-
114
- - base_model:
115
- - 読み込むベースモデル (事前に定義したもの)
116
-
117
- - quantization_config:
118
- - bnb_configで設定した量子化設定
119
-
120
- - device_map:
121
- - モデルを割り当てるデバイス (CPU/GPU) "auto"で自動に割り当てられます。
122
-
123
- tokenizer: トークナイザー
124
-
125
- - base_model:
126
- - 読み込むベースモデル (事前に定義したもの)
127
-
128
- - trust_remote_code:
129
- - リモートコードの実行を許可 (カスタムモデルなど)
130
- """
131
  model = AutoModelForCausalLM.from_pretrained(
132
  base_model_id,
133
  quantization_config=bnb_config,
@@ -136,10 +95,6 @@ model = AutoModelForCausalLM.from_pretrained(
136
 
137
  tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True)
138
 
139
- """
140
- find_all_linear_names: モデル内の4bit量子化線形層を探します。
141
- """
142
-
143
  def find_all_linear_names(model):
144
  cls = bnb.nn.Linear4bit # 4bit量子化線形層クラスを指定
145
  lora_module_names = set() # ここに取得した線形層を保持します。
@@ -158,29 +113,6 @@ def find_all_linear_names(model):
158
 
159
  modules = find_all_linear_names(model)
160
 
161
- """
162
- peft_config: PEFTの構成設定
163
-
164
- - r
165
- - LoRA のランク (4, 8, 16 ,32...)
166
- - 増やすほど学習が捗るが, 過学習のリスクも高まるので注意
167
-
168
- - lora_alpha
169
- - LoRAのスケーリング係数
170
-
171
- - lora_dropout
172
- - ドロップアウト率(過学習を防ぐための割合)
173
-
174
- - bias
175
- - バイアス項の扱い ("none"の場合、LoRAはバイアスを学習しない)
176
-
177
- - task_type
178
- - タスクタイプ
179
-
180
- - target_modules
181
- - LoRAを適用するターゲットモジュール (前のコードで特定した層)
182
- """
183
-
184
  peft_config = LoraConfig(
185
  r=16,
186
  lora_alpha=32,
@@ -376,7 +308,6 @@ trainer.train() # トレーニングを実行
376
 
377
  ```
378
  # タスクとなるデータの読み込み。
379
- # omnicampusの開発環境では、左にタスクのjsonlをドラッグアンドドロップしてから実行。
380
  import json
381
  datasets = []
382
  with open("./elyza-tasks-100-TV_0.jsonl", "r") as f:
@@ -420,10 +351,6 @@ for data in tqdm(datasets):
420
  output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
421
 
422
  results.append({"task_id": data["task_id"], "input": input, "output": output})
423
-
424
- # こちらで生成されたjsolを提出してください。
425
- # 本コードではinputとeval_aspectも含んでいますが、なくても問題ありません。
426
- # 必須なのはtask_idとoutputとなります。
427
  ```
428
 
429
  - adapter_idをベースにしたファイル名でJSONL形式の出力ファイルを保存します。
@@ -435,8 +362,4 @@ with open(f"./{jsonl_id}-outputs.jsonl", 'w', encoding='utf-8') as f:
435
  for result in results:
436
  json.dump(result, f, ensure_ascii=False) # ensure_ascii=False for handling non-ASCII characters
437
  f.write('\n')
438
-
439
- # モデルとトークナイザーをHugging Faceにアップロード
440
- model.push_to_hub(new_model_id, token=HF_TOKEN, private=True) # Online saving
441
- tokenizer.push_to_hub(new_model_id, token=HF_TOKEN, private=True) # Online saving
442
  ```
 
80
  HF_TOKEN = "your token"
81
 
82
  # モデルを読み込み。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
 
84
  bnb_config = BitsAndBytesConfig(
85
  load_in_4bit=True,
 
87
  bnb_4bit_compute_dtype=torch.bfloat16,
88
  )
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  model = AutoModelForCausalLM.from_pretrained(
91
  base_model_id,
92
  quantization_config=bnb_config,
 
95
 
96
  tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True)
97
 
 
 
 
 
98
  def find_all_linear_names(model):
99
  cls = bnb.nn.Linear4bit # 4bit量子化線形層クラスを指定
100
  lora_module_names = set() # ここに取得した線形層を保持します。
 
113
 
114
  modules = find_all_linear_names(model)
115
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  peft_config = LoraConfig(
117
  r=16,
118
  lora_alpha=32,
 
308
 
309
  ```
310
  # タスクとなるデータの読み込み。
 
311
  import json
312
  datasets = []
313
  with open("./elyza-tasks-100-TV_0.jsonl", "r") as f:
 
351
  output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
352
 
353
  results.append({"task_id": data["task_id"], "input": input, "output": output})
 
 
 
 
354
  ```
355
 
356
  - adapter_idをベースにしたファイル名でJSONL形式の出力ファイルを保存します。
 
362
  for result in results:
363
  json.dump(result, f, ensure_ascii=False) # ensure_ascii=False for handling non-ASCII characters
364
  f.write('\n')
 
 
 
 
365
  ```