harataku commited on
Commit
c74d043
1 Parent(s): 63dc270

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +109 -24
README.md CHANGED
@@ -11,9 +11,6 @@ library_name: transformers
11
  ---
12
  # llm-jp-3-13b-finetune 使用方法ガイド
13
 
14
- ## モデル概要
15
- このモデルは、llm-jp/llm-jp-3-13bをベースにLoRA (Parameter-Efficient Fine-Tuning)で学習された公開モデルです。
16
-
17
  ## 必要な環境
18
  - Python 3.10以上
19
  - CUDA対応GPU(推奨)
@@ -27,7 +24,6 @@ library_name: transformers
27
  ## インストール手順
28
 
29
  ```bash
30
- # 必要なライブラリのインストール
31
  pip install -U pip
32
  pip install -U transformers
33
  pip install -U bitsandbytes
@@ -83,7 +79,7 @@ model = AutoModelForCausalLM.from_pretrained(
83
  quantization_config=bnb_config,
84
  device_map="auto"
85
  )
86
- tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
87
 
88
  # 推論用の関数
89
  def generate_response(input_text):
@@ -114,6 +110,114 @@ response = generate_response(input_text)
114
  print(response)
115
  ```
116
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  ## パラメータの説明
118
 
119
  ### モデル生成時のパラメータ
@@ -151,22 +255,3 @@ model = AutoModelForCausalLM.from_pretrained(
151
  )
152
  ```
153
 
154
- ## 注意事項
155
- - 4bit量子化を使用しているため、メモリ使用量は効率的ですが、推論速度とのトレードオフがあります
156
- - GPU環境での実行を推奨します
157
- - 長い入力テキストの場合は、`max_new_tokens`の値を適宜調整してください
158
-
159
- ## ライセンス
160
- 本モデルはベースモデル(llm-jp/llm-jp-3-13b)のライセンスを継承しています。また、学習データとして使用したichikara-instructionデータセットのライセンス(CC-BY-NC-SA)も適用されます。
161
-
162
- ## 引用
163
- 学習データについて:
164
- ```
165
- 関根聡, 安藤まや, 後藤美知子, 鈴木久美, 河原大輔, 井之上直也, 乾健太郎.
166
- ichikara-instruction: LLMのための日本語インストラクション���ータの構築.
167
- 言語処理学会第30回年次大会(2024)
168
- ```
169
-
170
- ## 更新履歴
171
- - 2024/03/XX: モデルをpublic設定に変更
172
- - 2024/03/XX: READMEを更新し、より簡単な使用方法を追加
 
11
  ---
12
  # llm-jp-3-13b-finetune 使用方法ガイド
13
 
 
 
 
14
  ## 必要な環境
15
  - Python 3.10以上
16
  - CUDA対応GPU(推奨)
 
24
  ## インストール手順
25
 
26
  ```bash
 
27
  pip install -U pip
28
  pip install -U transformers
29
  pip install -U bitsandbytes
 
79
  quantization_config=bnb_config,
80
  device_map="auto"
81
  )
82
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
83
 
84
  # 推論用の関数
85
  def generate_response(input_text):
 
110
  print(response)
111
  ```
112
 
113
+ ## タスク出力用JSONLファイルの生成方法
114
+
115
+ ### コード実装
116
+
117
+ ```python
118
+ import json
119
+ import torch
120
+ from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
121
+
122
+ def generate_jsonl_outputs(model, tokenizer, input_jsonl_path, output_jsonl_path):
123
+ # 入力データの読み込み
124
+ datasets = []
125
+ with open(input_jsonl_path, "r") as f:
126
+ item = ""
127
+ for line in f:
128
+ line = line.strip()
129
+ item += line
130
+ if item.endswith("}"):
131
+ datasets.append(json.loads(item))
132
+ item = ""
133
+
134
+ # 出力の生成
135
+ results = []
136
+ for data in datasets:
137
+ input_text = data["input"]
138
+
139
+ prompt = f"""### 指示
140
+ {input_text}
141
+ ### 回答
142
+ """
143
+
144
+ tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
145
+ attention_mask = torch.ones_like(tokenized_input)
146
+
147
+ with torch.no_grad():
148
+ outputs = model.generate(
149
+ tokenized_input,
150
+ attention_mask=attention_mask,
151
+ max_new_tokens=100,
152
+ do_sample=False,
153
+ repetition_penalty=1.2,
154
+ pad_token_id=tokenizer.eos_token_id
155
+ )[0]
156
+
157
+ output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
158
+ results.append({
159
+ "task_id": data["task_id"],
160
+ "input": input_text,
161
+ "output": output
162
+ })
163
+
164
+ # 結果をJSONL形式で保存
165
+ with open(output_jsonl_path, 'w', encoding='utf-8') as f:
166
+ for result in results:
167
+ json.dump(result, f, ensure_ascii=False)
168
+ f.write('\n')
169
+
170
+ # 使用例
171
+ def main():
172
+ # 入出力パスの設定
173
+ input_path = "path/to/input.jsonl"
174
+ output_path = "path/to/output.jsonl"
175
+
176
+ # モデルとトークナイザーの準備
177
+ model_id = "harataku/llm-jp-3-13b-finetune"
178
+ bnb_config = BitsAndBytesConfig(
179
+ load_in_4bit=True,
180
+ bnb_4bit_quant_type="nf4",
181
+ bnb_4bit_compute_dtype=torch.bfloat16,
182
+ )
183
+
184
+ model = AutoModelForCausalLM.from_pretrained(
185
+ model_id,
186
+ quantization_config=bnb_config,
187
+ device_map="auto"
188
+ )
189
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
190
+
191
+ # JSONL出力の生成
192
+ generate_jsonl_outputs(model, tokenizer, input_path, output_path)
193
+
194
+ if __name__ == "__main__":
195
+ main()
196
+ ```
197
+
198
+ ### 出力形式
199
+
200
+ 生成されるJSONLファイルの各行は以下の形式になります:
201
+
202
+ ```json
203
+ {"task_id": "タスクID", "input": "入力テキスト", "output": "モデルの出力"}
204
+ ```
205
+
206
+ ### 使用手順
207
+
208
+ 1. 必要なライブラリのインストール
209
+ ```bash
210
+ pip install transformers torch accelerate bitsandbytes
211
+ ```
212
+
213
+ 2. 入力JSONLファイルの準備
214
+ - 各行が有効なJSON形式である必要があります
215
+ - 各JSONには少なくとも "task_id" と "input" フィールドが必要です
216
+
217
+ 3. スクリプトの実行
218
+ - 適切なパスを設定してスクリプトを実行します
219
+ - 出力されたJSONLファイルを確認します
220
+
221
  ## パラメータの説明
222
 
223
  ### モデル生成時のパラメータ
 
255
  )
256
  ```
257