Taka2024 commited on
Commit
cb653d5
·
verified ·
1 Parent(s): 769310c

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +125 -10
README.md CHANGED
@@ -1,21 +1,136 @@
1
  ---
2
- base_model: Taka2024/gemma-2-27b-it-2_lora_merged
3
  tags:
4
- - text-generation-inference
5
- - transformers
6
  - unsloth
7
- - gemma2
8
- - trl
9
- license: apache-2.0
10
- language:
11
- - en
 
 
 
12
  ---
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  # Uploaded model
15
 
16
  - **Developed by:** Taka2024
17
- - **License:** apache-2.0
18
- - **Finetuned from model :** Taka2024/gemma-2-27b-it-2_lora_merged
19
 
20
  This gemma2 model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
21
 
 
1
  ---
2
+ library_name: transformers
3
  tags:
 
 
4
  - unsloth
5
+ license: gemma
6
+ datasets:
7
+ - llm-jp/magpie-sft-v1.0
8
+ - DeL-TaiseiOzaki/Tengentoppa-sft-qwen2.5-32b-reasoning-100k
9
+ - weblab-GENIAC/Open-Platypus-Japanese-masked
10
+ - weblab-GENIAC/aya-ja-nemotron-dpo-masked
11
+ base_model:
12
+ - google/gemma-2-27b
13
  ---
14
 
15
+ # 学習データセット
16
+ gemma-2利用にあたり、ライセンス制約上の懸念のあるデータセットは利用していない。
17
+
18
+ ## SFT使用データ
19
+ - [llm-jp/magpie-sft-v1.0](https://huggingface.co/datasets/llm-jp/magpie-sft-v1.0) (apache-2.0)
20
+ - [DeL-TaiseiOzaki/Tengentoppa-sft-qwen2.5-32b-reasoning-100k](https://huggingface.co/datasets/DeL-TaiseiOzaki/Tengentoppa-sft-qwen2.5-32b-reasoning-100k) (apache-2.0)
21
+ - [weblab-GENIAC/Open-Platypus-Japanese-masked](https://huggingface.co/datasets/weblab-GENIAC/Open-Platypus-Japanese-masked) (MIT)
22
+ - MITライセンスのデータのみ抽出して使用。
23
+ ## DPO使用データ
24
+ - [weblab-GENIAC/aya-ja-nemotron-dpo-masked](https://huggingface.co/datasets/weblab-GENIAC/aya-ja-nemotron-dpo-masked) (apache-2.0)
25
+
26
+
27
+ # モデル作成手順
28
+ - ベースモデル(google/gemma-2-27b)にSFT使用データ(サンプリング)を使って、Loraアダプタを作成(Taka2024/gemma-2-27b-it-2_lora)
29
+ - ベースモデルとLoraアダプタをマージ(Taka2024/gemma-2-27b-it-2_lora_merged)
30
+ - マージしたモデルにDPO使用データ(サンプリング)を使って、DPOアダプタを作成(Taka2024/gemma-2-27b-dpo-1)
31
+
32
+
33
+ # 推論手順
34
+ unsloth版のサンプルコード(Google Colab L4使用)をベースとし、推論は1時間以内で終了するようになっている。
35
+
36
+ ```
37
+ # 必要なライブラリをインストール
38
+ %%capture
39
+ !pip install unsloth
40
+ !pip uninstall unsloth -y && pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
41
+ !pip install -U torch
42
+ !pip install -U peft
43
+ ```
44
+
45
+ ```
46
+ # 必要なライブラリを読み込み
47
+ from unsloth import FastLanguageModel
48
+ from peft import PeftModel
49
+ import torch
50
+ import json
51
+ from tqdm import tqdm
52
+ import re
53
+ ```
54
+
55
+ ```
56
+ HF_TOKEN = "" #必要なトークンを設定してください
57
+ ```
58
+
59
+ ```
60
+ !huggingface-cli login --token $HF_TOKEN
61
+ ```
62
+
63
+ ```
64
+ # unslothのFastLanguageModelで元のモデルをロード。
65
+ dtype = None # Noneにしておけば自動で設定
66
+ load_in_4bit = True # 今回は27Bモデルを扱うためTrue
67
+
68
+ model_id = "Taka2024/gemma-2-27b-it-2_lora_merged"
69
+ adapter_dpo_id = "Taka2024/gemma-2-27b-dpo-1"
70
+
71
+ model, tokenizer = FastLanguageModel.from_pretrained(
72
+ model_name=model_id,
73
+ dtype=dtype,
74
+ load_in_4bit=load_in_4bit,
75
+ trust_remote_code=True,
76
+ )
77
+ ```
78
+
79
+ ```
80
+ # 元のモデルにDPOのアダプタを統合。
81
+ model = PeftModel.from_pretrained(model, adapter_dpo_id, token = HF_TOKEN)
82
+ ```
83
+
84
+ ```
85
+ # タスクとなるデータの読み込み。
86
+ # 事前にデータをアップロードしてください。
87
+ datasets = []
88
+ with open("/content/elyza-tasks-100-TV_0.jsonl", "r") as f:
89
+ item = ""
90
+ for line in f:
91
+ line = line.strip()
92
+ item += line
93
+ if item.endswith("}"):
94
+ datasets.append(json.loads(item))
95
+ item = ""
96
+ ```
97
+
98
+ ```
99
+ # モデルを用いてタスクの推論。
100
+ # 推論するためにモデルのモードを変更
101
+ FastLanguageModel.for_inference(model)
102
+
103
+ results = []
104
+ for dt in tqdm(datasets):
105
+ input = dt["input"]
106
+
107
+ prompt = f"""### あなたは日本人のための優秀なコンシェルジュです。指示には必ずわかりやすい日本語で回答してください。\n### 指示\n{input}\n### 回答\n"""
108
+
109
+ inputs = tokenizer([prompt], return_tensors = "pt").to(model.device)
110
+
111
+ outputs = model.generate(**inputs, max_new_tokens = 512, use_cache = True, do_sample=False, repetition_penalty=1.2)
112
+ prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).split('\n### 回答')[-1]
113
+
114
+ results.append({"task_id": dt["task_id"], "input": input, "output": prediction})
115
+ ```
116
+
117
+ ```
118
+ # 結果をjsonlで保存。
119
+
120
+ # ここではadapter_idを元にファイル名を決定しているが、ファイル名は任意で問題なし。
121
+ json_file_id = re.sub(".*/", "", "gemma-2-27b-dpo-1")
122
+ with open(f"/content/{json_file_id}_output_IF.jsonl", 'w', encoding='utf-8') as f:
123
+ for result in results:
124
+ json.dump(result, f, ensure_ascii=False)
125
+ f.write('\n')
126
+ ```
127
+
128
+
129
  # Uploaded model
130
 
131
  - **Developed by:** Taka2024
132
+ - **License:** gemma
133
+ - **Finetuned from model :** google/gemma-2-27b
134
 
135
  This gemma2 model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
136