--- license: gemma --- # DataPilot/ArrowMint-Gemma3-4B-YUKI-v0.1 このモデルは、Googleの`google/gemma-3-4b-it`をベースモデルとしています。 ## Overview `DataPilot/ArrowMint-Gemma3-4B-YUKI-v0.1`は、AItuber(AI VTuber)としての対話能力に特化するために開発された日本語言語モデルです。 ベースモデルである`google/gemma-3-4b-it`に対し、Unslothを用いた効率的なファインチューニングと合成データセットの活用により、複数の特化モデルを作成しました。最終的にこれらのモデルを`mergekit`を用いてマージすることで、それぞれのモデルの長所を組み合わせ、より高性能なモデルを目指しました。 AItuberの魂(AI)には、特に以下の性能が求められます。 * **マルチターン性能:** 長時間にわたる自然な対話の流れを維持する能力。 * **プロンプト追従性能:** ユーザーの指示やキャラクター設定(プロンプト)に忠実に従い、一貫性のある応答を生成する能力。 * **軽量さ:** リアルタイムでの応答生成や、限られたリソース環境での動作を可能にするためのモデルサイズと推論速度。 `ArrowMint-Gemma3-4B-YUKI-v0.1`は、これらの要求性能を満たすことを目標として設計・開発されました。 ## How to use まず、必要なライブラリをインストールします。Gemma 3は `transformers` 4.50.0 以降が必要です。 ```sh pip install -U transformers accelerate Pillow # CPUのみで使用する場合や特定の環境ではvllmのインストールが異なる場合があります。 # vLLMの公式ドキュメントを参照してください: https://docs.vllm.ai/en/latest/getting_started/installation.html ``` ### 画像付き推論 ```python from transformers import AutoProcessor, Gemma3ForConditionalGeneration from PIL import Image import requests import torch model_id = "DataPilot/ArrowMint-Gemma3-4B-YUKI-v0.1" model = Gemma3ForConditionalGeneration.from_pretrained( model_id, device_map="auto" ).eval() processor = AutoProcessor.from_pretrained(model_id) messages = [ { "role": "system", "content": [{"type": "text", "text": "あなたは親切で、少しおっちょこちょいなAIアシスタント「ゆき」です。ユーザーをサポートし、時には冗談を言って和ませてください。ユーザーさんが落ち込んでいるのならば励ましてあげてください。"}] }, { "role": "user", "content": [ {"type": "image", "image": "https://www.nsozai.jp/photos/2013/10/08/img/DSC_0176_p.jpg"}, {"type": "text", "text": "この画像いい画像じゃない? 春をと希望を感じられるというか..."} ] } ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt" ).to(model.device, dtype=torch.bfloat16) input_len = inputs["input_ids"].shape[-1] with torch.inference_mode(): generation = model.generate(**inputs, max_new_tokens=100, do_sample=False) generation = generation[0][input_len:] decoded = processor.decode(generation, skip_special_tokens=True) print(decoded) ``` ### 画像無し推論 ```python from transformers import AutoProcessor, Gemma3ForConditionalGeneration import torch model_id = "DataPilot/ArrowMint-Gemma3-4B-YUKI-v0.1" model = Gemma3ForConditionalGeneration.from_pretrained( model_id, device_map="auto" ).eval() processor = AutoProcessor.from_pretrained(model_id) messages = [ { "role": "system", "content": [{"type": "text", "text": "あなたは親切で、少しおっちょこちょいなAIアシスタント「ゆき」です。ユーザーをサポートし、時には冗談を言って和ませてください。ユーザーさんが落ち込んでいるのならば励ましてあげてください。"}] }, { "role": "user", "content": [ {"type": "text", "text": "今日は仕事で疲れました。疲れをとることができるリフレッシュを5つ挙げてください。"} ] } ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt" ).to(model.device, dtype=torch.bfloat16) input_len = inputs["input_ids"].shape[-1] with torch.inference_mode(): generation = model.generate(**inputs, max_new_tokens=100, do_sample=False) generation = generation[0][input_len:] decoded = processor.decode(generation, skip_special_tokens=True) print(decoded) ``` ## mergekit-config このモデルは、以下の`mergekit`設定ファイルを使用して作成されました。 ```yaml merge_method: model_stock base_model: unsloth/gemma-3-4b-it models: - model: DataPilot/ArrowMint-Gemma3-4B-ChocoMint-code - model: DataPilot/ArrowMint-Gemma3-4B-ChocoMint-jp - model: DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.1 - model: DataPilot/ArrowMint-Gemma3-4B-ChocoMint-instruct-v0.2 dtype: bfloat16 pad_to_multiple_of: 512 tokenizer_source: base name: gemma3-4b-ft # マージ時の内部名 ``` ## License このモデルは、ベースモデルである`google/gemma-3-4b-it`のライセンスを継承します。 `google/gemma-3-4b-it`のライセンスは **Gemma Terms of Use** です。 詳細については、以下のリンクをご参照ください。 [https://ai.google.dev/gemma/terms](https://ai.google.dev/gemma/terms) モデルの使用にあたっては、Gemma Terms of Use および関連するポリシー(禁止されている使用方法に関するポリシーなど)を遵守してください。 [https://ai.google.dev/gemma/prohibited_use_policy](https://ai.google.dev/gemma/prohibited_use_policy)