--- language: - ja - en license: - llama3.3 - gemma library_name: transformers base_model: - tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.5 tags: - llama3 - sft - japanese - aituber - roleplay - chat pipeline_tag: text-generation --- # ArrowCanaria-Llama-8B-SFT-v0.1 ## モデル概要 **ArrowCanaria-Llama-8B-SFT-v0.1** は、AItuber(AI VTuber)向けに雑談性能を重視して設計された日本語特化の8Bパラメータ言語モデルです。 多くの日本語LLMは翻訳調の硬い文体や、定型的なテンプレート応答に陥りがちです。本モデルは「AItuberとして視聴者と自然に雑談できるモデル」を目指し、**雑談・ロールプレイ(RP)・推論・日本語の自然さ**を高い水準で獲得することを目標に開発されました。テンプレート的・機械的な応答ではなく、**自然な日本語で人間らしく回答できること**が最大の特徴です。 本モデルは `tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.5` をベースに、高品質な日本語合成小説データセットによる継続事前学習(CPT)でドメイン知識を拡張した後、Chat Vectorマージで対話能力を復元し、さらに17.5万件超の合成データセットによる3フェーズのカリキュラムSFTを実施して構築されています。独自のデータ生成フレームワーク **SDG_LOOM** によって作成された高品質なデータと、EQ(感情知性)を優先する段階的な学習率設計により、従来のモデルよりも効率的かつ効果的なトレーニングを実現しています。 ### 想定ユースケース - **AItuber / AI VTuber**: 配信中のリスナーとの雑談・コメント対応 - **チャットボット**: 自然な日本語での日常会話・悩み相談 - **ロールプレイ**: キャラクターを演じた対話・創作支援 - **汎用アシスタント**: 知識応答・推論・ツール呼び出しを含む幅広いタスク ### 主な特徴 - 🗣️ **自然な日本語応答** — 定型文や翻訳調を排した、人間らしい対話。相談・共感・傾聴といった感情的な応答にも対応し、会話相手に寄り添った回答を生成する - 💬 **高い雑談性能** — 日常会話・相談・共感的応答に強く、AItuberとしてリスナーと自然にコミュニケーションできる対話能力を持つ - 🎭 **RP・キャラクター対話** — 一貫した人格・感情表現を持ったロールプレイ対話が可能。キャラクターの感情の揺れや対話の駆け引きを表現できる - 🧠 **推論力** — 論理的思考・数学的推論の基礎を保持。高難度推論データで学習しており、複雑な質問にも対応可能 - 🔧 **Tool Use / RAG** — Function Calling・検索拡張生成にも対応。日本語・英語両方でのツール呼び出しや、与えられたコンテキストに基づく正確な回答が可能 - ✍️ **クリエイティブ表現** — 文学的な比喩・暗喩・情景描写など、豊かな日本語表現力を持つ ### モデル仕様 | 項目 | 詳細 | |---|---| | **モデル名** | `DataPilot/ArrowCanaria-Llama-8B-SFT-v0.1` | | **ベースモデル** | `tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.5` | | **アーキテクチャ** | Llama 3.1 (Transformer decoder-only) | | **パラメータ数** | 8B | | **学習データ量** | 175,000件超(JP 70.9% / EN 29.1%) | | **コンテキスト長** | 4,096 tokens | | **精度** | BF16 | | **ライセンス** | Llama 3.1 Community License + Gemma Terms of Use License | --- ## 推論方法 ### 🤗 Transformers ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "DataPilot/ArrowCanaria-Llama-8B-SFT-v0.1" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="bfloat16", device_map="auto", ) messages = [ {"role": "system", "content": "あなたは親しみやすいAIアシスタントです。自然な日本語で会話してください。"}, {"role": "user", "content": "最近ちょっと疲れてるんだよね。何かリフレッシュできる方法ない?"}, ] input_ids = tokenizer.apply_chat_template( messages, add_generation_prompt=True, return_tensors="pt", ).to(model.device) outputs = model.generate( input_ids, max_new_tokens=512, temperature=0.7, top_p=0.9, repetition_penalty=1.05, do_sample=True, ) response = tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True) print(response) ``` ### ⚡ vLLM ```bash # vLLM サーバーの起動 vllm serve DataPilot/ArrowCanaria-Llama-8B-SFT-v0.1 \ --dtype bfloat16 \ --max-model-len 4096 \ --host 0.0.0.0 \ --port 8000 ``` ```bash # リクエスト例(curl) curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "DataPilot/ArrowCanaria-Llama-8B-SFT-v0.1", "messages": [ {"role": "system", "content": "あなたは親しみやすいAIアシスタントです。自然な日本語で会話してください。"}, {"role": "user", "content": "最近ちょっと疲れてるんだよね。何かリフレッシュできる方法ない?"} ], "temperature": 0.7, "max_tokens": 512 }' ``` --- ## データ概要 ### SDG_LOOM による高品質データ生成 本モデルの学習データは、独自の合成データ生成フレームワーク **[SDG_LOOM](https://github.com/foxn2000/sdg_loom)** を活用して作成されています。SDG_LOOM は、高品質な合成データを効率的に生成するためのパイプラインであり、データの品質管理・フィルタリングを体系的に行うことで、学習に最適なデータセットを構築します。 ### データ構成 合計 **175,000件超** の合成データセットで学習を行いました。 | 言語 | 件数 | 比率 | |---|---|---| | 日本語 | 124,000件 | 70.9% | | 英語 | 51,000件 | 29.1% | | **合計** | **175,000件超** | **100%** | ### タスク別内訳 | カテゴリ | 内容 | 言語 | |---|---|---| | **知識応答** | シングルターン・マルチターンの知識QA | 🇯🇵 JP | | **雑談・相談** | 日常会話・悩み相談・共感的応答(EQの中核) | 🇯🇵 JP | | **Tool Use** | Function Calling(日本語/英語)・エージェント行動 | 🇯🇵🇬🇧 JP/EN | | **RAG** | 検索拡張生成(コンテキスト参照→質問応答) | 🇬🇧 EN | | **推論** | 高難度推論・数学的思考 | 🇬🇧 EN | | **RP** | ロールプレイ対話・キャラクター感情表現 | 🇯🇵 JP | | **AItuber RP** | 配信者↔リスナー対話・即興的なキャラクター応答 | 🇯🇵 JP | | **クリエイティブ** | 文学的表現力(比喩・暗喩・描写) | 🇯🇵 JP | --- ## 学習概要 ### モデル作成パイプライン 本モデルは以下の3段階で構築されています: ``` 1. CPT(Continual Pre-Training) tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.5 + 10k フィルタリング済み高品質日本語合成小説データセット ↓ 2. Chat Vector マージ(Mergekit) CPTモデルに元モデルの Chat Vector をマージし、 対話能力を復元 ↓ 3. SFT(Supervised Fine-Tuning) 175,000件超の合成データセットで LoRA による 3フェーズカリキュラム学習 ``` ### SFT 学習設計 #### カリキュラム学習(3フェーズ構成) SFT は「声→能力→人格」の順序で段階的に学習する **カリキュラム学習** を採用しています。 ``` Phase 1: 基盤構築 ──▶ Phase 2: 能力拡張 ──▶ Phase 3: 個性統合 65,000件 63,000件 47,000件 ``` | フェーズ | データ件数 | 目的 | 学習率 | |---|---|---|---| | **Phase 1: 基盤構築** | 65,000件 | 日本語 EQ・知識応答・推論力の原型を確立 | `1e-4` | | **Phase 2: 能力拡張** | 63,000件 | Tool Use / RAG / エージェント能力の獲得 | `3e-5` | | **Phase 3: 個性統合** | 47,000件 | EQ・キャラクター性・対話人格の統合 | `5e-5` | #### EQ優先の学習率設計 ``` P1 (1e-4) >> P3 (5e-5) > P2 (3e-5) ``` - **Phase 1 (`1e-4`)**: 日本語EQ・知識応答の基盤を強く刻み込む - **Phase 2 (`3e-5`)**: Tool/RAG は補助的能力のため控えめに学習し、Phase 1 の文体を最大限保護 - **Phase 3 (`5e-5`)**: 個性統合は EQ の中核目標のため Phase 2 より積極的に学習。ただし Phase 1 の基盤を上書きしない範囲に留める #### 壊滅的忘却の防止 各フェーズでは **リプレイバッファ** を導入し、前フェーズのデータの一部を再混合することで壊滅的忘却を防止しています。 #### 主な学習パラメータ | パラメータ | 値 | |---|---| | **LoRA rank (r)** | 32 | | **LoRA alpha** | 64 | | **LoRA target modules** | `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` | | **LoRA dropout** | 0.0(Unsloth 高速パッチ適用のため) | | **最大シーケンス長** | 4,096 tokens | | **実効バッチサイズ** | 16(batch=2 × grad_accum=8) | | **Optimizer** | AdamW (torch fused) | | **精度** | BF16 | | **Packing** | 有効(GPU 利用率最大化) | | **Loss** | NLL(標準 Negative Log-Likelihood) | | **Warmup ratio** | 0.05(Phase 1/2)/ 0.10(Phase 3) | | **Epochs** | 1.0(全フェーズ共通、packing により 1 エポックで十分) | | **学習フレームワーク** | Unsloth + TRL `SFTTrainer` | #### Phase 3 の工夫 Phase 3 では RP・クリエイティブという **スタイル転移力の強いデータ** を扱うため、以下の工夫を施しています: - **Warmup ratio を 0.10 に倍増**(Phase 1/2 は 0.05):学習初期の急激なパラメータ変動を抑制し、Phase 1/2 で蓄積した能力を保護 - **学習率を Phase 1 の半分(5e-5)に設定**:スタイル転移の強度を適度に抑制しつつ、Phase 2 より積極的に個性を学習 --- ## 謝辞 - 質の高い日本語モデルを作成してくれたSwallowチームに感謝します。 - [tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.5](https://huggingface.co/tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.5) - 高品質なベースモデルを作成してくれたMetaのLlamaチームに感謝します。 - [Meta Llama](https://www.llama.com) - 高効率な学習フレームワークを作成してくださったUnslothに感謝します。 - [Unsloth](https://github.com/unslothai/unsloth) - そのほか、高品質なデータを作成する際にDeepSeek-V3.2とkimi K2.5を使用しました。[DeepSeekチーム](https://www.deepseek.com)と[Kimiチーム](https://www.moonshot.ai)に感謝します。 Built by Kimi