Holy-fox commited on
Commit
328f2b7
·
verified ·
1 Parent(s): 6d041eb

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +214 -3
README.md CHANGED
@@ -1,3 +1,214 @@
1
- ---
2
- license: gemma
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: gemma
3
+ ---
4
+
5
+ # DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2 モデルカード
6
+
7
+ **モデルリポジトリ**: [DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2](https://huggingface.co/DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2)
8
+ **ベースモデル**: [google/gemma-3-4b-it](https://huggingface.co/google/gemma-3-4b-it)
9
+
10
+ ## Overview
11
+
12
+ `DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2`は、Googleによって開発された強力なマルチモーダルモデルである`google/gemma-3-4b-it`をベースとしてファインチューニングされた指示応答モデルです。
13
+
14
+ このモデルは、[Unsloth](https://github.com/unslothai/unsloth)ライブラリと高品質な合成データセットを用いてトレーニングされました。主な目的は、ベースモデルの持つ能力を維持・強化しつつ、特に**プロンプト(指示)への追従能力**と**マルチターン対話における性能**を向上させることです。
15
+
16
+ Gemma 3ファミリーと同様に、テキスト入力と画像入力の両方に対応し、テキスト出力を生成することができます。
17
+
18
+ ## How to use
19
+
20
+ このモデルを使用するには、Transformersライブラリ (バージョン 4.50.0 以降) が必要です。
21
+
22
+ ```bash
23
+ pip install -U transformers accelerate Pillow requests torch
24
+ ```
25
+
26
+ また、vLLMを使用する場合は、vLLMをインストールしてください。
27
+
28
+ ```bash
29
+ pip install vllm
30
+ ```
31
+
32
+ ### vLLMを使用した推論
33
+
34
+ vLLMを使用することで、高速な推論が可能です。
35
+
36
+ ```python
37
+ from vllm import LLM, SamplingParams
38
+
39
+ # モデルID
40
+ model_id = "DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2"
41
+
42
+ # サンプリングパラメータ (必要に応じて調整)
43
+ sampling_params = SamplingParams(temperature=0.1, top_p=0.9, max_tokens=512)
44
+
45
+ # LLMインスタンスの作成
46
+ llm = LLM(model=model_id, trust_remote_code=True) # Gemma 3にはリモートコード実行が必要な場合があります
47
+
48
+ # プロンプトの準備 (Gemma 3のチャットテンプレート形式を推奨)
49
+ # vLLMは通常、tokenizerからチャットテンプレートを自動適用します
50
+ # 手動で適用する場合は tokenizer.apply_chat_template を使用します
51
+ messages = [
52
+ {"role": "system", "content": "あなたは親切なAIアシスタントです。"},
53
+ {"role": "user", "content": "日本の首都はどこですか?その都市の有名な観光地を3つ教えてください。"}
54
+ ]
55
+
56
+ # Hugging Face tokenizerを使ってチャットテンプレートを適用
57
+ from transformers import AutoTokenizer
58
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
59
+ prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
60
+
61
+ # 推論の実行
62
+ outputs = llm.generate(prompt, sampling_params)
63
+
64
+ # 結果の表示
65
+ for output in outputs:
66
+ prompt_disp = output.prompt
67
+ generated_text = output.outputs[0].text
68
+ print(f"Prompt: {prompt_disp!r}")
69
+ print(f"Generated text: {generated_text!r}")
70
+
71
+ ```
72
+
73
+ ### Transformersを使用した推論 (テキストのみ)
74
+
75
+ テキスト入力のみで推論を行う場合の基本的なコードです。System PromptとUser Promptを使用します。
76
+
77
+ ```python
78
+ import torch
79
+ from transformers import AutoTokenizer, AutoModelForCausalLM
80
+
81
+ # モデルID
82
+ model_id = "DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2"
83
+
84
+ # トークナイザーとモデルのロード
85
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
86
+ # Gemma 3 4B はメモリ要求が高いため、bf16を使用し、可能であれば複数GPUに分散します
87
+ model = AutoModelForCausalLM.from_pretrained(
88
+ model_id,
89
+ device_map="auto",
90
+ torch_dtype=torch.bfloat16,
91
+ trust_remote_code=True # Gemma 3にはリモートコード実行が必要な場合があります
92
+ )
93
+ model.eval()
94
+
95
+ # チャットメッセージの準備
96
+ messages = [
97
+ {"role": "system", "content": "あなたは知識豊富で、質問に対して詳細に答えるAIアシスタントです。"},
98
+ {"role": "user", "content": "機械学習とは何か、初心者にもわかるように簡単に説明してください。"}
99
+ ]
100
+
101
+ # チャットテンプレートを適用し、テンソルに変換
102
+ inputs = tokenizer.apply_chat_template(
103
+ messages,
104
+ add_generation_prompt=True,
105
+ tokenize=True,
106
+ return_tensors="pt"
107
+ ).to(model.device)
108
+
109
+ # 入力トークン数の取得 (生成部分のみを後で抽出するため)
110
+ input_len = inputs.shape[-1]
111
+
112
+ # 推論の実行
113
+ with torch.inference_mode():
114
+ outputs = model.generate(
115
+ inputs,
116
+ max_new_tokens=512, # 最大生成トークン数
117
+ do_sample=True, # サンプリングを使用する場合
118
+ temperature=0.7, # 生成の多様性
119
+ top_p=0.9 # Top-pサンプリング
120
+ )
121
+
122
+ # 生成されたトークンのみをデコード
123
+ generated_tokens = outputs[0][input_len:]
124
+ response = tokenizer.decode(generated_tokens, skip_special_tokens=True)
125
+
126
+ print("--- モデルの応答 ---")
127
+ print(response)
128
+ ```
129
+
130
+ ### Transformersを使用した推論 (画像 + テキスト)
131
+
132
+ 画像とテキストを組み合わせて入力し、推論を行う場合のコードです。
133
+
134
+ ```python
135
+ import torch
136
+ from transformers import AutoProcessor, Gemma3ForConditionalGeneration # または AutoModelForCausalLM
137
+ from PIL import Image
138
+ import requests
139
+
140
+ # モデルID
141
+ model_id = "DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2"
142
+
143
+ # プロセッサーとモデルのロード
144
+ processor = AutoProcessor.from_pretrained(model_id)
145
+ # Gemma 3 4B はメモリ要求が高いため、bf16を使用し、可能であれば複数GPUに分散します
146
+ model = Gemma3ForConditionalGeneration.from_pretrained( # Gemma 3の推奨クラス
147
+ model_id,
148
+ device_map="auto",
149
+ torch_dtype=torch.bfloat16,
150
+ trust_remote_code=True # Gemma 3にはリモートコード実行が必要な場合があります
151
+ )
152
+ model.eval()
153
+
154
+ # 画像の準備 (例: URLからロード)
155
+ image_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"
156
+ image = Image.open(requests.get(image_url, stream=True).raw)
157
+
158
+ # チャットメッセージの準備 (画像とテキストを含む)
159
+ messages = [
160
+ {
161
+ "role": "system",
162
+ "content": [{"type": "text", "text": "あなたは画像を詳細に説明するAIアシスタントです。"}]
163
+ },
164
+ {
165
+ "role": "user",
166
+ "content": [
167
+ {"type": "image", "image": image}, # PILイメージオブジェクトを渡す
168
+ {"type": "text", "text": "この画像に写っている昆虫は何ですか?花についても説明してください。"}
169
+ ]
170
+ }
171
+ ]
172
+
173
+ # チャットテンプレートを適用し、テンソルに変換
174
+ # apply_chat_templateは画像も処理できます
175
+ inputs = processor.apply_chat_template(
176
+ messages,
177
+ add_generation_prompt=True,
178
+ tokenize=True,
179
+ return_dict=True, # 画像処理のために辞書形式で返すのが確実
180
+ return_tensors="pt"
181
+ ).to(model.device)
182
+
183
+ # 入力トークン数の取得 (生成部分のみを後で抽出するため)
184
+ # inputsが辞書の場合、'input_ids'キーを使用
185
+ input_len = inputs['input_ids'].shape[-1]
186
+
187
+ # 推論の実行
188
+ with torch.inference_mode():
189
+ outputs = model.generate(
190
+ **inputs, # 辞書を展開して渡す
191
+ max_new_tokens=512, # 最大生成トークン数
192
+ do_sample=False # 画像説明などではFalseの方が安定することがあります
193
+ )
194
+
195
+ # 生成されたトークンのみをデコード
196
+ # outputsはテンソルで返ってくる
197
+ generated_tokens = outputs[0][input_len:]
198
+ response = processor.decode(generated_tokens, skip_special_tokens=True)
199
+
200
+ print("--- モデルの応答 ---")
201
+ print(response)
202
+ ```
203
+
204
+ **注意点:**
205
+
206
+ * Gemma 3モデルは比較的大きなメモリを必要とします。特に4Bモデルでは、十分なVRAMを持つGPUが必要です。`torch_dtype=torch.bfloat16` や `device_map="auto"` を使用してメモリ使用量を削減・分散することを推奨します。
207
+ * Gemma 3モデルはリモートコードの実行を要求する場合があります (`trust_remote_code=True`)。信頼できるソースからモデルをロードしていることを確認してください。
208
+ * プロンプトの形式はモデルの性能に大きく影響します。ベースモデルである `google/gemma-3-4b-it` のチャットテンプレートに従うことを推奨します。上記コード例では `apply_chat_template` がこれを自動的に処理します。
209
+
210
+ ## License
211
+
212
+ このモデルは、ベースモデルである `google/gemma-3-4b-it` のライセンスに基づいています。詳細については、[Gemma Terms of Use](https://ai.google.dev/gemma/terms) を参照してください。
213
+
214
+ 派生モデルである `DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2` の利用にあたっては、ベースモデルのライセンス条件、特に利用制限([Gemma Prohibited Use Policy](https://ai.google.dev/gemma/prohibited_use_policy))に従う必要があります。