Files changed (1) hide show
  1. README.md +101 -98
README.md CHANGED
@@ -1,98 +1,101 @@
1
- ---
2
- language:
3
- - ja
4
- - en
5
- tags:
6
- - llm
7
- - question answering
8
- - text generation
9
- ---
10
-
11
- LLM-JP-3-13B ファインチューニングモデル
12
-
13
- # モデル詳細
14
-
15
- ベースモデル: llm-jp/llm-jp-3-13b
16
- アダプターモデル 1: nmczzi/llm-jp-3-13b-finetune-4
17
- アダプターモデル 2: nmczzi/llm-jp-3-13b-finetune-4-dpo-2
18
- アダプターモデル 3: nmczzi/llm-jp-3-13b-finetune-4-dpo-2-plus
19
- 量子化: 4ビット量子化 (QLoRA)
20
-
21
-
22
- # インストール
23
- 必要なパッケージのインストール:
24
-
25
- pip install -U bitsandbytes transformers accelerate datasets peft
26
-
27
- # 使用方法
28
- 以下は、モデルの基本的な使用例です:
29
- ```
30
- from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
31
- from peft import PeftModel, LoraConfig
32
- import torch
33
-
34
- HF_TOKEN = "有効なHuggingFaceトークン"
35
-
36
- from google.colab import userdata
37
- HF_TOKEN = userdata.get('HF_API_KEY')
38
-
39
- base_model_id = "llm-jp/llm-jp-3-13b"
40
- adapter_id_1 = "nmczzi/llm-jp-3-13b-finetune-4"
41
- adapter_id_2 = "nmczzi/llm-jp-3-13b-finetune-4-dpo-2"
42
- adapter_id_3 = "nmczzi/llm-jp-3-13b-finetune-4-dpo-2-plus"
43
-
44
- ### QLoRA設定
45
- bnb_config = BitsAndBytesConfig(
46
- load_in_4bit=True,
47
- bnb_4bit_quant_type="nf4",
48
- bnb_4bit_compute_dtype=torch.bfloat16,
49
- )
50
-
51
- ### モデルの読み込み
52
- model = AutoModelForCausalLM.from_pretrained(
53
- base_model_id,
54
- quantization_config=bnb_config,
55
- device_map="auto",
56
- token=HF_TOKEN
57
- )
58
-
59
- ### トークナイザーの読み込み
60
- tokenizer = AutoTokenizer.from_pretrained(base_model_id, trust_remote_code=True, token=HF_TOKEN)
61
-
62
- ### ファインチューニングされたアダプターの読み込み
63
- model = PeftModel.from_pretrained(model, adapter_id_1, token=HF_TOKEN)
64
- model = PeftModel.from_pretrained(model, adapter_id_2, token=HF_TOKEN)
65
- model = PeftModel.from_pretrained(model, adapter_id_3, token=HF_TOKEN)
66
-
67
- ### 生成用の関数を定義
68
- def generate_response(input):
69
- prompt = f"""### 指示
70
- {input}
71
- \#\#\# 回答
72
- """
73
-
74
- tokenized_input = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
75
- attention_mask = torch.ones_like(tokenized_input)
76
-
77
- with torch.no_grad():
78
- outputs = model.generate(
79
- tokenized_input,
80
- attention_mask=attention_mask,
81
- max_new_tokens=100,
82
- do_sample=False,
83
- repetition_penalty=1.2,
84
- pad_token_id=tokenizer.eos_token_id
85
- )[0]
86
- output = tokenizer.decode(outputs[tokenized_input.size(1):], skip_special_tokens=True)
87
- return output
88
-
89
- ### 使用例
90
- input = "### 指示\nあなたの指示をここに入力してください\n### 回答\n"
91
- inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
92
-
93
- with torch.no_grad():
94
- outputs = model.generate(**inputs, max_new_tokens=100, do_sample=False, repetition_penalty=1.2)
95
-
96
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
97
- print(response)
98
- ```
 
 
 
 
1
+ ---
2
+ language:
3
+ - ja
4
+ - en
5
+ tags:
6
+ - llm
7
+ - question answering
8
+ - text generation
9
+ ---
10
+
11
+ LLM-JP-3-13B ファインチューニングモデル
12
+
13
+ # モデル詳細
14
+
15
+ ベースモデル: llm-jp/llm-jp-3-13b
16
+ アダプターモデル 1: nmczzi/llm-jp-3-13b-finetune-4
17
+ アダプターモデル 2: nmczzi/llm-jp-3-13b-finetune-4-dpo-2
18
+ アダプターモデル 3: nmczzi/llm-jp-3-13b-finetune-4-dpo-2-plus
19
+ 量子化: 4ビット量子化 (QLoRA)
20
+
21
+
22
+ # インストール
23
+ 必要なパッケージのインストール:
24
+
25
+ pip install -U bitsandbytes transformers accelerate datasets peft
26
+
27
+ # 使用方法
28
+ 以下は、モデルの基本的な使用例です:
29
+ ```
30
+ from transformers import (
31
+ AutoModelForCausalLM,
32
+ AutoTokenizer,
33
+ BitsAndBytesConfig,
34
+ )
35
+ from peft import PeftModel
36
+ import torch
37
+
38
+ HF_TOKEN = "AVAILABLE YOUR-HF-TOKEN"
39
+
40
+ model_name = "llm-jp/llm-jp-3-13b"
41
+ adapter_name = "r-yuba62/llm-jp-3-13b-finetune"
42
+
43
+ bnb_config = BitsAndBytesConfig(
44
+ load_in_4bit=True,
45
+ bnb_4bit_quant_type="nf4",
46
+ bnb_4bit_compute_dtype=torch.bfloat16,
47
+ )
48
+
49
+ # モデルとトークナイザーをロード
50
+ model = AutoModelForCausalLM.from_pretrained(
51
+ model_name,
52
+ quantization_config=bnb_config,
53
+ device_map="auto",
54
+ token=HF_TOKEN
55
+ )
56
+
57
+ tokenizer = AutoTokenizer.from_pretrained(
58
+ model_name,
59
+ trust_remote_code=True,
60
+ token=HF_TOKEN
61
+ )
62
+
63
+ # PEFTアダプターを適用
64
+ model = PeftModel.from_pretrained(model, adapter_name, token=HF_TOKEN)
65
+
66
+ def get_response(input_text):
67
+ prompt = f"""### 指示
68
+ {input_text}
69
+ ### 回答:
70
+ """
71
+ # トークナイズ処理
72
+ tokenized_input = tokenizer(
73
+ prompt,
74
+ return_tensors="pt",
75
+ padding=True,
76
+ truncation=True,
77
+ max_length=512
78
+ )
79
+
80
+ input_ids = tokenized_input["input_ids"].to(model.device)
81
+ attention_mask = tokenized_input["attention_mask"].to(model.device)
82
+
83
+ # モデル生成
84
+ with torch.no_grad():
85
+ outputs = model.generate(
86
+ input_ids=input_ids,
87
+ attention_mask=attention_mask,
88
+ max_new_tokens=512,
89
+ do_sample=False,
90
+ repetition_penalty=1.2,
91
+ pad_token_id=tokenizer.eos_token_id
92
+ )
93
+
94
+ # 出力のデコード
95
+ output_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
96
+ return output_text
97
+
98
+ input_text = "xxxを教えてください"
99
+ response = get_response(input_text)
100
+ print(response)
101
+ ```